/* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2006 Robert Osfield * * This library is open source and may be redistributed and/or modified under * the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or * (at your option) any later version. The full license is in LICENSE file * included with this distribution, and on the openscenegraph.org website. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * OpenSceneGraph Public License for more details. */ //osgIntrospection - Copyright (C) 2005 Marco Jez #ifndef OSGINTROSPECTION_TYPEDCONSTRUCTORINFO_ #define OSGINTROSPECTION_TYPEDCONSTRUCTORINFO_ #include #include #include namespace osgIntrospection { template struct TypedConstructorInfo0: ConstructorInfo { TypedConstructorInfo0(const ParameterInfoList& plist, std::string briefHelp = std::string(), std::string detailedHelp = std::string()) : ConstructorInfo(typeof(C), plist, briefHelp, detailedHelp) { } Value createInstance(ValueList& /*args*/) const { return IC::create(); } }; template struct TypedConstructorInfo1: ConstructorInfo { TypedConstructorInfo1(const ParameterInfoList& plist, bool isExplicit, std::string briefHelp = std::string(), std::string detailedHelp = std::string()) : ConstructorInfo(typeof(C), plist, isExplicit, briefHelp, detailedHelp) { } Value createInstance(ValueList& args) const { ValueList newargs(1); convertArgument(args, newargs, getParameters(), 0); return IC::template create(newargs[0]); } }; template struct TypedConstructorInfo2: ConstructorInfo { TypedConstructorInfo2(const ParameterInfoList& plist, std::string briefHelp = std::string(), std::string detailedHelp = std::string()) : ConstructorInfo(typeof(C), plist, briefHelp, detailedHelp) { } Value createInstance(ValueList& args) const { ValueList newargs(2); convertArgument(args, newargs, getParameters(), 0); convertArgument(args, newargs, getParameters(), 1); return IC::template create(newargs[0], newargs[1]); } }; template struct TypedConstructorInfo3: ConstructorInfo { TypedConstructorInfo3(const ParameterInfoList& plist, std::string briefHelp = std::string(), std::string detailedHelp = std::string()) : ConstructorInfo(typeof(C), plist, briefHelp, detailedHelp) { } Value createInstance(ValueList& args) const { ValueList newargs(3); convertArgument(args, newargs, getParameters(), 0); convertArgument(args, newargs, getParameters(), 1); convertArgument(args, newargs, getParameters(), 2); return IC::template create(newargs[0], newargs[1], newargs[2]); } }; template struct TypedConstructorInfo4: ConstructorInfo { TypedConstructorInfo4(const ParameterInfoList& plist, std::string briefHelp = std::string(), std::string detailedHelp = std::string()) : ConstructorInfo(typeof(C), plist, briefHelp, detailedHelp) { } Value createInstance(ValueList& args) const { ValueList newargs(4); convertArgument(args, newargs, getParameters(), 0); convertArgument(args, newargs, getParameters(), 1); convertArgument(args, newargs, getParameters(), 2); convertArgument(args, newargs, getParameters(), 3); return IC::template create(newargs[0], newargs[1], newargs[2], newargs[3]); } }; template struct TypedConstructorInfo5: ConstructorInfo { TypedConstructorInfo5(const ParameterInfoList& plist, std::string briefHelp = std::string(), std::string detailedHelp = std::string()) : ConstructorInfo(typeof(C), plist, briefHelp, detailedHelp) { } Value createInstance(ValueList& args) const { ValueList newargs(5); convertArgument(args, newargs, getParameters(), 0); convertArgument(args, newargs, getParameters(), 1); convertArgument(args, newargs, getParameters(), 2); convertArgument(args, newargs, getParameters(), 3); convertArgument(args, newargs, getParameters(), 4); return IC::template create(newargs[0], newargs[1], newargs[2], newargs[3], newargs[4]); } }; template struct TypedConstructorInfo6: ConstructorInfo { TypedConstructorInfo6(const ParameterInfoList& plist, std::string briefHelp = std::string(), std::string detailedHelp = std::string()) : ConstructorInfo(typeof(C), plist, briefHelp, detailedHelp) { } Value createInstance(ValueList& args) const { ValueList newargs(6); convertArgument(args, newargs, getParameters(), 0); convertArgument(args, newargs, getParameters(), 1); convertArgument(args, newargs, getParameters(), 2); convertArgument(args, newargs, getParameters(), 3); convertArgument(args, newargs, getParameters(), 4); convertArgument(args, newargs, getParameters(), 5); return IC::template create(newargs[0], newargs[1], newargs[2], newargs[3], newargs[4], newargs[5]); } }; template struct TypedConstructorInfo7: ConstructorInfo { TypedConstructorInfo7(const ParameterInfoList& plist, std::string briefHelp = std::string(), std::string detailedHelp = std::string()) : ConstructorInfo(typeof(C), plist, briefHelp, detailedHelp) { } Value createInstance(ValueList& args) const { ValueList newargs(7); convertArgument(args, newargs, getParameters(), 0); convertArgument(args, newargs, getParameters(), 1); convertArgument(args, newargs, getParameters(), 2); convertArgument(args, newargs, getParameters(), 3); convertArgument(args, newargs, getParameters(), 4); convertArgument(args, newargs, getParameters(), 5); convertArgument(args, newargs, getParameters(), 6); return IC::template create(newargs[0], newargs[1], newargs[2], newargs[3], newargs[4], newargs[5], newargs[6]); } }; template struct TypedConstructorInfo8: ConstructorInfo { TypedConstructorInfo8(const ParameterInfoList& plist, std::string briefHelp = std::string(), std::string detailedHelp = std::string()) : ConstructorInfo(typeof(C), plist, briefHelp, detailedHelp) { } Value createInstance(ValueList& args) const { ValueList newargs(8); convertArgument(args, newargs, getParameters(), 0); convertArgument(args, newargs, getParameters(), 1); convertArgument(args, newargs, getParameters(), 2); convertArgument(args, newargs, getParameters(), 3); convertArgument(args, newargs, getParameters(), 4); convertArgument(args, newargs, getParameters(), 5); convertArgument(args, newargs, getParameters(), 6); convertArgument(args, newargs, getParameters(), 7); return IC::template create(newargs[0], newargs[1], newargs[2], newargs[3], newargs[4], newargs[5], newargs[6], newargs[7]); } }; template struct TypedConstructorInfo9: ConstructorInfo { TypedConstructorInfo9(const ParameterInfoList& plist, std::string briefHelp = std::string(), std::string detailedHelp = std::string()) : ConstructorInfo(typeof(C), plist, briefHelp, detailedHelp) { } Value createInstance(ValueList& args) const { ValueList newargs(9); convertArgument(args, newargs, getParameters(), 0); convertArgument(args, newargs, getParameters(), 1); convertArgument(args, newargs, getParameters(), 2); convertArgument(args, newargs, getParameters(), 3); convertArgument(args, newargs, getParameters(), 4); convertArgument(args, newargs, getParameters(), 5); convertArgument(args, newargs, getParameters(), 6); convertArgument(args, newargs, getParameters(), 7); convertArgument(args, newargs, getParameters(), 8); return IC::template create(newargs[0], newargs[1], newargs[2], newargs[3], newargs[4], newargs[5], newargs[6], newargs[7], newargs[8]); } }; template struct TypedConstructorInfo10: ConstructorInfo { TypedConstructorInfo10(const ParameterInfoList& plist, std::string briefHelp = std::string(), std::string detailedHelp = std::string()) : ConstructorInfo(typeof(C), plist, briefHelp, detailedHelp) { } Value createInstance(ValueList& args) const { ValueList newargs(10); convertArgument(args, newargs, getParameters(), 0); convertArgument(args, newargs, getParameters(), 1); convertArgument(args, newargs, getParameters(), 2); convertArgument(args, newargs, getParameters(), 3); convertArgument(args, newargs, getParameters(), 4); convertArgument(args, newargs, getParameters(), 5); convertArgument(args, newargs, getParameters(), 6); convertArgument(args, newargs, getParameters(), 7); convertArgument(args, newargs, getParameters(), 8); convertArgument(args, newargs, getParameters(), 9); return IC::template create(newargs[0], newargs[1], newargs[2], newargs[3], newargs[4], newargs[5], newargs[6], newargs[7], newargs[8], newargs[9]); } }; template struct TypedConstructorInfo11: ConstructorInfo { TypedConstructorInfo11(const ParameterInfoList& plist, std::string briefHelp = std::string(), std::string detailedHelp = std::string()) : ConstructorInfo(typeof(C), plist, briefHelp, detailedHelp) { } Value createInstance(ValueList& args) const { ValueList newargs(11); convertArgument(args, newargs, getParameters(), 0); convertArgument(args, newargs, getParameters(), 1); convertArgument(args, newargs, getParameters(), 2); convertArgument(args, newargs, getParameters(), 3); convertArgument(args, newargs, getParameters(), 4); convertArgument(args, newargs, getParameters(), 5); convertArgument(args, newargs, getParameters(), 6); convertArgument(args, newargs, getParameters(), 7); convertArgument(args, newargs, getParameters(), 8); convertArgument(args, newargs, getParameters(), 9); convertArgument(args, newargs, getParameters(), 10); return IC::template create(newargs[0], newargs[1], newargs[2], newargs[3], newargs[4], newargs[5], newargs[6], newargs[7], newargs[8], newargs[9], newargs[10]); } }; template struct TypedConstructorInfo12: ConstructorInfo { TypedConstructorInfo12(const ParameterInfoList& plist, std::string briefHelp = std::string(), std::string detailedHelp = std::string()) : ConstructorInfo(typeof(C), plist, briefHelp, detailedHelp) { } Value createInstance(ValueList& args) const { ValueList newargs(12); convertArgument(args, newargs, getParameters(), 0); convertArgument(args, newargs, getParameters(), 1); convertArgument(args, newargs, getParameters(), 2); convertArgument(args, newargs, getParameters(), 3); convertArgument(args, newargs, getParameters(), 4); convertArgument(args, newargs, getParameters(), 5); convertArgument(args, newargs, getParameters(), 6); convertArgument(args, newargs, getParameters(), 7); convertArgument(args, newargs, getParameters(), 8); convertArgument(args, newargs, getParameters(), 9); convertArgument(args, newargs, getParameters(), 10); convertArgument(args, newargs, getParameters(), 11); return IC::template create(newargs[0], newargs[1], newargs[2], newargs[3], newargs[4], newargs[5], newargs[6], newargs[7], newargs[8], newargs[9], newargs[10], newargs[11]); } }; template struct TypedConstructorInfo13: ConstructorInfo { TypedConstructorInfo13(const ParameterInfoList& plist, std::string briefHelp = std::string(), std::string detailedHelp = std::string()) : ConstructorInfo(typeof(C), plist, briefHelp, detailedHelp) { } Value createInstance(ValueList& args) const { ValueList newargs(13); convertArgument(args, newargs, getParameters(), 0); convertArgument(args, newargs, getParameters(), 1); convertArgument(args, newargs, getParameters(), 2); convertArgument(args, newargs, getParameters(), 3); convertArgument(args, newargs, getParameters(), 4); convertArgument(args, newargs, getParameters(), 5); convertArgument(args, newargs, getParameters(), 6); convertArgument(args, newargs, getParameters(), 7); convertArgument(args, newargs, getParameters(), 8); convertArgument(args, newargs, getParameters(), 9); convertArgument(args, newargs, getParameters(), 10); convertArgument(args, newargs, getParameters(), 11); convertArgument(args, newargs, getParameters(), 12); return IC::template create(newargs[0], newargs[1], newargs[2], newargs[3], newargs[4], newargs[5], newargs[6], newargs[7], newargs[8], newargs[9], newargs[10], newargs[11], newargs[12]); } }; template struct TypedConstructorInfo14: ConstructorInfo { TypedConstructorInfo14(const ParameterInfoList& plist, std::string briefHelp = std::string(), std::string detailedHelp = std::string()) : ConstructorInfo(typeof(C), plist, briefHelp, detailedHelp) { } Value createInstance(ValueList& args) const { ValueList newargs(14); convertArgument(args, newargs, getParameters(), 0); convertArgument(args, newargs, getParameters(), 1); convertArgument(args, newargs, getParameters(), 2); convertArgument(args, newargs, getParameters(), 3); convertArgument(args, newargs, getParameters(), 4); convertArgument(args, newargs, getParameters(), 5); convertArgument(args, newargs, getParameters(), 6); convertArgument(args, newargs, getParameters(), 7); convertArgument(args, newargs, getParameters(), 8); convertArgument(args, newargs, getParameters(), 9); convertArgument(args, newargs, getParameters(), 10); convertArgument(args, newargs, getParameters(), 11); convertArgument(args, newargs, getParameters(), 12); convertArgument(args, newargs, getParameters(), 13); return IC::template create(newargs[0], newargs[1], newargs[2], newargs[3], newargs[4], newargs[5], newargs[6], newargs[7], newargs[8], newargs[9], newargs[10], newargs[11], newargs[12], newargs[13]); } }; template struct TypedConstructorInfo15: ConstructorInfo { TypedConstructorInfo15(const ParameterInfoList& plist, std::string briefHelp = std::string(), std::string detailedHelp = std::string()) : ConstructorInfo(typeof(C), plist, briefHelp, detailedHelp) { } Value createInstance(ValueList& args) const { ValueList newargs(15); convertArgument(args, newargs, getParameters(), 0); convertArgument(args, newargs, getParameters(), 1); convertArgument(args, newargs, getParameters(), 2); convertArgument(args, newargs, getParameters(), 3); convertArgument(args, newargs, getParameters(), 4); convertArgument(args, newargs, getParameters(), 5); convertArgument(args, newargs, getParameters(), 6); convertArgument(args, newargs, getParameters(), 7); convertArgument(args, newargs, getParameters(), 8); convertArgument(args, newargs, getParameters(), 9); convertArgument(args, newargs, getParameters(), 10); convertArgument(args, newargs, getParameters(), 11); convertArgument(args, newargs, getParameters(), 12); convertArgument(args, newargs, getParameters(), 13); convertArgument(args, newargs, getParameters(), 14); return IC::template create(newargs[0], newargs[1], newargs[2], newargs[3], newargs[4], newargs[5], newargs[6], newargs[7], newargs[8], newargs[9], newargs[10], newargs[11], newargs[12], newargs[13], newargs[14]); } }; template struct TypedConstructorInfo16: ConstructorInfo { TypedConstructorInfo16(const ParameterInfoList& plist, std::string briefHelp = std::string(), std::string detailedHelp = std::string()) : ConstructorInfo(typeof(C), plist, briefHelp, detailedHelp) { } Value createInstance(ValueList& args) const { ValueList newargs(16); convertArgument(args, newargs, getParameters(), 0); convertArgument(args, newargs, getParameters(), 1); convertArgument(args, newargs, getParameters(), 2); convertArgument(args, newargs, getParameters(), 3); convertArgument(args, newargs, getParameters(), 4); convertArgument(args, newargs, getParameters(), 5); convertArgument(args, newargs, getParameters(), 6); convertArgument(args, newargs, getParameters(), 7); convertArgument(args, newargs, getParameters(), 8); convertArgument(args, newargs, getParameters(), 9); convertArgument(args, newargs, getParameters(), 10); convertArgument(args, newargs, getParameters(), 11); convertArgument(args, newargs, getParameters(), 12); convertArgument(args, newargs, getParameters(), 13); convertArgument(args, newargs, getParameters(), 14); convertArgument(args, newargs, getParameters(), 15); return IC::template create(newargs[0], newargs[1], newargs[2], newargs[3], newargs[4], newargs[5], newargs[6], newargs[7], newargs[8], newargs[9], newargs[10], newargs[11], newargs[12], newargs[13], newargs[14], newargs[15]); } }; } #endif