3 use lib '../perlmods/';
7 use lib '../perlmods/';
8 use lib '../../../OpenSRF/src/perlmods/';
9 use OpenILS::Utils::Fieldmapper;
11 $map = $Fieldmapper::fieldmap unless ($@);
17 print "usage: $0 <source_file>\n";
21 warn "Generating fieldmapper-c code...\n";
24 print $ARGV[0] . "\n";
26 open(SOURCE, ">$ARGV[0]");
29 #include "fieldmapper_lookup.h"
32 char * fm_pton(char * class, int pos) {
33 if (class == NULL) return NULL;
37 for my $object (keys %$map) {
38 my $short_name= $map->{$object}->{hint};
40 else if (!strcmp(class, "$short_name")) {
43 for my $field (keys %{$map->{$object}->{fields}}) {
44 my $position = $map->{$object}->{fields}->{$field}->{position};
47 return strdup("$field");
55 return strdup("datum");
58 int isFieldmapper(char* class) {
59 if (class == NULL) return 0;
62 for my $object (keys %$map) {
63 my $short_name= $map->{$object}->{hint};
64 print SOURCE " else if (!strcmp(class, \"$short_name\")) return 1;\n";
70 int fm_ntop(char* class, char* field) {
71 if (class == NULL) return 0;
75 for my $object (keys %$map) {
76 my $short_name= $map->{$object}->{hint};
77 print SOURCE " else if (!strcmp(class, \"$short_name\")) {\n";
78 for my $field (keys %{$map->{$object}->{fields}}) {
79 my $position = $map->{$object}->{fields}->{$field}->{position};
80 print SOURCE " if (!strcmp(field,\"$field\")) return $position;\n";
85 print SOURCE " return -1;\n}\n";