This is the mail archive of the libstdc++@sourceware.cygnus.com mailing list for the libstdc++ project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

[patch] new string instantiations



I have rewritten src/string-inst.cc so that it instantiates
the non-inline members of basic_string<char> and -<wchar_t>, 
rather than (as it had done) uselessly instantiating mainly 
inline members.   It also no longer also instantiates *everything* 
into stringMAIN.lo, in addition to the individual instantiations
in other object files.

Patch follows.  I'm not certain how to get the Makefile.am to 
generate the correct Makefile.in (assigning the libstdc___la_OBJECTS 
variable members), as manually patched into it below.

Note that the two lines commented out under '#ifdef MAIN' in 
src/string-inst.cc, if uncommented, cause an "internal error" 
in yesterday's compiler.

Before using this, it is advisable to do "rm src/{w,}string[A-Z]*.cc"
in the libstdc++-v3 directory.  I'm hoping those source files won't
be there after the move this "afternoon".

Nathan Myers
ncm@cantrip.org

------
Index: Makefile.am
===================================================================
RCS file: /cvs/libstdc++/libstdc++/src/Makefile.am,v
retrieving revision 1.91
diff -u -r1.91 Makefile.am
--- Makefile.am	2000/04/06 08:37:31	1.91
+++ Makefile.am	2000/04/18 10:21:29
@@ -162,23 +162,7 @@
 	complex.cc complexf.cc complexl.cc complex_io.cc \
 	stdexcept.cc ios.cc stdstreams.cc strstream.cc \
 	locale.cc localename.cc  \
-	locale-inst.cc stl-inst.cc misc-inst.cc valarray-inst.cc \
-        stringADDCS.cc stringADDPS.cc stringADDSC.cc stringADDSP.cc \
-        stringADDSS.cc stringBIST.cc stringBOST.cc stringCHTR.cc \
-	stringEQPS.cc stringEQSP.cc stringEQSS.cc stringEXTRA.cc \
-	stringGEPS.cc stringGESP.cc stringGESS.cc stringGETLI.cc \
-	stringGTPS.cc stringGTSP.cc stringGTSS.cc stringINSER.cc \
-	stringLEPS.cc stringLESP.cc stringLESS.cc stringLTPS.cc \
-	stringLTSP.cc stringLTSS.cc stringMAIN.cc stringNEPS.cc \
-	stringNESP.cc stringNESS.cc stringSCOPY.cc \
-	wstringADDCS.cc wstringADDPS.cc wstringADDSC.cc wstringADDSP.cc \
-	wstringADDSS.cc wstringBIST.cc wstringBOST.cc wstringCHTR.cc \
-	wstringEQPS.cc wstringEQSP.cc wstringEQSS.cc wstringEXTRA.cc \
-	wstringGEPS.cc wstringGESP.cc wstringGESS.cc wstringGETLI.cc \
-	wstringGTPS.cc wstringGTSP.cc wstringGTSS.cc wstringINSER.cc \
-	wstringLEPS.cc wstringLESP.cc wstringLESS.cc wstringLTPS.cc \
-	wstringLTSP.cc wstringLTSS.cc wstringMAIN.cc wstringNEPS.cc \
-	wstringNESP.cc wstringNESS.cc wstringSCOPY.cc 
+	locale-inst.cc stl-inst.cc misc-inst.cc valarray-inst.cc 
 
 VPATH += $(top_srcdir)/src
 VPATH += $(top_srcdir) $(top_srcdir)/std $(top_srcdir)/stl
@@ -186,7 +170,7 @@
 
 
 # Actual sources for the distro, but don't build these.
-EXTRA_sources = string-inst.cc wstring-inst.cc
+EXTRA_sources = string-inst.cc 
 
 libstdc___la_SOURCES = $(sources)
 
@@ -244,18 +228,125 @@
 locale-inst.lo: locale-inst.cc
 	$(LTCXXCOMPILE) -fimplicit-templates -c $<
 
-
-# See <URL:http://sourceware.cygnus.com/ml/libstdc++/2000-q1/msg00426.html>.
-# The 2.95 inliner cannot inline a member function, and -Winline complains.
-# This must not be fatal when building under 2.95.  (If 2.96+ ever becomes
-# /required/ for building, all of this can be removed.)
-stringMAIN.o: stringMAIN.cc
-	$(CXXCOMPILE) @WERRORSUPPRESS@ -c $<
-stringMAIN.lo: stringMAIN.cc
-	$(LTCXXCOMPILE) @WERRORSUPPRESS@ -c $<
-wstringMAIN.o: wstringMAIN.cc
-	$(CXXCOMPILE) @WERRORSUPPRESS@ -c $<
-wstringMAIN.lo: wstringMAIN.cc
-	$(LTCXXCOMPILE) @WERRORSUPPRESS@ -c $<
-
+stringMAIN.lo \
+stringCTORNC.lo \
+stringCTORCP.lo \
+stringCTORAL.lo \
+stringCTORCPR.lo \
+stringCTORCPRAL.lo \
+stringCTORPRAL.lo \
+stringCTORPAL.lo \
+stringCTORDUPAL.lo \
+stringCTORPP.lo \
+stringCTORII.lo \
+stringDESTROY.lo \
+stringLEAK.lo \
+stringMUTATE.lo \
+stringRESERVE.lo \
+stringSWAP.lo \
+stringSLOP.lo \
+stringCREATE.lo \
+stringCLONE.lo \
+stringRESIZE.lo \
+stringAPPCOPY.lo \
+stringAPPCPR.lo \
+stringAPPPR.lo \
+stringAPPDUP.lo \
+stringAPPII.lo \
+stringASSCP.lo \
+stringASSII.lo \
+stringINSII.lo \
+stringREPRR.lo \
+stringREPIIDUP.lo \
+stringREPII.lo \
+stringREPIII.lo \
+stringREP4I.lo \
+stringREPIIPP.lo \
+stringREPIIPP2.lo \
+stringCOPY.lo \
+stringCONII.lo \
+stringCONIIF.lo \
+stringCONPPF.lo \
+stringCONPPF2.lo \
+stringFIND.lo \
+stringFINDC.lo \
+stringRFIND.lo \
+stringRFINDC.lo \
+stringFFO.lo \
+stringFLO.lo \
+stringFFNO.lo \
+stringFLNO.lo \
+stringFLNOC.lo \
+stringCOMPARE.lo \
+stringCOMPARE2.lo \
+stringCOMPAREP.lo \
+stringCOMPAREP2.lo \
+stringADDPS.lo \
+stringADDCS.lo \
+stringEXTRACT.lo \
+stringINSERT.lo \
+stringGETLINE.lo \
+stringSCOPY.lo : string-inst.cc
+	$(LTCXXCOMPILE) -c -D`echo $@ | tr -dc 'A-Z'` $< -o $@
+
+wstringMAIN.lo \
+wstringCTORNC.lo \
+wstringCTORCP.lo \
+wstringCTORAL.lo \
+wstringCTORCPR.lo \
+wstringCTORCPRAL.lo \
+wstringCTORPRAL.lo \
+wstringCTORPAL.lo \
+wstringCTORDUPAL.lo \
+wstringCTORPP.lo \
+wstringCTORII.lo \
+wstringDESTROY.lo \
+wstringLEAK.lo \
+wstringMUTATE.lo \
+wstringRESERVE.lo \
+wstringSWAP.lo \
+wstringSLOP.lo \
+wstringCREATE.lo \
+wstringCLONE.lo \
+wstringRESIZE.lo \
+wstringAPPCOPY.lo \
+wstringAPPCPR.lo \
+wstringAPPPR.lo \
+wstringAPPDUP.lo \
+wstringAPPII.lo \
+wstringASSCP.lo \
+wstringASSII.lo \
+wstringINSII.lo \
+wstringREPRR.lo \
+wstringREPIIDUP.lo \
+wstringREPII.lo \
+wstringREPIII.lo \
+wstringREP4I.lo \
+wstringREPIIPP.lo \
+wstringREPIIPP2.lo \
+wstringCOPY.lo \
+wstringCONII.lo \
+wstringCONIIF.lo \
+wstringCONPPF.lo \
+wstringCONPPF2.lo \
+wstringFIND.lo \
+wstringFINDC.lo \
+wstringRFIND.lo \
+wstringRFINDC.lo \
+wstringFFO.lo \
+wstringFLO.lo \
+wstringFFNO.lo \
+wstringFLNO.lo \
+wstringFLNOC.lo \
+wstringCOMPARE.lo \
+wstringCOMPARE2.lo \
+wstringCOMPAREP.lo \
+wstringCOMPAREP2.lo \
+wstringADDPS.lo \
+wstringADDCS.lo \
+wstringEXTRACT.lo \
+wstringINSERT.lo \
+wstringGETLINE.lo \
+wstringSCOPY.lo : string-inst.cc
+	$(LTCXXCOMPILE) -c -D`echo $@ | tr -dc 'A-Z'` -DC=wchar_t $< -o $@
 
Index: Makefile.in
===================================================================
RCS file: /cvs/libstdc++/libstdc++/src/Makefile.in,v
retrieving revision 1.102
diff -u -r1.102 Makefile.in
--- Makefile.in	2000/04/06 08:37:31	1.102
+++ Makefile.in	2000/04/18 10:21:47
@@ -241,28 +241,11 @@
 	complex.cc complexf.cc complexl.cc complex_io.cc \
 	stdexcept.cc ios.cc stdstreams.cc strstream.cc \
 	locale.cc localename.cc  \
-	locale-inst.cc stl-inst.cc misc-inst.cc valarray-inst.cc \
-        stringADDCS.cc stringADDPS.cc stringADDSC.cc stringADDSP.cc \
-        stringADDSS.cc stringBIST.cc stringBOST.cc stringCHTR.cc \
-	stringEQPS.cc stringEQSP.cc stringEQSS.cc stringEXTRA.cc \
-	stringGEPS.cc stringGESP.cc stringGESS.cc stringGETLI.cc \
-	stringGTPS.cc stringGTSP.cc stringGTSS.cc stringINSER.cc \
-	stringLEPS.cc stringLESP.cc stringLESS.cc stringLTPS.cc \
-	stringLTSP.cc stringLTSS.cc stringMAIN.cc stringNEPS.cc \
-	stringNESP.cc stringNESS.cc stringSCOPY.cc \
-	wstringADDCS.cc wstringADDPS.cc wstringADDSC.cc wstringADDSP.cc \
-	wstringADDSS.cc wstringBIST.cc wstringBOST.cc wstringCHTR.cc \
-	wstringEQPS.cc wstringEQSP.cc wstringEQSS.cc wstringEXTRA.cc \
-	wstringGEPS.cc wstringGESP.cc wstringGESS.cc wstringGETLI.cc \
-	wstringGTPS.cc wstringGTSP.cc wstringGTSS.cc wstringINSER.cc \
-	wstringLEPS.cc wstringLESP.cc wstringLESS.cc wstringLTPS.cc \
-	wstringLTSP.cc wstringLTSS.cc wstringMAIN.cc wstringNEPS.cc \
-	wstringNESP.cc wstringNESS.cc wstringSCOPY.cc 
-
+	locale-inst.cc stl-inst.cc misc-inst.cc valarray-inst.cc 
 VPATH =  $(top_srcdir)/src $(top_srcdir) $(top_srcdir)/std $(top_srcdir)/stl $(top_srcdir)/@ctype_include_dir@
 
 # Actual sources for the distro, but don't build these.
-EXTRA_sources = string-inst.cc wstring-inst.cc
+EXTRA_sources = string-inst.cc
 
 libstdc___la_SOURCES = $(sources)
 
@@ -288,21 +271,125 @@
 libstdc___la_OBJECTS =  limitsMEMBERS.lo c++io.lo cmath.lo complex.lo \
 complexf.lo complexl.lo complex_io.lo stdexcept.lo ios.lo stdstreams.lo \
 strstream.lo locale.lo localename.lo locale-inst.lo stl-inst.lo \
-misc-inst.lo valarray-inst.lo stringADDCS.lo stringADDPS.lo \
-stringADDSC.lo stringADDSP.lo stringADDSS.lo stringBIST.lo \
-stringBOST.lo stringCHTR.lo stringEQPS.lo stringEQSP.lo stringEQSS.lo \
-stringEXTRA.lo stringGEPS.lo stringGESP.lo stringGESS.lo stringGETLI.lo \
-stringGTPS.lo stringGTSP.lo stringGTSS.lo stringINSER.lo stringLEPS.lo \
-stringLESP.lo stringLESS.lo stringLTPS.lo stringLTSP.lo stringLTSS.lo \
-stringMAIN.lo stringNEPS.lo stringNESP.lo stringNESS.lo stringSCOPY.lo \
-wstringADDCS.lo wstringADDPS.lo wstringADDSC.lo wstringADDSP.lo \
-wstringADDSS.lo wstringBIST.lo wstringBOST.lo wstringCHTR.lo \
-wstringEQPS.lo wstringEQSP.lo wstringEQSS.lo wstringEXTRA.lo \
-wstringGEPS.lo wstringGESP.lo wstringGESS.lo wstringGETLI.lo \
-wstringGTPS.lo wstringGTSP.lo wstringGTSS.lo wstringINSER.lo \
-wstringLEPS.lo wstringLESP.lo wstringLESS.lo wstringLTPS.lo \
-wstringLTSP.lo wstringLTSS.lo wstringMAIN.lo wstringNEPS.lo \
-wstringNESP.lo wstringNESS.lo wstringSCOPY.lo
+misc-inst.lo valarray-inst.lo \
+stringMAIN.lo \
+stringCTORNC.lo \
+stringCTORCP.lo \
+stringCTORAL.lo \
+stringCTORCPR.lo \
+stringCTORCPRAL.lo \
+stringCTORPRAL.lo \
+stringCTORPAL.lo \
+stringCTORDUPAL.lo \
+stringCTORPP.lo \
+stringCTORII.lo \
+stringDESTROY.lo \
+stringLEAK.lo \
+stringMUTATE.lo \
+stringRESERVE.lo \
+stringSWAP.lo \
+stringSLOP.lo \
+stringCREATE.lo \
+stringCLONE.lo \
+stringRESIZE.lo \
+stringAPPCOPY.lo \
+stringAPPCPR.lo \
+stringAPPPR.lo \
+stringAPPDUP.lo \
+stringAPPII.lo \
+stringASSCP.lo \
+stringASSII.lo \
+stringINSII.lo \
+stringREPRR.lo \
+stringREPIIDUP.lo \
+stringREPII.lo \
+stringREPIII.lo \
+stringREP4I.lo \
+stringREPIIPP.lo \
+stringREPIIPP2.lo \
+stringCOPY.lo \
+stringCONII.lo \
+stringCONIIF.lo \
+stringCONPPF.lo \
+stringCONPPF2.lo \
+stringFIND.lo \
+stringFINDC.lo \
+stringRFIND.lo \
+stringRFINDC.lo \
+stringFFO.lo \
+stringFLO.lo \
+stringFFNO.lo \
+stringFLNO.lo \
+stringFLNOC.lo \
+stringCOMPARE.lo \
+stringCOMPARE2.lo \
+stringCOMPAREP.lo \
+stringCOMPAREP2.lo \
+stringADDPS.lo \
+stringADDCS.lo \
+stringEXTRACT.lo \
+stringINSERT.lo \
+stringGETLINE.lo \
+stringSCOPY.lo \
+wstringMAIN.lo \
+wstringCTORNC.lo \
+wstringCTORCP.lo \
+wstringCTORAL.lo \
+wstringCTORCPR.lo \
+wstringCTORCPRAL.lo \
+wstringCTORPRAL.lo \
+wstringCTORPAL.lo \
+wstringCTORDUPAL.lo \
+wstringCTORPP.lo \
+wstringCTORII.lo \
+wstringDESTROY.lo \
+wstringLEAK.lo \
+wstringMUTATE.lo \
+wstringRESERVE.lo \
+wstringSWAP.lo \
+wstringSLOP.lo \
+wstringCREATE.lo \
+wstringCLONE.lo \
+wstringRESIZE.lo \
+wstringAPPCOPY.lo \
+wstringAPPCPR.lo \
+wstringAPPPR.lo \
+wstringAPPDUP.lo \
+wstringAPPII.lo \
+wstringASSCP.lo \
+wstringASSII.lo \
+wstringINSII.lo \
+wstringREPRR.lo \
+wstringREPIIDUP.lo \
+wstringREPII.lo \
+wstringREPIII.lo \
+wstringREP4I.lo \
+wstringREPIIPP.lo \
+wstringREPIIPP2.lo \
+wstringCOPY.lo \
+wstringCONII.lo \
+wstringCONIIF.lo \
+wstringCONPPF.lo \
+wstringCONPPF2.lo \
+wstringFIND.lo \
+wstringFINDC.lo \
+wstringRFIND.lo \
+wstringRFINDC.lo \
+wstringFFO.lo \
+wstringFLO.lo \
+wstringFFNO.lo \
+wstringFLNO.lo \
+wstringFLNOC.lo \
+wstringCOMPARE.lo \
+wstringCOMPARE2.lo \
+wstringCOMPAREP.lo \
+wstringCOMPAREP2.lo \
+wstringADDPS.lo \
+wstringADDCS.lo \
+wstringEXTRACT.lo \
+wstringINSERT.lo \
+wstringGETLINE.lo \
+wstringSCOPY.lo
 CXXFLAGS = @CXXFLAGS@
 CXXCOMPILE = $(CXX) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
 LTCXXCOMPILE = $(LIBTOOL) --mode=compile $(CXX) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
@@ -566,18 +653,127 @@
 locale-inst.lo: locale-inst.cc
 	$(LTCXXCOMPILE) -fimplicit-templates -c $<
 
-# See <URL:http://sourceware.cygnus.com/ml/libstdc++/2000-q1/msg00426.html>.
-# The 2.95 inliner cannot inline a member function, and -Winline complains.
-# This must not be fatal when building under 2.95.  (If 2.96+ ever becomes
-# /required/ for building, all of this can be removed.)
-stringMAIN.o: stringMAIN.cc
-	$(CXXCOMPILE) @WERRORSUPPRESS@ -c $<
-stringMAIN.lo: stringMAIN.cc
-	$(LTCXXCOMPILE) @WERRORSUPPRESS@ -c $<
-wstringMAIN.o: wstringMAIN.cc
-	$(CXXCOMPILE) @WERRORSUPPRESS@ -c $<
-wstringMAIN.lo: wstringMAIN.cc
-	$(LTCXXCOMPILE) @WERRORSUPPRESS@ -c $<
+stringMAIN.lo \
+stringCTORNC.lo \
+stringCTORCP.lo \
+stringCTORAL.lo \
+stringCTORCPR.lo \
+stringCTORCPRAL.lo \
+stringCTORPRAL.lo \
+stringCTORPAL.lo \
+stringCTORDUPAL.lo \
+stringCTORPP.lo \
+stringCTORII.lo \
+stringDESTROY.lo \
+stringLEAK.lo \
+stringMUTATE.lo \
+stringRESERVE.lo \
+stringSWAP.lo \
+stringSLOP.lo \
+stringCREATE.lo \
+stringCLONE.lo \
+stringRESIZE.lo \
+stringAPPCOPY.lo \
+stringAPPCPR.lo \
+stringAPPPR.lo \
+stringAPPDUP.lo \
+stringAPPII.lo \
+stringASSCP.lo \
+stringASSII.lo \
+stringINSII.lo \
+stringREPRR.lo \
+stringREPIIDUP.lo \
+stringREPII.lo \
+stringREPIII.lo \
+stringREP4I.lo \
+stringREPIIPP.lo \
+stringREPIIPP2.lo \
+stringCOPY.lo \
+stringCONII.lo \
+stringCONIIF.lo \
+stringCONPPF.lo \
+stringCONPPF2.lo \
+stringFIND.lo \
+stringFINDC.lo \
+stringRFIND.lo \
+stringRFINDC.lo \
+stringFFO.lo \
+stringFLO.lo \
+stringFFNO.lo \
+stringFLNO.lo \
+stringFLNOC.lo \
+stringCOMPARE.lo \
+stringCOMPARE2.lo \
+stringCOMPAREP.lo \
+stringCOMPAREP2.lo \
+stringADDPS.lo \
+stringADDCS.lo \
+stringEXTRACT.lo \
+stringINSERT.lo \
+stringGETLINE.lo \
+stringSCOPY.lo : string-inst.cc
+	$(LTCXXCOMPILE) -c -D`echo $@ | tr -dc 'A-Z'` $< -o $@
+
+wstringMAIN.lo \
+wstringCTORNC.lo \
+wstringCTORCP.lo \
+wstringCTORAL.lo \
+wstringCTORCPR.lo \
+wstringCTORCPRAL.lo \
+wstringCTORPRAL.lo \
+wstringCTORPAL.lo \
+wstringCTORDUPAL.lo \
+wstringCTORPP.lo \
+wstringCTORII.lo \
+wstringDESTROY.lo \
+wstringLEAK.lo \
+wstringMUTATE.lo \
+wstringRESERVE.lo \
+wstringSWAP.lo \
+wstringSLOP.lo \
+wstringCREATE.lo \
+wstringCLONE.lo \
+wstringRESIZE.lo \
+wstringAPPCOPY.lo \
+wstringAPPCPR.lo \
+wstringAPPPR.lo \
+wstringAPPDUP.lo \
+wstringAPPII.lo \
+wstringASSCP.lo \
+wstringASSII.lo \
+wstringINSII.lo \
+wstringREPRR.lo \
+wstringREPIIDUP.lo \
+wstringREPII.lo \
+wstringREPIII.lo \
+wstringREP4I.lo \
+wstringREPIIPP.lo \
+wstringREPIIPP2.lo \
+wstringCOPY.lo \
+wstringCONII.lo \
+wstringCONIIF.lo \
+wstringCONPPF.lo \
+wstringCONPPF2.lo \
+wstringFIND.lo \
+wstringFINDC.lo \
+wstringRFIND.lo \
+wstringRFINDC.lo \
+wstringFFO.lo \
+wstringFLO.lo \
+wstringFFNO.lo \
+wstringFLNO.lo \
+wstringFLNOC.lo \
+wstringCOMPARE.lo \
+wstringCOMPARE2.lo \
+wstringCOMPAREP.lo \
+wstringCOMPAREP2.lo \
+wstringADDPS.lo \
+wstringADDCS.lo \
+wstringEXTRACT.lo \
+wstringINSERT.lo \
+wstringGETLINE.lo \
+wstringSCOPY.lo : string-inst.cc
+	$(LTCXXCOMPILE) -c -D`echo $@ | tr -dc 'A-Z'` -DC=wchar_t $< -o $@
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
Index: string-inst.cc
===================================================================
RCS file: /cvs/libstdc++/libstdc++/src/string-inst.cc,v
retrieving revision 1.9
diff -u -r1.9 string-inst.cc
--- string-inst.cc	2000/03/21 06:24:06	1.9
+++ string-inst.cc	2000/04/18 10:21:47
@@ -32,7 +32,7 @@
 //
 
 // Written by Jason Merrill based upon the specification by Takanori Adachi
-// in ANSI X3J16/94-0013R2.
+// in ANSI X3J16/94-0013R2.  Rewritten by Nathan Myers.
 
 #include <bits/std_string.h>
 #include <bits/std_algorithm.h>
@@ -55,106 +55,246 @@
 {
   typedef basic_string<C> S;
 
-// Do instantiate.
-#ifdef TRAITS
-  template class char_traits<C>;
+#ifdef MAIN
+  template C S::_Rep::_S_terminal;
+//  template S::size_type S::_S_max_size;
+//  template S::allocator_type::size_type S::S_empty_rep_storage;
 #endif
 
-#ifdef MAIN
-  template class basic_string<C>;
+#ifdef CTORNC
+  template 
+    S::basic_string(S::size_type, C, S::allocator_type const&);
+#endif
+
+#ifdef CTORCP
+  template 
+    S::basic_string(S const&);
+#endif
+
+#ifdef CTORAL
+  template 
+    S::basic_string(S::allocator_type const&);
+#endif
+
+#ifdef CTORCPR
+  template 
+    S::basic_string(S const&, S::size_type, S::size_type);
+#endif
+
+#ifdef CTORCPRAL
+  template 
+    S::basic_string(
+      S const&, S::size_type, S::size_type, S::allocator_type const&);
+#endif
+
+#ifdef CTORPRAL
+  template 
+    S::basic_string(
+      C const*, S::size_type, S::allocator_type const&);
+#endif
 
-  // Make sure string::iterators have binary operators.
-  template bool operator==(const S::iterator&, const S::iterator&);
-  template bool operator!=(const S::iterator&, const S::iterator&);
-  template bool operator<(const S::iterator&, const S::iterator&);
-  template bool operator<=(const S::iterator&, const S::iterator&);
-  template bool operator>(const S::iterator&, const S::iterator&);
-  template bool operator>=(const S::iterator&, const S::iterator&);
-  template 
-    S::iterator
-    operator+(S::iterator::difference_type, const S::iterator&);
-
-  // Make sure string::const_iterators have binary operators.
-  template bool operator==(const S::const_iterator&, const S::const_iterator&);
-  template bool operator!=(const S::const_iterator&, const S::const_iterator&);
-  template bool operator<(const S::const_iterator&, const S::const_iterator&);
-  template bool operator<=(const S::const_iterator&, const S::const_iterator&);
-  template bool operator>(const S::const_iterator&, const S::const_iterator&);
-  template bool operator>=(const S::const_iterator&, const S::const_iterator&);
+#ifdef CTORPAL
   template 
-    S::const_iterator
-    operator+(S::const_iterator::difference_type, const S::const_iterator&);
+    S::basic_string(
+      C const*, S::allocator_type const&);
+#endif
+
+#ifdef CTORDUPAL
+  template 
+    S::basic_string(
+      S::size_type, C, S::allocator_type const&);
+#endif
 
-  // These member templates have to be explicitly instantiated.
+#ifdef CTORPP
   template 
     S::basic_string
     (C*, C*, const allocator<C>&);
+#endif
 
+#ifdef CTORII
   template 
     S::basic_string
     (S::iterator, S::iterator, const allocator<C>&);
+#endif
+
+#ifdef DESTROY
+  template
+    void S::_Rep::_M_destroy(S::allocator_type const&) throw();
+#endif
 
+#ifdef LEAK
+  template
+    void S::_M_leak_hard();
+#endif
+
+#ifdef MUTATE
+  template
+    void S::_M_mutate(S::size_type, S::size_type, S::size_type);
+#endif
+
+#ifdef RESERVE
+  template
+    void S::reserve(S::size_type);
+#endif
+
+#ifdef SWAP
+  template
+    void S::swap(S&);
+#endif
+
+#ifdef SLOP
+# ifdef _GLIBCPP_ALLOC_CONTROL
+    template
+      bool (* S::_Rep::_S_excess_slop)(size_t, size_t); 
+    template
+      bool S::_Rep::_S_default_excess(size_t, size_t); 
+# endif
+#endif
+
+#ifdef CREATE
+  template
+    S::_Rep* S::_Rep::_S_create(size_t, S::allocator_type const&);
+#endif
+
+#ifdef CLONE
+  template
+    C* S::_Rep::_M_clone(S::allocator_type const&, S::size_type);
+#endif
+
+#ifdef RESIZE
+  template
+    void S::resize(S::size_type, C);
+#endif
+
+#ifdef APPCOPY
+  template
+    S& S::append(S const&);
+#endif
+
+#ifdef APPCPR
+  template
+    S& S::append(S const&, S::size_type, S::size_type);
+#endif
+
+#ifdef APPPR
+  template
+    S& S::append(C const*, S::size_type);
+#endif
+
+#ifdef APPDUP
+  template
+    S& S::append(S::size_type, C);
+#endif
+
+#ifdef APPII
   template 
     S& 
     S::append<S::iterator>
     (S::iterator, S::iterator);
+#endif
 
+#ifdef ASSCP
+  template
+    S& 
+    S::assign(S const&);
+#endif
+
+#ifdef ASSII
   template 
     S& 
     S::assign<S::iterator>
     (S::iterator, S::iterator);
+#endif
 
+#ifdef INSII
   template 
     void
     S::insert<S::iterator> //c*
     (S::iterator, S::iterator, S::iterator); //it, c+, c+ and temptype = char*
+#endif
+
+#ifdef REPRR
+  template
+    S& S::replace(
+      S::size_type, S::size_type, S const&, S::size_type, S::size_type);
+#endif
 
+#ifdef REPIIDUP
   template 
+    S& S::replace(S::iterator, S::iterator, S::size_type, C);
+#endif
+
+#ifdef REPII
+  template 
     S&
     S::replace<S::iterator> // c*
     (S::iterator, S::iterator, S::iterator, S::iterator); //it, it, c+, c+ 
+#endif
 
+#ifdef REPIII
   template 
     S& 
     S::_M_replace<S::iterator>
     (S::iterator, S::iterator, S::iterator, S::iterator, forward_iterator_tag);
+#endif
 
+#ifdef REP4I
+  template 
   template 
     S& 
     S::_M_replace<S::const_iterator>
     (S::iterator, S::iterator, 
      S::const_iterator, S::const_iterator, forward_iterator_tag);
+#endif
 
+#ifdef REPIIPP
   template 
     S& 
     S::_M_replace<C*>
     (S::iterator, S::iterator, C*, C*, forward_iterator_tag);
+#endif
   
+#ifdef REPIIPP2
   template 
     S& 
     S::_M_replace<const C*>
     (S::iterator, S::iterator, const C*, const C*, forward_iterator_tag);
+#endif
+
+#ifdef COPY
+  template
+    S::size_type  S::copy(C*, S::size_type, S::size_type) const;
+#endif
 
+#ifdef CONII
   template 
     C* 
     S::_S_construct<S::iterator>
     (S::iterator, S::iterator, const allocator<C>&);
+#endif
   
+#ifdef CONIIF
   template 
     C* 
     S::_S_construct<S::iterator>
     (S::iterator, S::iterator, const allocator<C>&, forward_iterator_tag);
+#endif
 
+#ifdef CONPPF
   template 
     C* 
     S::_S_construct<C*>
     (C*, C*, const allocator<C>&, forward_iterator_tag);
+#endif
 
+#ifdef CONPPF2
   template 
     C* 
     S::_S_construct<const C*>
     (const C*, const C*, const allocator<C>&, forward_iterator_tag);
+#endif
 
+#ifdef FIND
   // These members are explicitly specialized, and can only be in one
   // translation unit or else we get multiple copies. . . 
 #if _GLIBCPP_INSTANTIATING_CHAR
@@ -174,76 +314,77 @@
 		     _Char_traits_match<wchar_t, traits_type>(__c));
     }
 #endif
-#endif // MAIN
+#endif 
 
-#ifdef ADDSS
-template S operator+(const S&, const S&);
+#ifdef FINDC
+  template
+    S::size_type S::find(C, S::size_type) const;
 #endif
-#ifdef ADDPS
-template S operator+(const C*, const S&);
-#endif
-#ifdef ADDCS
-template S operator+(C, const S&);
-#endif
-#ifdef ADDSP
-template S operator+(const S&, const C*);
-#endif
-#ifdef ADDSC
-template S operator+(const S&, C);
-#endif
-#ifdef EQSS
-template bool operator==(const S&, const S&);
-#endif
-#ifdef EQPS
-template bool operator==(const C*, const S&);
-#endif
-#ifdef EQSP
-template bool operator==(const S&, const C*);
-#endif
-#ifdef NESS
-template bool operator!=(const S&, const S&);
-#endif
-#ifdef NEPS
-template bool operator!=(const C*, const S&);
-#endif
-#ifdef NESP
-template bool operator!=(const S&, const C*);
+
+#ifdef RFIND
+  template
+    S::size_type S::rfind(C const*, S::size_type, S::size_type) const;
 #endif
-#ifdef LTSS
-template bool operator<(const S&, const S&);
+
+#ifdef RFINDC
+  template
+    S::size_type S::rfind(C, S::size_type) const;
 #endif
-#ifdef LTPS
-template bool operator<(const C*, const S&);
+
+#ifdef FFO
+  template
+    S::size_type S::find_first_of(C const*, S::size_type, S::size_type) const;
 #endif
-#ifdef LTSP
-template bool operator<(const S&, const C*);
+
+#ifdef FLO
+  template
+    S::size_type S::find_last_of(C const*, S::size_type, S::size_type) const;
 #endif
-#ifdef GTSS
-template bool operator>(const S&, const S&);
+
+#ifdef FFNO
+  template
+    S::size_type S::find_first_not_of(
+      C const*, S::size_type, S::size_type) const;
 #endif
-#ifdef GTPS
-template bool operator>(const C*, const S&);
+
+#ifdef FLNO
+  template
+    S::size_type S::find_last_not_of(
+      C const*, S::size_type, S::size_type) const;
 #endif
-#ifdef GTSP
-template bool operator>(const S&, const C*);
+
+#ifdef FLNOC
+  template
+    S::size_type S::find_last_not_of(C, S::size_type) const;
 #endif
-#ifdef LESS
-template bool operator<=(const S&, const S&);
+
+#ifdef COMPARE
+  template
+    int S::compare(S::size_type, S::size_type, S const&) const;
 #endif
-#ifdef LEPS
-template bool operator<=(const C*, const S&);
+
+#ifdef COMPARE2
+  template
+    int S::compare(
+      S::size_type, S::size_type, S const&, S::size_type, S::size_type) const;
 #endif
-#ifdef LESP
-template bool operator<=(const S&, const C*);
+
+#ifdef COMPAREP
+  template
+    int S::compare(C const*) const;
 #endif
-#ifdef GESS
-template bool operator>=(const S&, const S&);
+
+#ifdef COMPAREP2
+  template
+    int S::compare(
+      S::size_type, S::size_type, C const*, S::size_type) const;
 #endif
-#ifdef GEPS
-template bool operator>=(const C*, const S&);
+
+#ifdef ADDPS
+template S operator+(const C*, const S&);
 #endif
-#ifdef GESP
-template bool operator>=(const S&, const C*);
+#ifdef ADDCS
+template S operator+(C, const S&);
 #endif
 #ifdef EXTRACT
 template basic_istream<C>& operator>>(basic_istream<C>&, S&);
@@ -260,18 +401,3 @@
 #endif
 
 } // std
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]