changeset 345:30384a82983a

Quieten newer compilers with MORE CONST CORRECTNESS. (except, haha, gengetopt doesn't generate const-correct function prototypes. Happy happy joy joy. Put in an explicit cast when calling cmdline_parser().) Adjust gengetopt.in and Makefile to support both old (2.19) and new (2.22) versions of gengetopt. This only really means that we've lost -H as a help switch; --help still works.
author mas01cr
date Wed, 08 Oct 2008 11:06:11 +0000
parents 223a5994a962
children 725e4fd5208d
files Makefile audioDB.cpp audioDB.h gengetopt.in soap.cpp
diffstat 5 files changed, 29 insertions(+), 23 deletions(-) [+]
line wrap: on
line diff
--- a/Makefile	Tue Oct 07 21:03:26 2008 +0000
+++ b/Makefile	Wed Oct 08 11:06:11 2008 +0000
@@ -40,9 +40,12 @@
 %.o: %.cpp audioDB.h adb.nsmap cmdline.h reporter.h ReporterBase.h lshlib.h
 	g++ -c ${CFLAGS} ${GSOAP_INCLUDE} ${GSL_INCLUDE} -Wall  $<
 
+cmdline.o: cmdline.c cmdline.h
+	gcc -c $<
+
 OBJS=insert.o create.o common.o dump.o query.o soap.o sample.o audioDB.o index.o lshlib.o
 
-${EXECUTABLE}: ${OBJS} soapServer.cpp soapClient.cpp soapC.cpp cmdline.c
+${EXECUTABLE}: ${OBJS} soapServer.cpp soapClient.cpp soapC.cpp cmdline.o
 	g++ -o ${EXECUTABLE} ${CFLAGS} ${GSL_INCLUDE} ${LIBGSL} ${GSOAP_INCLUDE} $^ ${GSOAP_CPP}
 
 clean:
--- a/audioDB.cpp	Tue Oct 07 21:03:26 2008 +0000
+++ b/audioDB.cpp	Wed Oct 08 11:06:11 2008 +0000
@@ -22,7 +22,7 @@
   return ( (a.trackID==b.trackID) && (a.qpos==b.qpos) && (a.spos==b.spos) );
 }
 
-audioDB::audioDB(const unsigned argc, char* const argv[]): O2_AUDIODB_INITIALIZERS
+audioDB::audioDB(const unsigned argc, const char *const argv[]): O2_AUDIODB_INITIALIZERS
 {
   if(processArgs(argc, argv)<0){
     printf("No command found.\n");
@@ -97,7 +97,7 @@
     error("Unrecognized command",command);
 }
 
-audioDB::audioDB(const unsigned argc, char* const argv[], adb__queryResponse *adbQueryResponse): O2_AUDIODB_INITIALIZERS
+audioDB::audioDB(const unsigned argc, const char *const argv[], adb__queryResponse *adbQueryResponse): O2_AUDIODB_INITIALIZERS
 {
   try {
     isServer = 1; // Set to make errors report over SOAP
@@ -113,7 +113,7 @@
   }
 }
 
-audioDB::audioDB(const unsigned argc, char* const argv[], adb__statusResponse *adbStatusResponse): O2_AUDIODB_INITIALIZERS
+audioDB::audioDB(const unsigned argc, const char* const argv[], adb__statusResponse *adbStatusResponse): O2_AUDIODB_INITIALIZERS
 {
   try {
     isServer = 1; // Set to make errors report over SOAP
@@ -129,7 +129,7 @@
   }
 }
 
-audioDB::audioDB(const unsigned argc, char* const argv[], adb__lisztResponse *adbLisztResponse): O2_AUDIODB_INITIALIZERS
+audioDB::audioDB(const unsigned argc, const char *const argv[], adb__lisztResponse *adbLisztResponse): O2_AUDIODB_INITIALIZERS
 {
   try {
     isServer = 1; // Set to make errors report over SOAP
@@ -193,7 +193,7 @@
   cleanup();
 }
 
-int audioDB::processArgs(const unsigned argc, char* const argv[]){
+int audioDB::processArgs(const unsigned argc, const char *const argv[]){
 
   if(argc<2){
     cmdline_parser_print_version ();
@@ -206,7 +206,10 @@
     exit(0);
   }
 
-  if (cmdline_parser (argc, argv, &args_info) != 0)
+  /* KLUDGE: gengetopt generates a function which is not completely
+     const-clean in its declaration.  We cast argv here to keep the
+     compiler happy.  -- CSR, 2008-10-08 */
+  if (cmdline_parser (argc, (char *const *) argv, &args_info) != 0)
     error("Error parsing command line");
 
   if(args_info.help_given){
--- a/audioDB.h	Tue Oct 07 21:03:26 2008 +0000
+++ b/audioDB.h	Wed Oct 08 11:06:11 2008 +0000
@@ -318,14 +318,14 @@
   void prefix_name(char** const name, const char* prefix);
 
  public:
-  audioDB(const unsigned argc, char* const argv[]);
-  audioDB(const unsigned argc, char* const argv[], adb__queryResponse *adbQueryResponse);
-  audioDB(const unsigned argc, char* const argv[], adb__statusResponse *adbStatusResponse);
-  audioDB(const unsigned argc, char* const argv[], adb__lisztResponse *adbLisztResponse);
+  audioDB(const unsigned argc, const char *const argv[]);
+  audioDB(const unsigned argc, const char *const argv[], adb__queryResponse *adbQueryResponse);
+  audioDB(const unsigned argc, const char *const argv[], adb__statusResponse *adbStatusResponse);
+  audioDB(const unsigned argc, const char *const argv[], adb__lisztResponse *adbLisztResponse);
 
   void cleanup();
   ~audioDB();
-  int processArgs(const unsigned argc, char* const argv[]);
+  int processArgs(const unsigned argc, const char* const argv[]);
   void get_lock(int fd, bool exclusive);
   void release_lock(int fd);
   void create(const char* dbName);
--- a/gengetopt.in	Tue Oct 07 21:03:26 2008 +0000
+++ b/gengetopt.in	Wed Oct 08 11:06:11 2008 +0000
@@ -1,7 +1,7 @@
 package "audioDB"
 version "version 0.8.preview"
 purpose "A feature vector database management system for content-based retrieval."
-option "help" H "print help on audioDB usage and exit." optional
+
 option "verbosity" v "level of detail of operational information." int typestr="detail" default="1" optional
 text "\nDatabase commands are UPPER CASE. Command options are lower case.\n" 
 text ""
@@ -53,11 +53,11 @@
 
 option "QUERY" Q "content-based search on --database using --features as a query. Optionally restrict the search to those tracks identified in a --keyList." values="point","track","sequence","nsequence","onetoonensequence" typestr="searchtype" dependon="database" optional
 option "qpoint" p "ordinal position of query start point in --features file." int typestr="position" default="0" optional
-option "exhaustive" e "exhaustive search: iterate through all query vectors in search. Overrides --qpoint." flag off optional hidden
+option "exhaustive" e "exhaustive search: iterate through all query vectors in search. Overrides --qpoint." flag off hidden
 option "pointnn" n "number of point nearest neighbours to use in retrieval." int typestr="numpoints" default="10" optional
 option "radius"  R "radius search, returns all points/tracks/sequences inside given radius. (Overrides --pointnn)." double default="1.0" optional 
 option "expandfactor" x "time compress/expand factor of result length to query length [1.0 .. 100.0]." double default="1.1" optional hidden
-option "rotate"       o "rotate query vectors for rotationally invariant search." flag off optional hidden
+option "rotate"       o "rotate query vectors for rotationally invariant search." flag off hidden
 option "resultlength" r "maximum length of the result list." int typestr="length" default="10" optional
 option "sequencelength" l "length of sequences for sequence search." int typestr="length" default="16" optional
 option "sequencehop"  h "hop size of sequence window for sequence search." int typestr="hop" default="1" optional
@@ -73,18 +73,18 @@
 option "lsh_N" - "number of rows per hash tables" int typestr="size" default="100000" dependon="INDEX" optional
 option "lsh_b" - "number of tracks per indexing iteration" int typestr="size" default="500" dependon="INDEX" optional
 option "lsh_ncols" - "number of columns (collisions) to allocate for FORMAT1 LSH serialization" int typestr="size" default="250" dependon="INDEX" optional hidden
-option "lsh_exact" - "use exact evaluation of points retrieved by LSH." flag off dependon="QUERY" optional
-option "lsh_on_disk" - "Construct LSH hash tables for on-disk query (INDEX/QUERY)" flag off optional
-option "lsh_use_u_functions" - "use m independent hash functions combinatorically to approximate L independent hash functions." flag off optional
+option "lsh_exact" - "use exact evaluation of points retrieved by LSH." flag off dependon="QUERY"
+option "lsh_on_disk" - "Construct LSH hash tables for on-disk query (INDEX/QUERY)" flag off
+option "lsh_use_u_functions" - "use m independent hash functions combinatorically to approximate L independent hash functions." flag off
 
 section "Normalization control parameters" sectiondesc="These parameters control the normalization of feaures at query time\n"
 
-option "no_unit_norming" - "do not unit norm features when querying an L2Norm databases." flag off optional
+option "no_unit_norming" - "do not unit norm features when querying an L2Norm databases." flag off
 
 section "Web Services" sectiondesc="These commands enable the database process to establish a connection via the internet and operate as separate client and server processes.\n"
 
 option "SERVER" s "run as standalone web service on named port." int typestr="port" default="14475" optional
-option "load_index" - "make web service with memory-resident hashtables" flag off dependon="radius" optional
+option "load_index" - "make web service with memory-resident hashtables" flag off dependon="radius"
 option "client" c "run as a client using named host service." string typestr="hostname:port" optional
 
 
--- a/soap.cpp	Tue Oct 07 21:03:26 2008 +0000
+++ b/soap.cpp	Wed Oct 08 11:06:11 2008 +0000
@@ -143,7 +143,7 @@
 
 /* Server definitions */
 int adb__status(struct soap* soap, xsd__string dbName, adb__statusResponse &adbStatusResponse){
-  char* const argv[]={"./audioDB",COM_STATUS,"-d",dbName};
+  const char *const argv[]={"./audioDB",COM_STATUS,"-d",dbName};
   const unsigned argc = 4;
   try {
     audioDB(argc, argv, &adbStatusResponse);
@@ -160,7 +160,7 @@
   INTSTRINGIFY(lisztOffset, lisztOffsetStr);
   INTSTRINGIFY(lisztLength, lisztLengthStr);
 
-  char* const argv[] = {"./audioDB", COM_LISZT, "-d",dbName, "--lisztOffset", lisztOffsetStr, "--lisztLength", lisztLengthStr};
+  const char* const argv[] = {"./audioDB", COM_LISZT, "-d",dbName, "--lisztOffset", lisztOffsetStr, "--lisztLength", lisztLengthStr};
   const unsigned argc = 8;
   try{
     audioDB(argc, argv, &adbLisztResponse);
@@ -237,7 +237,7 @@
     argc++;
   }
 
-  char **argv = new char*[argc+1];
+  const char **argv = new const char*[argc+1];
   argv[0] = "./audioDB";
   argv[1] = COM_QUERY;
   argv[2] = queryType;