3 use lib '../perlmods/';
7 use lib '../perlmods/';
8 use OpenILS::Utils::Fieldmapper;
10 $map = $Fieldmapper::fieldmap unless ($@);
16 print "usage: $0 <source_file>\n";
20 warn "Generating fieldmapper-c code...\n";
23 print $ARGV[0] . "\n";
25 open(SOURCE, ">$ARGV[0]");
28 #include "fieldmapper_lookup.h"
31 char * fm_pton(char * class, int pos) {
32 if (class == NULL) return NULL;
36 for my $object (keys %$map) {
37 my $short_name= $map->{$object}->{hint};
39 else if (!strcmp(class, "$short_name")) {
42 for my $field (keys %{$map->{$object}->{fields}}) {
43 my $position = $map->{$object}->{fields}->{$field}->{position};
46 return strdup("$field");
54 return strdup("datum");
57 int isFieldmapper(char* class) {
58 if (class == NULL) return NULL;
61 for my $object (keys %$map) {
62 my $short_name= $map->{$object}->{hint};
63 print SOURCE " else if (!strcmp(class, \"$short_name\")) return 1;";
69 int fm_ntop(char* class, char* field);
70 if (class == NULL) return NULL;
74 for my $object (keys %$map) {
75 my $short_name= $map->{$object}->{hint};
76 print SOURCE " else if (!strcmp(class, \"$short_name\")) {\n";
77 for my $field (keys %{$map->{$object}->{fields}}) {
78 my $position = $map->{$object}->{fields}->{$field}->{position};
79 print SOURCE " if (!strcmp(field,\"$field\")) return $position;\n";
84 print SOURCE " return -1;\n}";