--- OpenCL/gengetinfo 2011/11/22 10:29:18 1.5 +++ OpenCL/gengetinfo 2012/04/21 19:53:29 1.10 @@ -14,6 +14,7 @@ profiling Event mem Memory image Image + gl_texture Image sampler Sampler program Program program_build Program @@ -78,7 +79,7 @@ rename "$file~", $file; } -for my $CLASS (qw(platform device context command_queue mem image sampler program program_build kernel kernel_work_group event profiling)) { +for my $CLASS (qw(platform device context command_queue mem image sampler program program_build kernel kernel_work_group event profiling gl_texture)) { open my $fh, ") { chomp; - my ($class, $name, $ctype) = split /,\s*/, $_, 3; + my ($class, $name, $ctype) = split /\s*,\s*/, $_, 3; next unless $class eq "cl_$CLASS\_info"; next if $name eq "CL_IMAGE_FORMAT"; # struct next if $name eq "CL_PROGRAM_BINARIES"; # needs multiple calls @@ -98,6 +99,7 @@ my $cbase = $class; $cbase =~ s/_(.)/\U$1/g; + $cbase =~ s/Gl(?=[A-Z])/GL/g; $cbase =~ s/^cl//; $cbase =~ s/Info$//; $cbase = "MemObject" if $cbase eq "Mem"; @@ -162,17 +164,17 @@ my ($XS1, $XS2); $XS1 = "void\n" - . "XXXNAMEXXX (OpenCL::$classmap{$real_class} this$extra_xs_args)\n"; + . "XXXNAMEXXX (OpenCL::$classmap{$real_class} self$extra_xs_args)\n"; $XS2 = " PPCODE:\n"; if ($dynamic) { $XS2 .= " size_t size;\n" - . " NEED_SUCCESS (Get${cbase}Info, (this$extra_args, ix, 0, 0, &size));\n" + . " NEED_SUCCESS (Get${cbase}Info, (self$extra_args, ix, 0, 0, &size));\n" . " $type->[0] *value = tmpbuf (size);\n" - . " NEED_SUCCESS (Get${cbase}Info, (this$extra_args, ix, size, value, 0));\n"; + . " NEED_SUCCESS (Get${cbase}Info, (self$extra_args, ix, size, value, 0));\n"; } else { $XS2 .= " $type->[0] value [1];\n" - . " NEED_SUCCESS (Get${cbase}Info, (this$extra_args, ix, sizeof (value), value, 0));\n"; + . " NEED_SUCCESS (Get${cbase}Info, (self$extra_args, ix, sizeof (value), value, 0));\n"; } if ($array && $nelem ne "1") { @@ -222,6 +224,8 @@ $XS .= join "", @$_; } + warn "patching class $CLASS\n"; + patch "OpenCL.xs", "#BEGIN:$CLASS" , "#END:$CLASS" , $XS; patch "OpenCL.pm", "=for gengetinfo begin $CLASS", "=for gengetinfo end $CLASS", $POD; }