You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
76 lines
3.8 KiB
76 lines
3.8 KiB
18 years ago
|
# --- T2-COPYRIGHT-NOTE-BEGIN ---
|
||
|
# This copyright note is auto-generated by ./scripts/Create-CopyPatch.
|
||
|
#
|
||
|
# T2 SDE: package/.../rezound/gcc41-hacky.patch
|
||
|
# Copyright (C) 2006 The T2 SDE Project
|
||
|
#
|
||
|
# More information can be found in the files COPYING and README.
|
||
|
#
|
||
|
# This patch file is dual-licensed. It is available under the license the
|
||
|
# patched project is licensed under, as long as it is an OpenSource license
|
||
|
# as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms
|
||
|
# of the GNU General Public License as published by the Free Software
|
||
|
# Foundation; either version 2 of the License, or (at your option) any later
|
||
|
# version.
|
||
|
# --- T2-COPYRIGHT-NOTE-END ---
|
||
|
|
||
|
Well, this part is hacky, gcc41 does not seem to match against the provided
|
||
|
std::vector<> specialization. After some trial 'n error I decided to take
|
||
|
a shortpath and let the default work on any contrainer a-like type.
|
||
|
|
||
|
--- rezound-0.12.2beta/src/misc/CNestedDataFile/anytype.h.vanilla 2006-03-05 23:45:44.856469500 +0100
|
||
|
+++ rezound-0.12.2beta/src/misc/CNestedDataFile/anytype.h 2006-03-06 00:09:06.584072000 +0100
|
||
|
@@ -60,7 +60,26 @@
|
||
|
// or we could leave these unimplemented to get a linker error instead (that's what I have to do with gcc>=3.4
|
||
|
// /* the reason I haven't made string_to_anytype return a reference is because currently, it's probably not a big deal for most types.. and with string, we'd be making a copy into the ret parameter if I implemented it that way anyway.. perhaps I could remove the return type all together and always use the ret parameter to get back the data */
|
||
|
template<typename Type> static const Type string_to_anytype(const string &str,Type &ret) ;// { no_specialization_of_this_template_with_the_given_type; }
|
||
|
-template<typename Type> static const string anytype_to_string(const Type &any) ;// { no_specialization_of_this_template_with_the_given_type; }
|
||
|
+
|
||
|
+template<typename Type> static const string anytype_to_string(const Type &any)
|
||
|
+/*
|
||
|
+// I really wished that I didn't have to explicitly use 'vector' in the definition, I'd have like to use any container with an iterator interface
|
||
|
+template<class Type> __attribute__((always_inline)) inline const string anytype_to_string(const vector<Type> &any) */
|
||
|
+{
|
||
|
+ string s;
|
||
|
+ size_t l=any.size();
|
||
|
+ s="{";
|
||
|
+ for(size_t t=0;t<l;t++)
|
||
|
+ {
|
||
|
+ // leaving type in case it's not able to deduce aruments and chooses the default template implemenation
|
||
|
+ // if I knew how to constrain the original definition of the template, I would make it fully constrained
|
||
|
+ s+=anytype_to_string(any[t]);
|
||
|
+ if(t!=(l-1))
|
||
|
+ s+=",";
|
||
|
+ }
|
||
|
+ return s+"}";
|
||
|
+}
|
||
|
+
|
||
|
|
||
|
|
||
|
|
||
|
@@ -146,24 +165,6 @@
|
||
|
template<> static const string anytype_to_string<long double>(const long double &any) { if(isnan(any)) return "0"; else { ostringstream ss; if(any>999999.0) {ss.setf(ios::scientific); ss.width(0); ss.precision(12); ss.fill(' '); } else {ss.setf(ios::fixed); ss.precision(6); ss.fill(' '); } ss << any; return istring(ss.str()).trim(); } }
|
||
|
|
||
|
|
||
|
-// I really wished that I didn't have to explicitly use 'vector' in the definition, I'd have like to use any container with an iterator interface
|
||
|
-template<class Type> static const string anytype_to_string(const vector<Type> &any)
|
||
|
-{
|
||
|
- string s;
|
||
|
- size_t l=any.size();
|
||
|
- s="{";
|
||
|
- for(size_t t=0;t<l;t++)
|
||
|
- {
|
||
|
- // leaving type in case it's not able to deduce aruments and chooses the default template implemenation
|
||
|
- // if I knew how to constrain the original definition of the template, I would make it fully constrained
|
||
|
- s+=anytype_to_string(any[t]);
|
||
|
- if(t!=(l-1))
|
||
|
- s+=",";
|
||
|
- }
|
||
|
- return s+"}";
|
||
|
-}
|
||
|
-
|
||
|
-
|
||
|
// ----------------------------------------------------------------------------
|
||
|
|
||
|
namespace s2at // s2at signifies string_to_anytype/anytype_to_string
|