File management cleanup. Split API into separate header. Removed unused functions. Added documentation

git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@9622 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
Dave Beazley 2006-12-19 03:49:17 +00:00
commit 79451aa1a7
4 changed files with 264 additions and 127 deletions

View file

@ -12,15 +12,13 @@
char cvsroot_include_c[] = "$Id$";
#include "swig.h"
#include "swigkeys.h"
/* Delimeter used in accessing files and directories */
static List *directories = 0; /* List of include directories */
static String *lastpath = 0; /* Last file that was included */
static String *swiglib = 0; /* Location of SWIG library */
static String *lang_config = 0; /* Language configuration file */
static int dopush = 1; /* Whether to push directories */
static List *directories = 0; /* List of include directories */
static String *lastpath = 0; /* Last file that was included */
static List *pdirectories = 0; /* List of pushed directories */
static int dopush = 1; /* Whether to push directories */
/* This functions determine whether to push/pop dirs in the preprocessor */
void Swig_set_push_dir(int push) {
@ -31,34 +29,6 @@ int Swig_get_push_dir(void) {
return dopush;
}
/* This function sets the name of the configuration file */
void Swig_set_config_file(const String_or_char *filename) {
lang_config = NewString(filename);
}
String *Swig_get_config_file() {
return lang_config;
}
/* -----------------------------------------------------------------------------
* Swig_swiglib_set()
* Swig_swiglib_get()
*
* Set the location of the SWIG library. This isn't really used, by the
* include mechanism, but rather as a query interface for language modules.
* ----------------------------------------------------------------------------- */
void Swig_swiglib_set(const String_or_char *sl) {
swiglib = NewString(sl);
}
String *Swig_swiglib_get() {
return swiglib;
}
/* -----------------------------------------------------------------------------
* Swig_add_directory()
*
@ -66,24 +36,18 @@ String *Swig_swiglib_get() {
* ----------------------------------------------------------------------------- */
List *Swig_add_directory(const String_or_char *dirname) {
String *adirname;
if (!directories)
directories = NewList();
assert(directories);
if (dirname) {
String *sdir = NewString(dirname);
Hash *dir = NewHash();
assert(dir);
SetFlag(dir, k_sysdir);
Setattr(dir, k_name, sdir);
Append(directories, dir);
Delete(dir);
Delete(sdir);
adirname = NewString(dirname);
Append(directories,adirname);
Delete(adirname);
}
return directories;
}
/* -----------------------------------------------------------------------------
* Swig_push_directory()
*
@ -92,23 +56,16 @@ List *Swig_add_directory(const String_or_char *dirname) {
* ----------------------------------------------------------------------------- */
void Swig_push_directory(const String_or_char *dirname) {
String *tmp = 0;
String *pdirname;
if (!Swig_get_push_dir())
return;
if (!directories)
directories = NewList();
assert(directories);
if (!DohIsString(dirname)) {
dirname = tmp = NewString(dirname);
assert(dirname);
}
if (dirname) {
Hash *dir = NewHash();
Setattr(dir, k_name, dirname);
Insert(directories, 0, dir);
if (tmp)
Delete(tmp);
}
if (!pdirectories)
pdirectories = NewList();
assert(pdirectories);
pdirname = NewString(dirname);
assert(pdirname);
Insert(pdirectories,0,pdirname);
Delete(pdirname);
}
/* -----------------------------------------------------------------------------
@ -121,9 +78,9 @@ void Swig_push_directory(const String_or_char *dirname) {
void Swig_pop_directory() {
if (!Swig_get_push_dir())
return;
if (!directories)
if (!pdirectories)
return;
Delitem(directories, 0);
Delitem(pdirectories, 0);
}
/* -----------------------------------------------------------------------------
@ -145,11 +102,9 @@ String *Swig_last_file() {
static List *Swig_search_path_any(int syspath) {
String *filename;
String *dirname;
List *slist, *llist;
int i, ilen;
List *slist;
int i, ilen;
llist = 0;
slist = NewList();
assert(slist);
filename = NewStringEmpty();
@ -159,43 +114,33 @@ static List *Swig_search_path_any(int syspath) {
#else
Printf(filename, ".%s", SWIG_FILE_DELIMETER);
#endif
if (syspath) {
llist = NewList();
assert(llist);
Append(llist, filename);
} else {
Append(slist, filename);
Append(slist, filename);
Delete(filename);
/* If there are any pushed directories. Add them first */
if (pdirectories) {
ilen = Len(pdirectories);
for (i = 0; i < ilen; i++) {
filename = NewString(Getitem(pdirectories,i));
StringAppend(filename,SWIG_FILE_DELIMETER);
Append(slist,filename);
Delete(filename);
}
}
/* Add system directories next */
ilen = Len(directories);
for (i = 0; i < ilen; i++) {
int issimple = 0;
dirname = Getitem(directories, i);
filename = NewStringEmpty();
assert(filename);
if (DohIsString(dirname)) {
filename = Copy(dirname);
issimple = 1;
filename = NewString(Getitem(directories,i));
StringAppend(filename,SWIG_FILE_DELIMETER);
if (syspath) {
/* If doing a system include, put the system directories first */
Insert(slist,i,filename);
} else {
filename = Copy(Getattr(dirname, k_name));
}
StringAppend(filename, SWIG_FILE_DELIMETER);
if (syspath && (issimple || !GetFlag(dirname, k_sysdir))) {
Append(llist, filename);
} else {
Append(slist, filename);
/* Insert(slist,0,filename); */
/* Otherwise, just put the system directories after the pushed directories (if any) */
Append(slist,filename);
}
Delete(filename);
}
if (syspath) {
int ilen = Len(llist);
for (i = 0; i < ilen; i++) {
Append(slist, Getitem(llist, i));
}
Delete(llist);
}
return slist;
}
@ -278,7 +223,6 @@ String *Swig_read_file(FILE *f) {
StringAppend(str, "\n");
}
}
return str;
}
@ -314,7 +258,6 @@ String *Swig_include_sys(const String_or_char *name) {
return Swig_include_any(name, 1);
}
/* -----------------------------------------------------------------------------
* Swig_insert_file()
*