X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Foidtoc.tcl;h=7ef102c03ef266526d6af68d26d62c0b14e8a823;hb=5465ce3572dee9b6dcbea43ebf02d9d548b6644d;hp=7809f3f6d4499619d48eef41f739b2e70612e90f;hpb=3cdfbd27dfc8dd15619f127ae78bf0f71b27dd6d;p=yaz-moved-to-github.git diff --git a/src/oidtoc.tcl b/src/oidtoc.tcl index 7809f3f..7ef102c 100644 --- a/src/oidtoc.tcl +++ b/src/oidtoc.tcl @@ -2,7 +2,7 @@ # 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 @@ -34,27 +34,45 @@ proc readoids {input} { 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 " 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]] @@ -70,13 +88,15 @@ proc oid_to_c {input cfile hfile} { 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]