# Copyright (c) Index Data 2006-2007
# See the file LICENSE for details.
#
-# $Id: oidtoc.tcl,v 1.1 2007-04-16 21:53:09 adam Exp $
+# $Id: oidtoc.tcl,v 1.3 2007-04-24 12:55:15 adam Exp $
#
# Converts a CSV file with Object identifiers to C
return $oids
}
-proc oid_to_c {input cfile hfile} {
- set oids [readoids $input]
+proc oid_to_c {srcdir input cname hname} {
+ set oids [readoids "${srcdir}/${input}"]
- set cfile [open $cfile w]
- set hfile [open $hfile w]
+ set cfile [open "${srcdir}/${cname}" w]
+ set hfile [open "${srcdir}/../include/yaz/${hname}" w]
+ puts $cfile "/** \\file $cname"
+ puts $hfile "/** \\file $hname"
+ set preamble " \\brief Standard Object Identifiers: Generated from $input */"
+ puts $cfile $preamble
+ puts $hfile $preamble
+ puts $hfile "\#ifndef OID_STD_H"
+ puts $hfile "\#define OID_STD_H"
+
+ # Define this. So that we don't get duplicate declartions with MSVC
+ puts $cfile "\#define OID_STD_H"
puts $cfile "\#include <yaz/oid_db.h>"
puts $cfile ""
+ # To avoid LNK4049
+ puts $hfile "\#ifdef YAZ_DLL"
+ puts $hfile "\#define OID_EXPORT YAZ_EXPORT"
+ puts $hfile "\#else"
+ puts $hfile "\#define OID_EXPORT YAZ_IMPORT"
+ puts $hfile "\#endif"
+
+ puts $hfile "YAZ_BEGIN_CDECL"
foreach oid $oids {
set lname [string tolower [lindex $oid 2]]
set lname [string map {- _ . _ { } _ ( {} ) {}} $lname]
set prefix [string tolower [lindex $oid 0]]
- puts -nonewline $cfile "const int yaz_oid_${prefix}_${lname}\[\] = \{"
+ puts -nonewline $cfile "YAZ_EXPORT const int yaz_oid_${prefix}_${lname}\[\] = \{"
puts -nonewline $cfile [string map {. ,} [lindex $oid 1]]
puts $cfile ",-1\};"
- puts $hfile "extern const int yaz_oid_${prefix}_${lname}\[\];"
+ puts $hfile "OID_EXPORT extern const int yaz_oid_${prefix}_${lname}\[\];"
}
- puts $cfile "struct yaz_oid_entry yaz_oid_standard_entries\[\] ="
+ puts $cfile "YAZ_EXPORT struct yaz_oid_entry yaz_oid_standard_entries\[\] ="
puts $cfile "\{"
foreach oid $oids {
set lname [string tolower [lindex $oid 2]]
puts $cfile "\t\{CLASS_NOP, 0, 0\}"
puts $cfile "\};"
- puts $hfile "extern struct yaz_oid_entry yaz_oid_standard_entries\[\];"
+ puts $hfile "OID_EXPORT extern struct yaz_oid_entry yaz_oid_standard_entries\[\];"
+ puts $hfile "YAZ_END_CDECL"
+ puts $hfile "\#endif"
close $cfile
close $hfile
}
-if {[llength $argv] != 3} {
- puts "oidtoc.tcl csv cfile hfile"
+if {[llength $argv] != 4} {
+ puts "oidtoc.tcl srcdir csv cfile hfile"
exit 1
}
-oid_to_c [lindex $argv 0] [lindex $argv 1] [lindex $argv 2]
\ No newline at end of file
+oid_to_c [lindex $argv 0] [lindex $argv 1] [lindex $argv 2] [lindex $argv 3]