aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Framework
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Framework')
-rw-r--r--OpenSim/Framework/Util.cs38
1 files changed, 38 insertions, 0 deletions
diff --git a/OpenSim/Framework/Util.cs b/OpenSim/Framework/Util.cs
index 724e38b..aadcdc8 100644
--- a/OpenSim/Framework/Util.cs
+++ b/OpenSim/Framework/Util.cs
@@ -916,6 +916,44 @@ namespace OpenSim.Framework
916 916
917 return val; 917 return val;
918 } 918 }
919
920 /// <summary>
921 /// Gets the value of a configuration variable by looking into
922 /// multiple sections in order. The latter sections overwrite
923 /// any values previously found.
924 /// </summary>
925 /// <typeparam name="T">Type of the variable</typeparam>
926 /// <param name="config">The configuration object</param>
927 /// <param name="varname">The configuration variable</param>
928 /// <param name="sections">Ordered sequence of sections to look at</param>
929 /// <returns></returns>
930 public static T GetConfigVarFromSections<T>(IConfigSource config, string varname, string[] sections)
931 {
932 object val = default(T);
933 foreach (string section in sections)
934 {
935 IConfig cnf = config.Configs[section];
936 if (cnf == null)
937 continue;
938
939 if (typeof(T) == typeof(String))
940 {
941 if (val == null) // no null strings, please
942 val = string.Empty;
943 val = cnf.GetString(varname, (string)val);
944 }
945 else if (typeof(T) == typeof(Boolean))
946 val = cnf.GetBoolean(varname, (bool)val);
947 else if (typeof(T) == typeof(Int32))
948 val = cnf.GetInt(varname, (int)val);
949 else if (typeof(T) == typeof(float))
950 val = cnf.GetFloat(varname, (int)val);
951 else
952 m_log.WarnFormat("[UTIL]: Unhandled type {0}", typeof(T));
953 }
954 return (T)val;
955 }
956
919 #endregion 957 #endregion
920 958
921 public static float Clip(float x, float min, float max) 959 public static float Clip(float x, float min, float max)