diff options
Diffstat (limited to 'libxml2/build_glob.py')
-rwxr-xr-x | libxml2/build_glob.py | 122 |
1 files changed, 0 insertions, 122 deletions
diff --git a/libxml2/build_glob.py b/libxml2/build_glob.py deleted file mode 100755 index 8855ec7..0000000 --- a/libxml2/build_glob.py +++ /dev/null @@ -1,122 +0,0 @@ -#! /usr/bin/env python -### -# -# build_glob.py : Build the global_functions.h and global_functions.c -# files which are required to implement the user -# interface to global variables now that thread specific -# data (TSD) is used to emulate global state. -# -# See Copyright for the status of this software. -# Gary.Pennington@sun.com -### -import os, string - -class globvar: - def __init__(self, type, name): - self.type=type - self.name=name - -def striplinesep(line): - while line and line[-1] in ('\r','\n'): - line = line[:-1] - return line - -def writeline(file, line=None): - if line: - file.write(line) - file.write("\n") - -if __name__ == "__main__": - globals={} - global_data=open("global.data").readlines() - global_code=open("globals.c").readlines() - global_hdr=open("include/libxml/globals.h").readlines() - global_functions_hdr=open("include/libxml/globals.h", "w+") - global_functions_impl=open("globals.c", "w+") - - # - # Rebuild the beginning of the file up to the - # Automatically generated string - # - for line in global_hdr: - line = striplinesep(line) - if line == " * Automatically generated by build_glob.py.": - break - writeline(global_functions_hdr, line) - - writeline(global_functions_hdr, " * Automatically generated by build_glob.py.") - writeline(global_functions_hdr, " * Do not modify the previous line.") - writeline(global_functions_hdr, " */") - writeline(global_functions_hdr) - - for line in global_code: - line = striplinesep(line) - if line == " * Automatically generated by build_glob.py.": - break - writeline(global_functions_impl, line) - - writeline(global_functions_impl, " * Automatically generated by build_glob.py.") - writeline(global_functions_impl, " * Do not modify the previous line.") - writeline(global_functions_impl, " */") - writeline(global_functions_impl) - - # Now process the data and write it to the appropriate output file - for line in global_data: - if line[0]=='#': - continue - line = striplinesep(line) - fields = string.split(line, ",") - # Update the header file - writeline(global_functions_hdr) - global_functions_hdr.write("extern "+fields[0]+" *") - if fields[2]: - global_functions_hdr.write("(*") - global_functions_hdr.write("__"+fields[1]+"(void)") - if fields[2]: - global_functions_hdr.write(")"+fields[2]) - writeline(global_functions_hdr,";") - writeline(global_functions_hdr, "#ifdef LIBXML_THREAD_ENABLED") - writeline(global_functions_hdr,"#define "+fields[1]+" \\") - writeline(global_functions_hdr,"(*(__"+fields[1]+"()))") - writeline(global_functions_hdr,"#else") - if fields[2]: - writeline(global_functions_hdr,"LIBXML_DLL_IMPORT extern "+fields[0]+" "+fields[1]+fields[2]+";") - else: - writeline(global_functions_hdr,"LIBXML_DLL_IMPORT extern "+fields[0]+" "+fields[1]+";") - writeline(global_functions_hdr,"#endif") - # set/get for per-thread global defaults - if fields[3]: - writeline(global_functions_hdr,fields[0]+" "+fields[1][:3]+"ThrDef"+fields[1][3:]+"("+fields[0]+" v);") - # Update the implementation file - writeline(global_functions_impl) -# writeline(global_functions_impl, "extern "+fields[0]+" "+fields[1]+";") - writeline(global_functions_impl, "#undef\t"+fields[1]) - writeline(global_functions_impl, fields[0]+" *") - if fields[2]: - global_functions_impl.write("(*") - global_functions_impl.write("__"+fields[1]+"(void)") - if fields[2]: - writeline(global_functions_impl, ")[]") - writeline(global_functions_impl, " {") - writeline(global_functions_impl, " if (IS_MAIN_THREAD)") - writeline(global_functions_impl, "\treturn (&"+fields[1]+");") - writeline(global_functions_impl, " else") - writeline(global_functions_impl, "\treturn (&xmlGetGlobalState()->"+fields[1]+");") - writeline(global_functions_impl, "}") - # set/get for per-thread global defaults - if fields[3]: - writeline(global_functions_impl,fields[0]+" "+fields[1][:3]+"ThrDef"+fields[1][3:]+"("+fields[0]+" v) {") - writeline(global_functions_impl," "+fields[0]+" ret;"); - writeline(global_functions_impl," xmlMutexLock(xmlThrDefMutex);") - writeline(global_functions_impl," ret = "+fields[1][:3]+fields[1][3:]+"ThrDef;") - writeline(global_functions_impl," "+fields[1][:3]+fields[1][3:]+"ThrDef = v;") - writeline(global_functions_impl," xmlMutexUnlock(xmlThrDefMutex);") - writeline(global_functions_impl," return ret;") - writeline(global_functions_impl,"}") - # Terminate the header file with appropriate boilerplate - writeline(global_functions_hdr) - writeline(global_functions_hdr, "#ifdef __cplusplus") - writeline(global_functions_hdr, "}") - writeline(global_functions_hdr, "#endif") - writeline(global_functions_hdr) - writeline(global_functions_hdr, "#endif /* __XML_GLOBALS_H */") |