clean

clean

--- CSharpGL/OpenGLAPI/OpenGL_Extensions.cs
+++ CSharpGL/OpenGLAPI/OpenGL_Extensions.cs
@@ -213,140 +213,140 @@
         ///// <param name="pname"></param>
         ///// <param name="parameters"></param>
         //public delegate void glConvolutionParameteriv(uint target, uint pname, int[] parameters);
-        /// <summary>
-        ///
-        /// </summary>
-        /// <param name="target"></param>
-        /// <param name="internalformat"></param>
-        /// <param name="x"></param>
-        /// <param name="y"></param>
-        /// <param name="width"></param>
-        public delegate void glCopyConvolutionFilter1D(uint target, uint internalformat, int x, int y, int width);
-        /// <summary>
-        ///
-        /// </summary>
-        /// <param name="target"></param>
-        /// <param name="internalformat"></param>
-        /// <param name="x"></param>
-        /// <param name="y"></param>
-        /// <param name="width"></param>
-        /// <param name="height"></param>
-        public delegate void glCopyConvolutionFilter2D(uint target, uint internalformat, int x, int y, int width, int height);
-        /// <summary>
-        ///
-        /// </summary>
-        /// <param name="target"></param>
-        /// <param name="format"></param>
-        /// <param name="type"></param>
-        /// <param name="image"></param>
-        public delegate void glGetConvolutionFilter(uint target, uint format, uint type, IntPtr image);
-        /// <summary>
-        ///
-        /// </summary>
-        /// <param name="target"></param>
-        /// <param name="pname"></param>
-        /// <param name="parameters"></param>
-        public delegate void glGetConvolutionParameterfv(uint target, uint pname, float[] parameters);
-        /// <summary>
-        ///
-        /// </summary>
-        /// <param name="target"></param>
-        /// <param name="pname"></param>
-        /// <param name="parameters"></param>
-        public delegate void glGetConvolutionParameteriv(uint target, uint pname, int[] parameters);
-        /// <summary>
-        ///
-        /// </summary>
-        /// <param name="target"></param>
-        /// <param name="format"></param>
-        /// <param name="type"></param>
-        /// <param name="row"></param>
-        /// <param name="column"></param>
-        /// <param name="span"></param>
-        public delegate void glGetSeparableFilter(uint target, uint format, uint type, IntPtr row, IntPtr column, IntPtr span);
-        /// <summary>
-        ///
-        /// </summary>
-        /// <param name="target"></param>
-        /// <param name="internalformat"></param>
-        /// <param name="width"></param>
-        /// <param name="height"></param>
-        /// <param name="format"></param>
-        /// <param name="type"></param>
-        /// <param name="row"></param>
-        /// <param name="column"></param>
-        public delegate void glSeparableFilter2D(uint target, uint internalformat, int width, int height, uint format, uint type, IntPtr row, IntPtr column);
-        /// <summary>
-        ///
-        /// </summary>
-        /// <param name="target"></param>
-        /// <param name="reset"></param>
-        /// <param name="format"></param>
-        /// <param name="type"></param>
-        /// <param name="values"></param>
-        public delegate void glGetHistogram(uint target, bool reset, uint format, uint type, IntPtr values);
-        /// <summary>
-        ///
-        /// </summary>
-        /// <param name="target"></param>
-        /// <param name="pname"></param>
-        /// <param name="parameters"></param>
-        public delegate void glGetHistogramParameterfv(uint target, uint pname, float[] parameters);
-        /// <summary>
-        ///
-        /// </summary>
-        /// <param name="target"></param>
-        /// <param name="pname"></param>
-        /// <param name="parameters"></param>
-        public delegate void glGetHistogramParameteriv(uint target, uint pname, int[] parameters);
-        /// <summary>
-        ///
-        /// </summary>
-        /// <param name="target"></param>
-        /// <param name="reset"></param>
-        /// <param name="format"></param>
-        /// <param name="type"></param>
-        /// <param name="values"></param>
-        public delegate void glGetMinmax(uint target, bool reset, uint format, uint type, IntPtr values);
-        /// <summary>
-        ///
-        /// </summary>
-        /// <param name="target"></param>
-        /// <param name="pname"></param>
-        /// <param name="parameters"></param>
-        public delegate void glGetMinmaxParameterfv(uint target, uint pname, float[] parameters);
-        /// <summary>
-        ///
-        /// </summary>
-        /// <param name="target"></param>
-        /// <param name="pname"></param>
-        /// <param name="parameters"></param>
-        public delegate void glGetMinmaxParameteriv(uint target, uint pname, int[] parameters);
-        /// <summary>
-        ///
-        /// </summary>
-        /// <param name="target"></param>
-        /// <param name="width"></param>
-        /// <param name="internalformat"></param>
-        /// <param name="sink"></param>
-        public delegate void glHistogram(uint target, int width, uint internalformat, bool sink);
-        /// <summary>
-        ///
-        /// </summary>
-        /// <param name="target"></param>
-        /// <param name="internalformat"></param>
-        /// <param name="sink"></param>
-        public delegate void glMinmax(uint target, uint internalformat, bool sink);
-        /// <summary>
-        ///
-        /// </summary>
-        /// <param name="target"></param>
-        public delegate void glResetHistogram(uint target);
-        /// <summary>
-        ///
-        /// </summary>
-        /// <param name="target"></param>
-        public delegate void glResetMinmax(uint target);
+        ///// <summary>
+        /////
+        ///// </summary>
+        ///// <param name="target"></param>
+        ///// <param name="internalformat"></param>
+        ///// <param name="x"></param>
+        ///// <param name="y"></param>
+        ///// <param name="width"></param>
+        //public delegate void glCopyConvolutionFilter1D(uint target, uint internalformat, int x, int y, int width);
+        ///// <summary>
+        /////
+        ///// </summary>
+        ///// <param name="target"></param>
+        ///// <param name="internalformat"></param>
+        ///// <param name="x"></param>
+        ///// <param name="y"></param>
+        ///// <param name="width"></param>
+        ///// <param name="height"></param>
+        //public delegate void glCopyConvolutionFilter2D(uint target, uint internalformat, int x, int y, int width, int height);
+        ///// <summary>
+        /////
+        ///// </summary>
+        ///// <param name="target"></param>
+        ///// <param name="format"></param>
+        ///// <param name="type"></param>
+        ///// <param name="image"></param>
+        //public delegate void glGetConvolutionFilter(uint target, uint format, uint type, IntPtr image);
+        ///// <summary>
+        /////
+        ///// </summary>
+        ///// <param name="target"></param>
+        ///// <param name="pname"></param>
+        ///// <param name="parameters"></param>
+        //public delegate void glGetConvolutionParameterfv(uint target, uint pname, float[] parameters);
+        ///// <summary>
+        /////
+        ///// </summary>
+        ///// <param name="target"></param>
+        ///// <param name="pname"></param>
+        ///// <param name="parameters"></param>
+        //public delegate void glGetConvolutionParameteriv(uint target, uint pname, int[] parameters);
+        ///// <summary>
+        /////
+        ///// </summary>
+        ///// <param name="target"></param>
+        ///// <param name="format"></param>
+        ///// <param name="type"></param>
+        ///// <param name="row"></param>
+        ///// <param name="column"></param>
+        ///// <param name="span"></param>
+        //public delegate void glGetSeparableFilter(uint target, uint format, uint type, IntPtr row, IntPtr column, IntPtr span);
+        ///// <summary>
+        /////
+        ///// </summary>
+        ///// <param name="target"></param>
+        ///// <param name="internalformat"></param>
+        ///// <param name="width"></param>
+        ///// <param name="height"></param>
+        ///// <param name="format"></param>
+        ///// <param name="type"></param>
+        ///// <param name="row"></param>
+        ///// <param name="column"></param>
+        //public delegate void glSeparableFilter2D(uint target, uint internalformat, int width, int height, uint format, uint type, IntPtr row, IntPtr column);
+        ///// <summary>
+        /////
+        ///// </summary>
+        ///// <param name="target"></param>
+        ///// <param name="reset"></param>
+        ///// <param name="format"></param>
+        ///// <param name="type"></param>
+        ///// <param name="values"></param>
+        //public delegate void glGetHistogram(uint target, bool reset, uint format, uint type, IntPtr values);
+        ///// <summary>
+        /////
+        ///// </summary>
+        ///// <param name="target"></param>
+        ///// <param name="pname"></param>
+        ///// <param name="parameters"></param>
+        //public delegate void glGetHistogramParameterfv(uint target, uint pname, float[] parameters);
+        ///// <summary>
+        /////
+        ///// </summary>
+        ///// <param name="target"></param>
+        ///// <param name="pname"></param>
+        ///// <param name="parameters"></param>
+        //public delegate void glGetHistogramParameteriv(uint target, uint pname, int[] parameters);
+        ///// <summary>
+        /////
+        ///// </summary>
+        ///// <param name="target"></param>
+        ///// <param name="reset"></param>
+        ///// <param name="format"></param>
+        ///// <param name="type"></param>
+        ///// <param name="values"></param>
+        //public delegate void glGetMinmax(uint target, bool reset, uint format, uint type, IntPtr values);
+        ///// <summary>
+        /////
+        ///// </summary>
+        ///// <param name="target"></param>
+        ///// <param name="pname"></param>
+        ///// <param name="parameters"></param>
+        //public delegate void glGetMinmaxParameterfv(uint target, uint pname, float[] parameters);
+        ///// <summary>
+        /////
+        ///// </summary>
+        ///// <param name="target"></param>
+        ///// <param name="pname"></param>
+        ///// <param name="parameters"></param>
+        //public delegate void glGetMinmaxParameteriv(uint target, uint pname, int[] parameters);
+        ///// <summary>
+        /////
+        ///// </summary>
+        ///// <param name="target"></param>
+        ///// <param name="width"></param>
+        ///// <param name="internalformat"></param>
+        ///// <param name="sink"></param>
+        //public delegate void glHistogram(uint target, int width, uint internalformat, bool sink);
+        ///// <summary>
+        /////
+        ///// </summary>
+        ///// <param name="target"></param>
+        ///// <param name="internalformat"></param>
+        ///// <param name="sink"></param>
+        //public delegate void glMinmax(uint target, uint internalformat, bool sink);
+        ///// <summary>
+        /////
+        ///// </summary>
+        ///// <param name="target"></param>
+        //public delegate void glResetHistogram(uint target);
+        ///// <summary>
+        /////
+        ///// </summary>
+        ///// <param name="target"></param>
+        //public delegate void glResetMinmax(uint target);

         //  Constants
         /// <summary>
@@ -504,336 +504,336 @@
         /// </summary>
         /// <param name="texture"></param>
         public delegate void glActiveTexture(uint texture);
-        /// <summary>
-        ///
-        /// </summary>
-        /// <param name="value"></param>
-        /// <param name="invert"></param>
-        public delegate void glSampleCoverage(float value, bool invert);
-        /// <summary>
-        ///
-        /// </summary>
-        /// <param name="target"></param>
-        /// <param name="level"></param>
-        /// <param name="internalformat"></param>
-        /// <param name="width"></param>
-        /// <param name="height"></param>
-        /// <param name="depth"></param>
-        /// <param name="border"></param>
-        /// <param name="imageSize"></param>
-        /// <param name="data"></param>
-        public delegate void glCompressedTexImage3D(uint target, int level, uint internalformat, int width, int height, int depth, int border, int imageSize, IntPtr data);
-        /// <summary>
-        ///
-        /// </summary>
-        /// <param name="target"></param>
-        /// <param name="level"></param>
-        /// <param name="internalformat"></param>
-        /// <param name="width"></param>
-        /// <param name="height"></param>
-        /// <param name="border"></param>
-        /// <param name="imageSize"></param>
-        /// <param name="data"></param>
-        public delegate void glCompressedTexImage2D(uint target, int level, uint internalformat, int width, int height, int border, int imageSize, IntPtr data);
-        /// <summary>
-        ///
-        /// </summary>
-        /// <param name="target"></param>
-        /// <param name="level"></param>
-        /// <param name="internalformat"></param>
-        /// <param name="width"></param>
-        /// <param name="border"></param>
-        /// <param name="imageSize"></param>
-        /// <param name="data"></param>
-        public delegate void glCompressedTexImage1D(uint target, int level, uint internalformat, int width, int border, int imageSize, IntPtr data);
-        /// <summary>
-        ///
-        /// </summary>
-        /// <param name="target"></param>
-        /// <param name="level"></param>
-        /// <param name="xoffset"></param>
-        /// <param name="yoffset"></param>
-        /// <param name="zoffset"></param>
-        /// <param name="width"></param>
-        /// <param name="height"></param>
-        /// <param name="depth"></param>
-        /// <param name="format"></param>
-        /// <param name="imageSize"></param>
-        /// <param name="data"></param>
-        public delegate void glCompressedTexSubImage3D(uint target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, uint format, int imageSize, IntPtr data);
-        /// <summary>
-        ///
-        /// </summary>
-        /// <param name="target"></param>
-        /// <param name="level"></param>
-        /// <param name="xoffset"></param>
-        /// <param name="yoffset"></param>
-        /// <param name="width"></param>
-        /// <param name="height"></param>
-        /// <param name="format"></param>
-        /// <param name="imageSize"></param>
-        /// <param name="data"></param>
-        public delegate void glCompressedTexSubImage2D(uint target, int level, int xoffset, int yoffset, int width, int height, uint format, int imageSize, IntPtr data);
-        /// <summary>
-        ///
-        /// </summary>
-        /// <param name="target"></param>
-        /// <param name="level"></param>
-        /// <param name="xoffset"></param>
-        /// <param name="width"></param>
-        /// <param name="format"></param>
-        /// <param name="imageSize"></param>
-        /// <param name="data"></param>
-        public delegate void glCompressedTexSubImage1D(uint target, int level, int xoffset, int width, uint format, int imageSize, IntPtr data);
-        /// <summary>
-        ///
-        /// </summary>
-        /// <param name="target"></param>
-        /// <param name="level"></param>
-        /// <param name="img"></param>
-        public delegate void glGetCompressedTexImage(uint target, int level, IntPtr img);
-
-        /// <summary>
-        ///
-        /// </summary>
-        /// <param name="texture"></param>
-        public delegate void glClientActiveTexture(uint texture);
-        /// <summary>
-        ///
-        /// </summary>
-        /// <param name="target"></param>
-        /// <param name="s"></param>
-        public delegate void glMultiTexCoord1d(uint target, double s);
-        /// <summary>
-        ///
-        /// </summary>
-        /// <param name="target"></param>
-        /// <param name="v"></param>
-        public delegate void glMultiTexCoord1dv(uint target, double[] v);
-        /// <summary>
-        ///
-        /// </summary>
-        /// <param name="target"></param>
-        /// <param name="s"></param>
-        public delegate void glMultiTexCoord1f(uint target, float s);
-        /// <summary>
-        ///
-        /// </summary>
-        /// <param name="target"></param>
-        /// <param name="v"></param>
-        public delegate void glMultiTexCoord1fv(uint target, float[] v);
-        /// <summary>
-        ///
-        /// </summary>
-        /// <param name="target"></param>
-        /// <param name="s"></param>
-        public delegate void glMultiTexCoord1i(uint target, int s);
-        /// <summary>
-        ///
-        /// </summary>
-        /// <param name="target"></param>
-        /// <param name="v"></param>
-        public delegate void glMultiTexCoord1iv(uint target, int[] v);
-        /// <summary>
-        ///
-        /// </summary>
-        /// <param name="target"></param>
-        /// <param name="s"></param>
-        public delegate void glMultiTexCoord1s(uint target, short s);
-        /// <summary>
-        ///
-        /// </summary>
-        /// <param name="target"></param>
-        /// <param name="v"></param>
-        public delegate void glMultiTexCoord1sv(uint target, short[] v);
-        /// <summary>
-        ///
-        /// </summary>
-        /// <param name="target"></param>
-        /// <param name="s"></param>
-        /// <param name="t"></param>
-        public delegate void glMultiTexCoord2d(uint target, double s, double t);
-        /// <summary>
-        ///
-        /// </summary>
-        /// <param name="target"></param>
-        /// <param name="v"></param>
-        public delegate void glMultiTexCoord2dv(uint target, double[] v);
-        /// <summary>
-        ///
-        /// </summary>
-        /// <param name="target"></param>
-        /// <param name="s"></param>
-        /// <param name="t"></param>
-        public delegate void glMultiTexCoord2f(uint target, float s, float t);
-        /// <summary>
-        ///
-        /// </summary>
-        /// <param name="target"></param>
-        /// <param name="v"></param>
-        public delegate void glMultiTexCoord2fv(uint target, float[] v);
-        /// <summary>
-        ///
-        /// </summary>
-        /// <param name="target"></param>
-        /// <param name="s"></param>
-        /// <param name="t"></param>
-        public delegate void glMultiTexCoord2i(uint target, int s, int t);
-        /// <summary>
-        ///
-        /// </summary>
-        /// <param name="target"></param>
-        /// <param name="v"></param>
-        public delegate void glMultiTexCoord2iv(uint target, int[] v);
-        /// <summary>
-        ///
-        /// </summary>
-        /// <param name="target"></param>
-        /// <param name="s"></param>
-        /// <param name="t"></param>
-        public delegate void glMultiTexCoord2s(uint target, short s, short t);
-        /// <summary>
-        ///
-        /// </summary>
-        /// <param name="target"></param>
-        /// <param name="v"></param>
-        public delegate void glMultiTexCoord2sv(uint target, short[] v);
-        /// <summary>
-        ///
-        /// </summary>
-        /// <param name="target"></param>
-        /// <param name="s"></param>
-        /// <param name="t"></param>
-        /// <param name="r"></param>
-        public delegate void glMultiTexCoord3d(uint target, double s, double t, double r);
-        /// <summary>
-        ///
-        /// </summary>
-        /// <param name="target"></param>
-        /// <param name="v"></param>
-        public delegate void glMultiTexCoord3dv(uint target, double[] v);
-        /// <summary>
-        ///
-        /// </summary>
-        /// <param name="target"></param>
-        /// <param name="s"></param>
-        /// <param name="t"></param>
-        /// <param name="r"></param>
-        public delegate void glMultiTexCoord3f(uint target, float s, float t, float r);
-        /// <summary>
-        ///
-        /// </summary>
-        /// <param name="target"></param>
-        /// <param name="v"></param>
-        public delegate void glMultiTexCoord3fv(uint target, float[] v);
-        /// <summary>
-        ///
-        /// </summary>
-        /// <param name="target"></param>
-        /// <param name="s"></param>
-        /// <param name="t"></param>
-        /// <param name="r"></param>
-        public delegate void glMultiTexCoord3i(uint target, int s, int t, int r);
-        /// <summary>
-        ///
-        /// </summary>
-        /// <param name="target"></param>
-        /// <param name="v"></param>
-        public delegate void glMultiTexCoord3iv(uint target, int[] v);
-        /// <summary>
-        ///
-        /// </summary>
-        /// <param name="target"></param>
-        /// <param name="s"></param>
-        /// <param name="t"></param>
-        /// <param name="r"></param>
-        public delegate void glMultiTexCoord3s(uint target, short s, short t, short r);
-        /// <summary>
-        ///
-        /// </summary>
-        /// <param name="target"></param>
-        /// <param name="v"></param>
-        public delegate void glMultiTexCoord3sv(uint target, short[] v);
-        /// <summary>
-        ///
-        /// </summary>
-        /// <param name="target"></param>
-        /// <param name="s"></param>
-        /// <param name="t"></param>
-        /// <param name="r"></param>
-        /// <param name="q"></param>
-        public delegate void glMultiTexCoord4d(uint target, double s, double t, double r, double q);
-        /// <summary>
-        ///
-        /// </summary>
-        /// <param name="target"></param>
-        /// <param name="v"></param>
-        public delegate void glMultiTexCoord4dv(uint target, double[] v);
-        /// <summary>
-        ///
-        /// </summary>
-        /// <param name="target"></param>
-        /// <param name="s"></param>
-        /// <param name="t"></param>
-        /// <param name="r"></param>
-        /// <param name="q"></param>
-        public delegate void glMultiTexCoord4f(uint target, float s, float t, float r, float q);
-        /// <summary>
-        ///
-        /// </summary>
-        /// <param name="target"></param>
-        /// <param name="v"></param>
-        public delegate void glMultiTexCoord4fv(uint target, float[] v);
-        /// <summary>
-        ///
-        /// </summary>
-        /// <param name="target"></param>
-        /// <param name="s"></param>
-        /// <param name="t"></param>
-        /// <param name="r"></param>
-        /// <param name="q"></param>
-        public delegate void glMultiTexCoord4i(uint target, int s, int t, int r, int q);
-        /// <summary>
-        ///
-        /// </summary>
-        /// <param name="target"></param>
-        /// <param name="v"></param>
-        public delegate void glMultiTexCoord4iv(uint target, int[] v);
-        /// <summary>
-        ///
-        /// </summary>
-        /// <param name="target"></param>
-        /// <param name="s"></param>
-        /// <param name="t"></param>
-        /// <param name="r"></param>
-        /// <param name="q"></param>
-        public delegate void glMultiTexCoord4s(uint target, short s, short t, short r, short q);
-        /// <summary>
-        ///
-        /// </summary>
-        /// <param name="target"></param>
-        /// <param name="v"></param>
-        public delegate void glMultiTexCoord4sv(uint target, short[] v);
-        /// <summary>
-        ///
-        /// </summary>
-        /// <param name="m"></param>
-        public delegate void glLoadTransposeMatrixf(float[] m);
-        /// <summary>
-        ///
-        /// </summary>
-        /// <param name="m"></param>
-        public delegate void glLoadTransposeMatrixd(double[] m);
-        /// <summary>
-        ///
-        /// </summary>
-        /// <param name="m"></param>
-        public delegate void glMultTransposeMatrixf(float[] m);
-        /// <summary>
-        ///
-        /// </summary>
-        /// <param name="m"></param>
-        public delegate void glMultTransposeMatrixd(double[] m);
+        ///// <summary>
+        /////
+        ///// </summary>
+        ///// <param name="value"></param>
+        ///// <param name="invert"></param>
+        //public delegate void glSampleCoverage(float value, bool invert);
+        ///// <summary>
+        /////
+        ///// </summary>
+        ///// <param name="target"></param>
+        ///// <param name="level"></param>
+        ///// <param name="internalformat"></param>
+        ///// <param name="width"></param>
+        ///// <param name="height"></param>
+        ///// <param name="depth"></param>
+        ///// <param name="border"></param>
+        ///// <param name="imageSize"></param>
+        ///// <param name="data"></param>
+        //public delegate void glCompressedTexImage3D(uint target, int level, uint internalformat, int width, int height, int depth, int border, int imageSize, IntPtr data);
+        ///// <summary>
+        /////
+        ///// </summary>
+        ///// <param name="target"></param>
+        ///// <param name="level"></param>
+        ///// <param name="internalformat"></param>
+        ///// <param name="width"></param>
+        ///// <param name="height"></param>
+        ///// <param name="border"></param>
+        ///// <param name="imageSize"></param>
+        ///// <param name="data"></param>
+        //public delegate void glCompressedTexImage2D(uint target, int level, uint internalformat, int width, int height, int border, int imageSize, IntPtr data);
+        ///// <summary>
+        /////
+        ///// </summary>
+        ///// <param name="target"></param>
+        ///// <param name="level"></param>
+        ///// <param name="internalformat"></param>
+        ///// <param name="width"></param>
+        ///// <param name="border"></param>
+        ///// <param name="imageSize"></param>
+        ///// <param name="data"></param>
+        //public delegate void glCompressedTexImage1D(uint target, int level, uint internalformat, int width, int border, int imageSize, IntPtr data);
+        ///// <summary>
+        /////
+        ///// </summary>
+        ///// <param name="target"></param>
+        ///// <param name="level"></param>
+        ///// <param name="xoffset"></param>
+        ///// <param name="yoffset"></param>
+        ///// <param name="zoffset"></param>
+        ///// <param name="width"></param>
+        ///// <param name="height"></param>
+        ///// <param name="depth"></param>
+        ///// <param name="format"></param>
+        ///// <param name="imageSize"></param>
+        ///// <param name="data"></param>
+        //public delegate void glCompressedTexSubImage3D(uint target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, uint format, int imageSize, IntPtr data);
+        ///// <summary>
+        /////
+        ///// </summary>
+        ///// <param name="target"></param>
+        ///// <param name="level"></param>
+        ///// <param name="xoffset"></param>
+        ///// <param name="yoffset"></param>
+        ///// <param name="width"></param>
+        ///// <param name="height"></param>
+        ///// <param name="format"></param>
+        ///// <param name="imageSize"></param>
+        ///// <param name="data"></param>
+        //public delegate void glCompressedTexSubImage2D(uint target, int level, int xoffset, int yoffset, int width, int height, uint format, int imageSize, IntPtr data);
+        ///// <summary>
+        /////
+        ///// </summary>
+        ///// <param name="target"></param>
+        ///// <param name="level"></param>
+        ///// <param name="xoffset"></param>
+        ///// <param name="width"></param>
+        ///// <param name="format"></param>
+        ///// <param name="imageSize"></param>
+        ///// <param name="data"></param>
+        //public delegate void glCompressedTexSubImage1D(uint target, int level, int xoffset, int width, uint format, int imageSize, IntPtr data);
+        ///// <summary>
+        /////
+        ///// </summary>
+        ///// <param name="target"></param>
+        ///// <param name="level"></param>
+        ///// <param name="img"></param>
+        //public delegate void glGetCompressedTexImage(uint target, int level, IntPtr img);
+
+        ///// <summary>
+        /////
+        ///// </summary>
+        ///// <param name="texture"></param>
+        //public delegate void glClientActiveTexture(uint texture);
+        ///// <summary>
+        /////
+        ///// </summary>
+        ///// <param name="target"></param>
+        ///// <param name="s"></param>
+        //public delegate void glMultiTexCoord1d(uint target, double s);
+        ///// <summary>
+        /////
+        ///// </summary>
+        ///// <param name="target"></param>
+        ///// <param name="v"></param>
+        //public delegate void glMultiTexCoord1dv(uint target, double[] v);
+        ///// <summary>
+        /////
+        ///// </summary>
+        ///// <param name="target"></param>
+        ///// <param name="s"></param>
+        //public delegate void glMultiTexCoord1f(uint target, float s);
+        ///// <summary>
+        /////
+        ///// </summary>
+        ///// <param name="target"></param>
+        ///// <param name="v"></param>
+        //public delegate void glMultiTexCoord1fv(uint target, float[] v);
+        ///// <summary>
+        /////
+        ///// </summary>
+        ///// <param name="target"></param>
+        ///// <param name="s"></param>
+        //public delegate void glMultiTexCoord1i(uint target, int s);
+        ///// <summary>
+        /////
+        ///// </summary>
+        ///// <param name="target"></param>
+        ///// <param name="v"></param>
+        //public delegate void glMultiTexCoord1iv(uint target, int[] v);
+        ///// <summary>
+        /////
+        ///// </summary>
+        ///// <param name="target"></param>
+        ///// <param name="s"></param>
+        //public delegate void glMultiTexCoord1s(uint target, short s);
+        ///// <summary>
+        /////
+        ///// </summary>
+        ///// <param name="target"></param>
+        ///// <param name="v"></param>
+        //public delegate void glMultiTexCoord1sv(uint target, short[] v);
+        ///// <summary>
+        /////
+        ///// </summary>
+        ///// <param name="target"></param>
+        ///// <param name="s"></param>
+        ///// <param name="t"></param>
+        //public delegate void glMultiTexCoord2d(uint target, double s, double t);
+        ///// <summary>
+        /////
+        ///// </summary>
+        ///// <param name="target"></param>
+        ///// <param name="v"></param>
+        //public delegate void glMultiTexCoord2dv(uint target, double[] v);
+        ///// <summary>
+        /////
+        ///// </summary>
+        ///// <param name="target"></param>
+        ///// <param name="s"></param>
+        ///// <param name="t"></param>
+        //public delegate void glMultiTexCoord2f(uint target, float s, float t);
+        ///// <summary>
+        /////
+        ///// </summary>
+        ///// <param name="target"></param>
+        ///// <param name="v"></param>
+        //public delegate void glMultiTexCoord2fv(uint target, float[] v);
+        ///// <summary>
+        /////
+        ///// </summary>
+        ///// <param name="target"></param>
+        ///// <param name="s"></param>
+        ///// <param name="t"></param>
+        //public delegate void glMultiTexCoord2i(uint target, int s, int t);
+        ///// <summary>
+        /////
+        ///// </summary>
+        ///// <param name="target"></param>
+        ///// <param name="v"></param>
+        //public delegate void glMultiTexCoord2iv(uint target, int[] v);
+        ///// <summary>
+        /////
+        ///// </summary>
+        ///// <param name="target"></param>
+        ///// <param name="s"></param>
+        ///// <param name="t"></param>
+        //public delegate void glMultiTexCoord2s(uint target, short s, short t);
+        ///// <summary>
+        /////
+        ///// </summary>
+        ///// <param name="target"></param>
+        ///// <param name="v"></param>
+        //public delegate void glMultiTexCoord2sv(uint target, short[] v);
+        ///// <summary>
+        /////
+        ///// </summary>
+        ///// <param name="target"></param>
+        ///// <param name="s"></param>
+        ///// <param name="t"></param>
+        ///// <param name="r"></param>
+        //public delegate void glMultiTexCoord3d(uint target, double s, double t, double r);
+        ///// <summary>
+        /////
+        ///// </summary>
+        ///// <param name="target"></param>
+        ///// <param name="v"></param>
+        //public delegate void glMultiTexCoord3dv(uint target, double[] v);
+        ///// <summary>
+        /////
+        ///// </summary>
+        ///// <param name="target"></param>
+        ///// <param name="s"></param>
+        ///// <param name="t"></param>
+        ///// <param name="r"></param>
+        //public delegate void glMultiTexCoord3f(uint target, float s, float t, float r);
+        ///// <summary>
+        /////
+        ///// </summary>
+        ///// <param name="target"></param>
+        ///// <param name="v"></param>
+        //public delegate void glMultiTexCoord3fv(uint target, float[] v);
+        ///// <summary>
+        /////
+        ///// </summary>
+        ///// <param name="target"></param>
+        ///// <param name="s"></param>
+        ///// <param name="t"></param>
+        ///// <param name="r"></param>
+        //public delegate void glMultiTexCoord3i(uint target, int s, int t, int r);
+        ///// <summary>
+        /////
+        ///// </summary>
+        ///// <param name="target"></param>
+        ///// <param name="v"></param>
+        //public delegate void glMultiTexCoord3iv(uint target, int[] v);
+        ///// <summary>
+        /////
+        ///// </summary>
+        ///// <param name="target"></param>
+        ///// <param name="s"></param>
+        ///// <param name="t"></param>
+        ///// <param name="r"></param>
+        //public delegate void glMultiTexCoord3s(uint target, short s, short t, short r);
+        ///// <summary>
+        /////
+        ///// </summary>
+        ///// <param name="target"></param>
+        ///// <param name="v"></param>
+        //public delegate void glMultiTexCoord3sv(uint target, short[] v);
+        ///// <summary>
+        /////
+        ///// </summary>
+        ///// <param name="target"></param>
+        ///// <param name="s"></param>
+        ///// <param name="t"></param>
+        ///// <param name="r"></param>
+        ///// <param name="q"></param>
+        //public delegate void glMultiTexCoord4d(uint target, double s, double t, double r, double q);
+        ///// <summary>
+        /////
+        ///// </summary>
+        ///// <param name="target"></param>
+        ///// <param name="v"></param>
+        //public delegate void glMultiTexCoord4dv(uint target, double[] v);
+        ///// <summary>
+        /////
+        ///// </summary>
+        ///// <param name="target"></param>
+        ///// <param name="s"></param>
+        ///// <param name="t"></param>
+        ///// <param name="r"></param>
+        ///// <param name="q"></param>
+        //public delegate void glMultiTexCoord4f(uint target, float s, float t, float r, float q);
+        ///// <summary>
+        /////
+        ///// </summary>
+        ///// <param name="target"></param>
+        ///// <param name="v"></param>
+        //public delegate void glMultiTexCoord4fv(uint target, float[] v);
+        ///// <summary>
+        /////
+        ///// </summary>
+        ///// <param name="target"></param>
+        ///// <param name="s"></param>
+        ///// <param name="t"></param>
+        ///// <param name="r"></param>
+        ///// <param name="q"></param>
+        //public delegate void glMultiTexCoord4i(uint target, int s, int t, int r, int q);
+        ///// <summary>
+        /////
+        ///// </summary>
+        ///// <param name="target"></param>
+        ///// <param name="v"></param>
+        //public delegate void glMultiTexCoord4iv(uint target, int[] v);
+        ///// <summary>
+        /////
+        ///// </summary>
+        ///// <param name="target"></param>
+        ///// <param name="s"></param>
+        ///// <param name="t"></param>
+        ///// <param name="r"></param>
+        ///// <param name="q"></param>
+        //public delegate void glMultiTexCoord4s(uint target, short s, short t, short r, short q);
+        ///// <summary>
+        /////
+        ///// </summary>
+        ///// <param name="target"></param>
+        ///// <param name="v"></param>
+        //public delegate void glMultiTexCoord4sv(uint target, short[] v);
+        ///// <summary>
+        /////
+        ///// </summary>
+        ///// <param name="m"></param>
+        //public delegate void glLoadTransposeMatrixf(float[] m);
+        ///// <summary>
+        /////
+        ///// </summary>
+        ///// <param name="m"></param>
+        //public delegate void glLoadTransposeMatrixd(double[] m);
+        ///// <summary>
+        /////
+        ///// </summary>
+        ///// <param name="m"></param>
+        //public delegate void glMultTransposeMatrixf(float[] m);
+        ///// <summary>
+        /////
+        ///// </summary>
+        ///// <param name="m"></param>
+        //public delegate void glMultTransposeMatrixd(double[] m);

         //  Constants
         /// <summary>


Create BrowserSettings in WinForms constructor and explicitly Dispose as it wraps an unmanaged object.

--- CefSharp.WinForms/ChromiumWebBrowser.cs
+++ CefSharp.WinForms/ChromiumWebBrowser.cs
@@ -63,6 +63,7 @@

             FocusHandler = new DefaultFocusHandler(this);
             ResourceHandler = new DefaultResourceHandler();
+            BrowserSettings = new BrowserSettings();

             managedCefBrowserAdapter = new ManagedCefBrowserAdapter(this, false);
         }
@@ -71,6 +72,8 @@
         {
             FocusHandler = null;
             ResourceHandler = null;
+            BrowserSettings.Dispose();
+            BrowserSettings = null;

             Cef.RemoveDisposable(this);

@@ -160,7 +163,7 @@

         protected override void OnHandleCreated(EventArgs e)
         {
-            managedCefBrowserAdapter.CreateBrowser(BrowserSettings ?? new BrowserSettings(), Handle, Address);
+            managedCefBrowserAdapter.CreateBrowser(BrowserSettings, Handle, Address);

             base.OnHandleCreated(e);
         }


Added support for connecting to "mc://" URLs directly (although you might as well run Charge.exe from command line).

--- ChargedMinersLauncher/ServerListForm.cs
+++ ChargedMinersLauncher/ServerListForm.cs
@@ -11,7 +11,8 @@

 namespace ChargedMinersLauncher {
     sealed partial class ServerListForm : Form {
-        static readonly Regex PlayIP = new Regex( @"^http://www.minecraft.net/classic/play/([0-9a-fA-F]{28,32})/?$" );
+        static readonly Regex PlayLinkHash = new Regex( @"^http://www.minecraft.net/classic/play/([0-9a-fA-F]{28,32})/?$" );
+        static readonly Regex PlayLinkDirect = new Regex( @"^mc://(\d{1,3}\.){3}\d{1,3}:\d{1,5}/[a-zA-Z0-9_\.]{2,16}/.*$" );

         readonly SortableBindingList<ServerInfo> boundList = new SortableBindingList<ServerInfo>();
         readonly ServerInfo[] originalList;
@@ -110,21 +111,23 @@

         private void tURL_TextChanged( object sender, EventArgs e ) {
-            Match match = PlayIP.Match( tURL.Text );
+            Match match = PlayLinkHash.Match( tURL.Text );
             if( match.Success ) {
                 tURL.BackColor = SystemColors.Window;
                 activeHash = match.Groups[1].Value;
                 bConnect.Enabled = true;
-            } else {
+            } else if( PlayLinkDirect.IsMatch( tURL.Text ) ) {
+                tURL.BackColor = SystemColors.Window;
+                activeHash = null;
+                bConnect.Enabled = true;
+            }else{
                 tURL.BackColor = Color.Yellow;
                 activeHash = null;
                 bConnect.Enabled = false;
             }
         }

-
         private void bConnect_Click( object sender, EventArgs e ) {
-            if( activeHash == null ) return;
             StartLoadingInfo( activeHash );
         }

@@ -134,15 +137,18 @@
                 MessageBox.Show( "Charge.exe not found!" );
                 return;
             }
-            activeHash = hash;
-
-            LoadingForm progressBox = new LoadingForm( "Fetching server info..." );
-            progressBox.Shown += ( s2, e2 ) => ThreadPool.QueueUserWorkItem( FetchInfo, progressBox );
-            progressBox.ShowDialog();
+            if( hash != null ) {
+                activeHash = hash;
+                LoadingForm progressBox = new LoadingForm( "Fetching server info..." );
+                progressBox.Shown += ( s2, e2 ) => ThreadPool.QueueUserWorkItem( FetchInfo, progressBox );
+                progressBox.ShowDialog();
+            } else if( PlayLinkDirect.IsMatch( tURL.Text ) ) {
+                Launch( tURL.Text );
+            }
         }

-        private void FetchInfo( object param ) {
+        void FetchInfo( object param ) {
             LoadingForm progressBox = (LoadingForm)param;
             ServerLoginInfo info = MinecraftNetSession.Instance.GetServerInfo( activeHash );
             if( info == null ) {
@@ -151,12 +157,17 @@
                 return;
             }
             string url = String.Format( "mc://{0}:{1}/{2}/{3}", info.IP, info.Port, info.User, info.AuthToken );
+            Launch( url );
+        }
+
+
+        void Launch( string url ) {
             Process.Start( SignInForm.ChargeBinary, url );
             Application.Exit();
         }

-        private void UpdateFilters( object sender, EventArgs e ) {
+        void UpdateFilters( object sender, EventArgs e ) {
             dgvServerList.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.None;
             foreach( ServerInfo info in originalList ) {
                 bool pass = (tFilter.Text.Length == 0 || info.Name.IndexOf( tFilter.Text, StringComparison.OrdinalIgnoreCase ) > -1) &&
@@ -177,7 +188,7 @@
         }

-        private void bSettings_Click( object sender, EventArgs e ) {
+        void bSettings_Click( object sender, EventArgs e ) {
             new SettingsForm().ShowDialog();
         }
     }


More voting HTML improvements

More voting HTML improvements

--- Elections/Views/Home/Vote.cshtml
+++ Elections/Views/Home/Vote.cshtml
@@ -1,95 +1,115 @@
 @model IEnumerable<PositionalGrouping>

 @{
-    ViewData["Title"] = "RBYA Elections - Voting";
+	ViewData["Title"] = "RBYA Elections - Voting";
 }

-
Vote for @ViewBag.Code

+
RBYA Voting

 <form role="form">
-    @foreach (var group in Model)
-    {
-
@group.Position

-        @foreach (var candidate in group.Candidates)
-        {
-
@candidate.Name

-
@candidate.Reasons

-
@candidate.Background

-
-                <input name="" type="checkbox">
-
-
-        }
-    }
+	@foreach (var group in Model)
+	{
+

+

+
@group.Position

+

+

+				@foreach (var candidate in group.Candidates)
+				{
+

+

+

+
+
+
+

+

+
@candidate.Name

+

+                                Reasons: @candidate.Reasons

+                                Background: @candidate.Background
+

+

+
+
+                            <input name="" type="checkbox">
+
+
+

+}
+

+
+

+	}
 </form>
 @*

-

-

-
-                    @Html.DisplayNameFor(model => model.Name)
-
-
-                    @Html.DisplayNameFor(model => model.Church)
-
-
-                    @Html.DisplayNameFor(model => model.Location)
-
-
-                    @Html.DisplayNameFor(model => model.Position)
-
-
-                    @Html.DisplayNameFor(model => model.Reasons)
-
-
-                    @Html.DisplayNameFor(model => model.Background)
-
-
-                    @Html.DisplayNameFor(model => model.Submitter)
-
-
-                    @Html.DisplayNameFor(model => model.Comments)
-
-
-                    @Html.DisplayNameFor(model => model.ImageUrl)
-
-
-

-

-

+

+

+
+					@Html.DisplayNameFor(model => model.Name)
+
+
+					@Html.DisplayNameFor(model => model.Church)
+
+
+					@Html.DisplayNameFor(model => model.Location)
+
+
+					@Html.DisplayNameFor(model => model.Position)
+
+
+					@Html.DisplayNameFor(model => model.Reasons)
+
+
+					@Html.DisplayNameFor(model => model.Background)
+
+
+					@Html.DisplayNameFor(model => model.Submitter)
+
+
+					@Html.DisplayNameFor(model => model.Comments)
+
+
+					@Html.DisplayNameFor(model => model.ImageUrl)
+
+
+

+

+

 @foreach (var item in Model) {
-

-
-                @Html.DisplayFor(modelItem => item.Name)
-
-
-                @Html.DisplayFor(modelItem => item.Church)
-
-
-                @Html.DisplayFor(modelItem => item.Location)
-
-
-                @Html.DisplayFor(modelItem => item.Position)
-
-
-                @Html.DisplayFor(modelItem => item.Reasons)
-
-
-                @Html.DisplayFor(modelItem => item.Background)
-
-
-                @Html.DisplayFor(modelItem => item.Submitter)
-
-
-                @Html.DisplayFor(modelItem => item.Comments)
-
-
-                @Html.DisplayFor(modelItem => item.ImageUrl)
-
-
-                Edit |
-                Details |
-                Delete
-
-

+

+
+				@Html.DisplayFor(modelItem => item.Name)
+
+
+				@Html.DisplayFor(modelItem => item.Church)
+
+
+				@Html.DisplayFor(modelItem => item.Location)
+
+
+				@Html.DisplayFor(modelItem => item.Position)
+
+
+				@Html.DisplayFor(modelItem => item.Reasons)
+
+
+				@Html.DisplayFor(modelItem => item.Background)
+
+
+				@Html.DisplayFor(modelItem => item.Submitter)
+
+
+				@Html.DisplayFor(modelItem => item.Comments)
+
+
+				@Html.DisplayFor(modelItem => item.ImageUrl)
+
+
+				Edit |
+				Details |
+				Delete
+
+

 }*@
-

+


Fix mistaken LogError

Fix mistaken LogError

--- Enyim.Caching/MemcachedClient.cs
+++ Enyim.Caching/MemcachedClient.cs
@@ -996,7 +996,7 @@
                     }
                     catch (Exception e)
                     {
-                        _logger.LogError("PerformMultiGet", e);
+                        _logger.LogError(0, e, "PerformMultiGet");
                     }
                 }));
             }


A repository instance should only need one instance of DbSet<T> inside it. Moved DbSet init inside ctor. Also corrected GetAll to use DbSet.

--- CodeCamper.Data/CodeCamperRepository.cs
+++ CodeCamper.Data/CodeCamperRepository.cs
@@ -22,15 +22,16 @@
             if (dbContext == null)
                 throw new ArgumentNullException("dbContext");
             DbContext = dbContext;
+            DbSet = DbContext.Set<T>();
         }

         protected CodeCamperDbContext DbContext { get; set; }

-        protected DbSet<T> DbSet { get { return DbContext.Set<T>(); } }
+        protected DbSet<T> DbSet { get; set; }

         public virtual IQueryable<T> GetAll()
         {
-            return DbContext.Set<T>();
+            return DbSet;
         }

         public virtual T GetById(int id)


Add a wrong password status

Add a wrong password status

--- Espera.Network/ResponseStatus.cs
+++ Espera.Network/ResponseStatus.cs
@@ -9,6 +9,7 @@
         NotFound,
         NotSupported,
         Rejected,
-        Fatal
+        Fatal,
+        WrongPassword
     }
 }


Fixed incorrect examples as reported in https://github.com/SharePoint/PnP-PowerShell/issues/1046

--- Commands/Lists/SetListItemPermission.cs
+++ Commands/Lists/SetListItemPermission.cs
@@ -7,25 +7,24 @@

 namespace SharePointPnP.PowerShell.Commands.Lists
 {
-    //TODO: Create Test
     [Cmdlet(VerbsCommon.Set, "PnPListItemPermission", DefaultParameterSetName = "User")]
     [CmdletHelp("Sets list item permissions",
         Category = CmdletHelpCategory.Lists)]
     [CmdletExample(
-        Code = "PS:> Set-PnPListPermission -List 'Documents' -Identity 1 -User 'user@contoso.com' -AddRole 'Contribute'",
-        Remarks = "Adds the 'Contribute' permission to the user 'user@contoso.com' for item with id 1 in the list 'Documents'",
+        Code = "PS:> Set-PnPListItemPermission -List 'Documents' -Identity 1 -User 'user@contoso.com' -AddRole 'Contribute'",
+        Remarks = "Adds the 'Contribute' permission to the user 'user@contoso.com' for listitem with id 1 in the list 'Documents'",
         SortOrder = 1)]
     [CmdletExample(
-        Code = "PS:> Set-PnPListPermission -List 'Documents' -Identity 1 -User 'user@contoso.com' -RemoveRole 'Contribute'",
-        Remarks = "Removes the 'Contribute' permission to the user 'user@contoso.com' for item with id 1 in the list 'Documents'",
+        Code = "PS:> Set-PnPListItemPermission -List 'Documents' -Identity 1 -User 'user@contoso.com' -RemoveRole 'Contribute'",
+        Remarks = "Removes the 'Contribute' permission to the user 'user@contoso.com' for listitem with id 1 in the list 'Documents'",
         SortOrder = 2)]
     [CmdletExample(
-        Code = "PS:> Set-PnPListPermission -List 'Documents' -Identity 1 -User 'user@contoso.com' -AddRole 'Contribute' -ClearExisting",
-        Remarks = "Adds the 'Contribute' permission to the user 'user@contoso.com' for item with id 1 in the list 'Documents' and removes all other permissions",
+        Code = "PS:> Set-PnPListItemPermission -List 'Documents' -Identity 1 -User 'user@contoso.com' -AddRole 'Contribute' -ClearExisting",
+        Remarks = "Adds the 'Contribute' permission to the user 'user@contoso.com' for listitem with id 1 in the list 'Documents' and removes all other permissions",
         SortOrder = 3)]
     [CmdletExample(
-        Code = "PS:> Set-PnPListPermission -List 'Documents' -Identity 1 -InheritPermissions",
-        Remarks = "Resets permissions for item with id 1 to inherit permissions from the list 'Documents'",
+        Code = "PS:> Set-PnPListItemPermission -List 'Documents' -Identity 1 -InheritPermissions",
+        Remarks = "Resets permissions for listitem with id 1 to inherit permissions from the list 'Documents'",
         SortOrder = 4)]
     public class SetListItemPermission : PnPWebCmdlet
     {
@@ -149,4 +148,4 @@
             }
         }
     }
-}
+}


Version bump

Version bump

--- Common/Properties/SharedAssemblyInfo.cs
+++ Common/Properties/SharedAssemblyInfo.cs
@@ -5,7 +5,7 @@
 [assembly: AssemblyCopyright("Copyright ©  2015")]
 [assembly: AssemblyCompany("QuantConnect")]
 [assembly: AssemblyTrademark("QuantConnect")]
-[assembly: AssemblyVersion("2.1.2.02")]
+[assembly: AssemblyVersion("2.1.2.04")]
 #if DEBUG
     [assembly: AssemblyConfiguration("Debug")]
 #else


CCI-1336

--- ComputeClient/Compute.Client/ApiUris.cs
+++ ComputeClient/Compute.Client/ApiUris.cs
@@ -907,7 +907,7 @@
         /// <returns>	A URI. </returns>
         public static Uri ExpandVlan(Guid orgId)
         {
-            return new Uri(string.Format(MCP2_7_PREFIX + "{0}/network/expandVlan", orgId), UriKind.Relative);
+            return new Uri(string.Format(MCP2_8_PREFIX + "{0}/network/expandVlan", orgId), UriKind.Relative);
         }

         /// <summary>	Deletes the vlan described by orgId. </summary>


Mark ReagentUnit instance methods are readonly.

--- Content.Shared/Chemistry/ReagentUnit.cs
+++ Content.Shared/Chemistry/ReagentUnit.cs
@@ -19,7 +19,7 @@
         public static ReagentUnit Epsilon { get; } = new(1);
         public static ReagentUnit Zero { get; } = new(0);

-        private double ShiftDown()
+        private readonly double ShiftDown()
         {
             return _value / Math.Pow(10, Shift);
         }
@@ -164,17 +164,17 @@
             return a._value > b._value;
         }

-        public float Float()
+        public readonly float Float()
         {
             return (float) ShiftDown();
         }

-        public double Double()
+        public readonly double Double()
         {
             return ShiftDown();
         }

-        public int Int()
+        public readonly int Int()
         {
             return (int) ShiftDown();
         }
@@ -204,14 +204,15 @@
             return reagent < min ? min : reagent > max ? max : reagent;
         }

-        public override bool Equals(object obj)
+        public override readonly bool Equals(object obj)
         {
             return obj is ReagentUnit unit &&
                    _value == unit._value;
         }

-        public override int GetHashCode()
-        {
+        public override readonly int GetHashCode()
+        {
+            // ReSharper disable once NonReadonlyMemberInGetHashCode
             return HashCode.Combine(_value);
         }

@@ -220,19 +221,19 @@
             _value = FromFloat(FloatFromString(value));
         }

-        public override string ToString() => $"{ShiftDown().ToString(CultureInfo.InvariantCulture)}";
-
-        public string Serialize()
+        public override readonly string ToString() => $"{ShiftDown().ToString(CultureInfo.InvariantCulture)}";
+
+        public readonly string Serialize()
         {
             return ToString();
         }

-        public bool Equals(ReagentUnit other)
+        public readonly bool Equals(ReagentUnit other)
         {
             return _value == other._value;
         }

-        public int CompareTo(ReagentUnit other)
+        public readonly int CompareTo(ReagentUnit other)
         {
             if(other._value > _value)
             {


Don't show deleted users when using search all method

--- Core.ApplicationServices/UserService.cs
+++ Core.ApplicationServices/UserService.cs
@@ -301,6 +301,7 @@

             return _repository
                 .GetUsers()
+                .Where(x => !x.Deleted)
                 .Transform(query.Apply)
                 .Transform(Result<IQueryable<User>, OperationError>.Success);
         }


[Update] プラグインフォルダ捜査を改良

[Update] プラグインフォルダ捜査を改良

--- CurtainFireMakerPlugin/Configuration.cs
+++ CurtainFireMakerPlugin/Configuration.cs
@@ -24,7 +24,8 @@
         public bool ShouldDropPmxFile { get => GetBool("ShouldDropFile/Pmx"); set => SetBool("ShouldDropFile/Pmx", value); }
         public bool ShouldDropVmdFile { get => GetBool("ShouldDropFile/Vmd"); set => SetBool("ShouldDropFile/Vmd", value); }

-        public static string PluginRootPath => Application.StartupPath + (Application.StartupPath.Contains("CurtainFireMaker") ? "\\" : "\\CurtainFireMaker\\");
+        public static string PluginRootPath => (Application.StartupPath.Contains("CurtainFireMaker") ? Application.StartupPath : Directory.GetDirectories(Application.StartupPath).First(s => s.Contains("CurtainFireMaker"))) + "\\";
+
         public static string SettingXmlFilePath => PluginRootPath + "config.xml";
         public static string SettingPythonFilePath => PluginRootPath + "config.py";
         public static string ResourceDirPath => PluginRootPath + "Resource\\";
@@ -86,7 +87,7 @@

         private static string GetAbsolutePath(string path)
         {
-            if (path.StartsWith("C:"))
+            if (Path.IsPathRooted(path))
             {
                 return path;
             }


Update UpdateManager.cs

Update UpdateManager.cs

diclah server shutting down

--- DamageMeter.AutoUpdate/UpdateManager.cs
+++ DamageMeter.AutoUpdate/UpdateManager.cs
@@ -177,7 +177,7 @@
         {
             using (var client = new WebClient())
             {
-                var compressed = await client.OpenReadTaskAsync(new Uri("http://diclah.com/~yukikoo/ShinraMeterV.sha1.zip?seed="+DateTime.UtcNow.Ticks)).ConfigureAwait(false);
+                var compressed = await client.OpenReadTaskAsync(new Uri("https://neowutran.ovh/others/diclah/ShinraMeterV.sha1.zip?seed="+DateTime.UtcNow.Ticks)).ConfigureAwait(false);
                 if (compressed == null) { return true; }
                 using (var stream = new MemoryStream())
                 {


fix incorrect counting hits & crits for healers

--- DamageMeter.Core/Dealt/EntitiesDealt.cs
+++ DamageMeter.Core/Dealt/EntitiesDealt.cs
@@ -156,12 +156,12 @@
         public int Crits(Entity currentBoss, bool timedEncounter)
         {

-                if (currentBoss == null || (PlayerInfo.IsHealer && !timedEncounter))
+                if (currentBoss == null)
                 {
                     return _entitiesStats.Sum(skills => skills.Value.Sum(stat => stat.Value.Crits));
                 }

-                if (!timedEncounter)
+                if (!timedEncounter && !PlayerInfo.IsHealer)
                 {
                     return _entitiesStats.Sum(
                              timedStats =>
@@ -194,28 +194,27 @@
         public int Hits(Entity currentBoss, bool timedEncounter)
         {

-                if (currentBoss == null || (PlayerInfo.IsHealer && !timedEncounter))
-                {
-                    return _entitiesStats.Sum(skills => skills.Value.Sum(stat => stat.Value.Hits));
-                }
-
-                if (!timedEncounter)
-                {
-                    return
+            if (currentBoss == null)
+            {
+                 return _entitiesStats.Sum(skills => skills.Value.Sum(stat => stat.Value.Hits));
+            }
+
+            if (!timedEncounter && !PlayerInfo.IsHealer)
+            {
+                return
                      _entitiesStats.Sum(
                          timedStats =>
                              timedStats.Value.Where(stats => stats.Key == currentBoss)
                                  .Sum(stats => stats.Value.Hits));
             }
-                var hits = 0;
-                var lastHit = GetLastHit(currentBoss);
-                for (var i = GetFirstHit(currentBoss); i <= lastHit; i++)
-                {
-                    if (!_entitiesStats.ContainsKey(i)) continue;
-                    hits += _entitiesStats[i].Sum(stat => stat.Value.Hits);
-                }
-                return hits;
-
+            var hits = 0;
+            var lastHit = GetLastHit(currentBoss);
+            for (var i = GetFirstHit(currentBoss); i <= lastHit; i++)
+            {
+                if (!_entitiesStats.ContainsKey(i)) continue;
+                hits += _entitiesStats[i].Sum(stat => stat.Value.Hits);
+            }
+            return hits;

         }


Fixed some PackFile resource releasings.

--- GitSharp.Tests/PackWriterTest.cs
+++ GitSharp.Tests/PackWriterTest.cs
@@ -76,7 +76,15 @@
 			_indexFile = new FileInfo(Path.Combine(trash.FullName, "tmp_pack.idx"));
 			_writer = new PackWriter(db, new TextProgressMonitor());
 		}
-
+
+        [TearDown]
+        public override void tearDown()
+        {
+            if (_pack != null)
+                _pack.Dispose();
+
+            base.tearDown();
+        }
 		#endregion

 		///	<summary>


Set default values for VoiceActor serialization/deserialization

--- Glyssen/VoiceActor/VoiceActor.cs
+++ Glyssen/VoiceActor/VoiceActor.cs
@@ -138,6 +138,7 @@
 		public ActorAge Age { get; set; }

 		[XmlAttribute("VoiceQuality")]
+		[DefaultValue("Normal")]
 		[Browsable(false)]
 		public string VoiceQualityDeprecatedString
 		{
@@ -155,12 +156,15 @@
 		public VoiceQuality VoiceQuality { get; set; }

 		[XmlAttribute("Status")]
+		[DefaultValue(false)]
 		public bool Status { get; set; }

 		[XmlAttribute("IsCameo")]
+		[DefaultValue(false)]
 		public bool IsCameo { get; set; }

 		[XmlAttribute("IsInactive")]
+		[DefaultValue(false)]
 		public bool IsInactive { get; set; }

 		public bool IsValid()


Fix ComposeDown  ImageRemovalOption.All translating to --rmi all CLI command option

--- Ductus.FluentDocker/Commands/Compose.cs
+++ Ductus.FluentDocker/Commands/Compose.cs
@@ -425,7 +425,7 @@

       if (removeImagesFrom != ImageRemovalOption.None)
       {
-        options += removeImagesFrom == ImageRemovalOption.Local ? " --rmi local" : " --rmi type all";
+        options += removeImagesFrom == ImageRemovalOption.Local ? " --rmi local" : " --rmi all";
       }

       return


Update StaticMaps.cs

Update StaticMaps.cs

--- GoogleMapsApi.Test/StaticMaps.cs
+++ GoogleMapsApi.Test/StaticMaps.cs
@@ -81,7 +81,7 @@
 		{
 			var request = new StaticMapRequest(new Location(0, 0), 1, new ImageSize(400, 50));
 			string expectedResult = "http://maps.google.com/maps/api/staticmap" +
-									"?center=0%2C0&zoom=1&size=400x50&sensor=false";
+									"?center=%2C&zoom=1&size=400x50&sensor=false";

 			string generateStaticMapURL = new StaticMapsEngine().GenerateStaticMapURL(request);

@@ -102,4 +102,4 @@
 			Assert.AreEqual(expectedResult, actualResult);
 		}
 	}
-}+}


Refactor ToggleSwitch

Refactor ToggleSwitch

- Compute component sizes in constructor rather than per draw

--- Gui/ToggleSwitch/ToggleSwitch.cs
+++ Gui/ToggleSwitch/ToggleSwitch.cs
@@ -50,87 +50,84 @@

 		private GuiWidget createState(string word, bool isChecked, double width, double height, ref RGBA_Bytes backgroundColor, ref RGBA_Bytes interiorColor, ref RGBA_Bytes thumbColor, ref RGBA_Bytes textColor)
 		{
-			TextWidget text = new TextWidget(word, pointSize: 10, textColor: textColor);
-			text.VAnchor = VAnchor.Center;
+			GuiWidget switchNormalToPressed = new FlowLayoutWidget(FlowDirection.LeftToRight);

-			SwitchView switchGraphics = new SwitchView(width, height, isChecked, backgroundColor, interiorColor, isChecked ? thumbColor : RGBA_Bytes.Gray, textColor);
-			switchGraphics.VAnchor = VAnchor.Center;
-			switchGraphics.Margin = new BorderDouble(5, 0, 0, 0);
+			if (!string.IsNullOrEmpty(word))
+			{
+				switchNormalToPressed.AddChild(new TextWidget(word, pointSize: 10, textColor: textColor)
+				{
+					VAnchor = VAnchor.Center,
+					Margin = new BorderDouble(right: 5)
+				});
+			}

-			GuiWidget switchNormalToPressed = new FlowLayoutWidget(FlowDirection.LeftToRight);
-			switchNormalToPressed.AddChild(text);
-			switchNormalToPressed.AddChild(switchGraphics);
+			switchNormalToPressed.AddChild(new SwitchView(width, height, isChecked, backgroundColor, interiorColor, isChecked ? thumbColor : RGBA_Bytes.Gray, textColor)
+			{
+				VAnchor = VAnchor.Center
+			});

 			return switchNormalToPressed;
 		}

 		internal class SwitchView : GuiWidget
 		{
-			private double switchHeight;
-
-			private double switchWidth;
-
-			private double thumbHeight;
-
-			private double thumbWidth;
 			bool startValue;

-			internal SwitchView(double width, double height, bool startValue,
-				RGBA_Bytes backgroundColor, RGBA_Bytes interiorColor, RGBA_Bytes thumbColor, RGBA_Bytes exteriorColor)
+			private RectangleDouble borderRect;
+
+			private RectangleDouble innerRect;
+
+			private RectangleDouble checkedThumbBounds;
+
+			private RectangleDouble uncheckedThumbBounds;
+
+			private RectangleDouble switchBounds { get; }
+
+			internal SwitchView(double width, double height, bool startValue, RGBA_Bytes backgroundColor, RGBA_Bytes interiorColor, RGBA_Bytes thumbColor, RGBA_Bytes exteriorColor)
 			{
 				this.startValue = startValue;
-				switchWidth = width;
-				switchHeight = height;
-				thumbHeight = height;
-				thumbWidth = width / 4;
+
+				var thumbHeight = height;
+				var thumbWidth = 15;
+
 				InteriorColor = interiorColor;
 				ExteriorColor = exteriorColor;
 				ThumbColor = thumbColor;
 				LocalBounds = new RectangleDouble(0, 0, width, height);
+
+				this.switchBounds = new RectangleDouble(0, 0, width, height);
+
+				innerRect = this.switchBounds;
+				innerRect.Inflate(new BorderDouble(-3, -6));
+
+				borderRect = this.switchBounds;
+				borderRect.Inflate(new BorderDouble(0, -3));
+
+				checkedThumbBounds = new RectangleDouble(width - thumbWidth, 0, width, thumbHeight);
+				uncheckedThumbBounds = new RectangleDouble(0, 0, thumbWidth, thumbHeight);
 			}

 			public RGBA_Bytes ExteriorColor { get; set; }

 			public RGBA_Bytes InteriorColor { get; set; }
+
 			public RGBA_Bytes ThumbColor { get; set; }

 			public override void OnDraw(Graphics2D graphics2D)
 			{
-				graphics2D.FillRectangle(GetSwitchBounds(), BackgroundColor);
+				graphics2D.FillRectangle(this.switchBounds, BackgroundColor);
 				base.OnDraw(graphics2D);
+
 				if (startValue)
 				{
-					RectangleDouble interior = GetSwitchBounds();
-					interior.Inflate(-6);
-					graphics2D.FillRectangle(interior, InteriorColor);
-				}
-				RectangleDouble border = GetSwitchBounds();
-				border.Inflate(-3);
-				graphics2D.Rectangle(border, ExteriorColor, 1);
-				graphics2D.FillRectangle(GetThumbBounds(), ThumbColor);
-				graphics2D.Rectangle(GetThumbBounds(), new RGBA_Bytes(255, 255, 255, 90), 1);
-			}
-
-			private RectangleDouble GetSwitchBounds()
-			{
-				RectangleDouble switchBounds;
-				switchBounds = new RectangleDouble(0, 0, switchWidth, switchHeight);
-				return switchBounds;
-			}
-
-			private RectangleDouble GetThumbBounds()
-			{
-				RectangleDouble thumbBounds;
-				if (startValue)
-				{
-					thumbBounds = new RectangleDouble(switchWidth - thumbWidth, 0, switchWidth, thumbHeight);
-				}
-				else
-				{
-					thumbBounds = new RectangleDouble(0, 0, thumbWidth, thumbHeight);
+					graphics2D.FillRectangle(innerRect, InteriorColor);
 				}

-				return thumbBounds;
+				graphics2D.Rectangle(this.borderRect, ExteriorColor, 1);
+
+				var thumbBounds = (this.startValue) ? checkedThumbBounds : uncheckedThumbBounds;
+				graphics2D.FillRectangle(thumbBounds, ThumbColor);
+				graphics2D.Rectangle(thumbBounds, new RGBA_Bytes(255, 255, 255, 90), 1);
 			}
 		}
 	}


fixed typo

fixed typo

--- HL7Tools/RemoveHL7Identifiers.cs
+++ HL7Tools/RemoveHL7Identifiers.cs
@@ -95,7 +95,7 @@
         [Parameter(
             Mandatory = false,
             Position = 3,
-            HelpMessage = "Swtich to overwrite the original file"
+            HelpMessage = "Switch to overwrite the original file"
         )]
         public SwitchParameter OverwriteFile
         {


Make ArchiveData implement IComparable Should allow you to sort lists of ArchiveData objects (and anything that extends from it, such as ArchiveFile) by name, alphabetically.

--- HedgeLib/Archives/ArchiveData.cs
+++ HedgeLib/Archives/ArchiveData.cs
@@ -2,7 +2,7 @@

 namespace HedgeLib.Archives
 {
-    public class ArchiveData
+    public class ArchiveData : IComparable
     {
         // Variables/Constants
         public string Name;
@@ -12,5 +12,17 @@
         {
             throw new NotImplementedException();
         }
+
+        public virtual int CompareTo(object obj)
+        {
+            if (obj == null)
+                return 1;
+
+            if (obj is ArchiveData data)
+                return Name.CompareTo(data.Name);
+
+            throw new NotImplementedException(
+                $"Cannot compare {GetType()} to {obj.GetType()}!");
+        }
     }
 }


Bumped version up

Bumped version up

--- EmpleoDotNet/Properties/AssemblyInfo.cs
+++ EmpleoDotNet/Properties/AssemblyInfo.cs
@@ -10,7 +10,7 @@
 [assembly: AssemblyConfiguration("")]
 [assembly: AssemblyCompany("")]
 [assembly: AssemblyProduct("EmpleoDotNet")]
-[assembly: AssemblyCopyright("Copyright ©  2014")]
+[assembly: AssemblyCopyright("Copyright ©  2016")]
 [assembly: AssemblyTrademark("")]
 [assembly: AssemblyCulture("")]

@@ -31,5 +31,5 @@
 //
 // You can specify all the values or you can default the Revision and Build Numbers
 // by using the '*' as shown below:
-[assembly: AssemblyVersion("0.3.0.0")]
-[assembly: AssemblyFileVersion("0.3.0.0")]
+[assembly: AssemblyVersion("0.4.0.0")]
+[assembly: AssemblyFileVersion("0.4.0.0")]


git-svn-id: https://jumony.svn.codeplex.com/svn/trunk@64339 2327b42d-5241-43d6-9e2a-de5ac946f064

--- Ivony.Html.Web.Mvc/JumonyView.cs
+++ Ivony.Html.Web.Mvc/JumonyView.cs
@@ -54,6 +54,10 @@

       ProcessActionLinks();

+
+
+      AddGeneratorMetaData();
+
       output.Write( Document.InnerHtml( true ) );
     }

@@ -100,5 +104,23 @@

+    private void AddGeneratorMetaData()
+    {
+      var factory = Document.GetNodeFactory();
+      if ( factory != null )
+      {
+        var meta = factory.CreateElement( "meta" );
+        meta.SetAttribute( "name" ).Value( "generator" );
+        meta.SetAttribute( "content" ).Value( "Jumony" );
+
+        var header = Document.Find( "html head" ).FirstOrDefault();
+
+        if ( header != null )
+          meta.InsertTo( header, 0 );
+
+      }
+    }
+
+
   }
 }


fixed #44

fixed #44

--- TCC.Core/AbnormalityManager.cs
+++ TCC.Core/AbnormalityManager.cs
@@ -57,7 +57,7 @@
         {
             var newAb = new AbnormalityDuration(ab, duration, stacks, target, BuffBarWindowManager.Instance.Dispatcher, true, PLAYER_AB_SIZE * .9, PLAYER_AB_SIZE, new System.Windows.Thickness(PLAYER_AB_LEFT_MARGIN));

-            if(ab.Type == AbnormalityType.Buff)
+            if (ab.Type == AbnormalityType.Buff)
             {
                 if (ab.Infinity)
                 {
@@ -81,24 +81,24 @@
         }
         static void EndPlayerAbnormality(Abnormality ab)
         {
-            if (ab.Infinity)
+            if (ab.Type == AbnormalityType.Buff)
             {
-                //SessionManager.CurrentPlayer.RemoveInfBuff(ab);
-                BuffBarWindowManager.Instance.Player.RemoveInfBuff(ab);
+                if (ab.Infinity)
+                {
+                    //SessionManager.CurrentPlayer.RemoveInfBuff(ab);
+                    BuffBarWindowManager.Instance.Player.RemoveInfBuff(ab);
+                }
+                else
+                {
+
+                    //SessionManager.CurrentPlayer.RemoveBuff(ab);
+                    BuffBarWindowManager.Instance.Player.RemoveBuff(ab);
+                }
             }
             else
             {
-                if (ab.Type == AbnormalityType.Buff)
-                {
-                    //SessionManager.CurrentPlayer.RemoveBuff(ab);
-                    BuffBarWindowManager.Instance.Player.RemoveBuff(ab);
-
-                }
-                else
-                {
-                    //SessionManager.CurrentPlayer.RemoveDebuff(ab);
-                    BuffBarWindowManager.Instance.Player.RemoveDebuff(ab);
-                }
+                //SessionManager.CurrentPlayer.RemoveDebuff(ab);
+                BuffBarWindowManager.Instance.Player.RemoveDebuff(ab);
             }
         }

@@ -106,7 +106,7 @@
         {
             if (EntitiesManager.TryGetBossById(target, out Boss b))
             {
-                b.AddorRefresh(new AbnormalityDuration(ab, duration, stacks, target, BossGageWindowManager.Instance.Dispatcher, true, BOSS_AB_SIZE*.9, BOSS_AB_SIZE, new System.Windows.Thickness(BOSS_AB_LEFT_MARGIN)));
+                b.AddorRefresh(new AbnormalityDuration(ab, duration, stacks, target, BossGageWindowManager.Instance.Dispatcher, true, BOSS_AB_SIZE * .9, BOSS_AB_SIZE, new System.Windows.Thickness(BOSS_AB_LEFT_MARGIN)));
             }
         }
         static bool Filter(Abnormality ab)


bumped version to 9.3 on account of the new Lite data file.

git-tfs-id: [https://tfs.codeplex.com:443/tfs/TFS06]$/51degrees;C76119

--- FoundationV3/Properties/AssemblyInfo.cs
+++ FoundationV3/Properties/AssemblyInfo.cs
@@ -37,7 +37,7 @@
 //      Build Number
 //      Revision

-[assembly: AssemblyVersion("3.1.9.2")]
-[assembly: AssemblyFileVersion("3.1.9.2")]
+[assembly: AssemblyVersion("3.1.9.3")]
+[assembly: AssemblyFileVersion("3.1.9.3")]
 [assembly: NeutralResourcesLanguage("en-GB")]
 [assembly: AllowPartiallyTrustedCallers]


added debuff tracking

added debuff tracking

--- TCC.Core/AbnormalityManager.cs
+++ TCC.Core/AbnormalityManager.cs
@@ -74,6 +74,8 @@
             else
             {
                 BuffBarWindowManager.Instance.Player.AddOrRefreshDebuff(ab, duration, stacks, PLAYER_AB_SIZE, PLAYER_AB_LEFT_MARGIN);
+                CharacterWindowManager.Instance.Player.AddToDebuffList(ab);
+                ClassManager.SetStatus(ab, true);

             }
         }
@@ -94,6 +96,8 @@
             else
             {
                 BuffBarWindowManager.Instance.Player.RemoveDebuff(ab);
+                CharacterWindowManager.Instance.Player.RemoveFromDebuffList(ab);
+                ClassManager.SetStatus(ab, false);
             }
         }


调整NetworkChannel，支持自定义包头，降低GCAlloc

调整NetworkChannel，支持自定义包头，降低GCAlloc

--- GameFramework/Network/NetworkManager.cs
+++ GameFramework/Network/NetworkManager.cs
@@ -57,17 +57,11 @@
         {
             add
             {
-                lock (m_NetworkConnectedEventHandler)
-                {
-                    m_NetworkConnectedEventHandler += value;
-                }
-            }
-            remove
-            {
-                lock (m_NetworkConnectedEventHandler)
-                {
-                    m_NetworkConnectedEventHandler -= value;
-                }
+                m_NetworkConnectedEventHandler += value;
+            }
+            remove
+            {
+                m_NetworkConnectedEventHandler -= value;
             }
         }

@@ -78,17 +72,11 @@
         {
             add
             {
-                lock (m_NetworkClosedEventHandler)
-                {
-                    m_NetworkClosedEventHandler += value;
-                }
-            }
-            remove
-            {
-                lock (m_NetworkClosedEventHandler)
-                {
-                    m_NetworkClosedEventHandler -= value;
-                }
+                m_NetworkClosedEventHandler += value;
+            }
+            remove
+            {
+                m_NetworkClosedEventHandler -= value;
             }
         }

@@ -99,17 +87,11 @@
         {
             add
             {
-                lock (m_NetworkSendPacketEventHandler)
-                {
-                    m_NetworkSendPacketEventHandler += value;
-                }
-            }
-            remove
-            {
-                lock (m_NetworkSendPacketEventHandler)
-                {
-                    m_NetworkSendPacketEventHandler -= value;
-                }
+                m_NetworkSendPacketEventHandler += value;
+            }
+            remove
+            {
+                m_NetworkSendPacketEventHandler -= value;
             }
         }

@@ -120,17 +102,11 @@
         {
             add
             {
-                lock (m_NetworkMissHeartBeatEventHandler)
-                {
-                    m_NetworkMissHeartBeatEventHandler += value;
-                }
-            }
-            remove
-            {
-                lock (m_NetworkMissHeartBeatEventHandler)
-                {
-                    m_NetworkMissHeartBeatEventHandler -= value;
-                }
+                m_NetworkMissHeartBeatEventHandler += value;
+            }
+            remove
+            {
+                m_NetworkMissHeartBeatEventHandler -= value;
             }
         }

@@ -141,17 +117,11 @@
         {
             add
             {
-                lock (m_NetworkErrorEventHandler)
-                {
-                    m_NetworkErrorEventHandler += value;
-                }
-            }
-            remove
-            {
-                lock (m_NetworkErrorEventHandler)
-                {
-                    m_NetworkErrorEventHandler -= value;
-                }
+                m_NetworkErrorEventHandler += value;
+            }
+            remove
+            {
+                m_NetworkErrorEventHandler -= value;
             }
         }

@@ -162,17 +132,11 @@
         {
             add
             {
-                lock (m_NetworkCustomErrorEventHandler)
-                {
-                    m_NetworkCustomErrorEventHandler += value;
-                }
-            }
-            remove
-            {
-                lock (m_NetworkCustomErrorEventHandler)
-                {
-                    m_NetworkCustomErrorEventHandler -= value;
-                }
+                m_NetworkCustomErrorEventHandler += value;
+            }
+            remove
+            {
+                m_NetworkCustomErrorEventHandler -= value;
             }
         }


[Rust] block command for connection w/o player

--- Games/Unity/Oxide.Game.Rust/RustCore.cs
+++ Games/Unity/Oxide.Game.Rust/RustCore.cs
@@ -799,6 +799,7 @@

             if (arg.connection != null)
             {
+                if (arg.Player() == null) return true;
                 var rustCovalence = Libraries.Covalence.RustCovalenceProvider.Instance;
                 var livePlayer = rustCovalence.PlayerManager.GetOnlinePlayer(arg.connection.userid.ToString());
                 if (rustCovalence.CommandSystem.HandleChatMessage(livePlayer, arg.GetString(0))) return true;


put defaults inside classes to lookup section names

--- phoenix/Defaults.cs
+++ phoenix/Defaults.cs
@@ -2,26 +2,28 @@
 {
     class Defaults
     {
-        #region Local
-        public static string ApplicationToWtach         = "";
-        public static string CommandLineArguments       = "";
-        public static string ScriptToExecuteOnCrash     = "";
-        public static int TimeDelayBeforeLaunch         = 10;
-        public static bool ForceAlwaysOnTop             = false;
-        public static bool ForceMaximize                = false;
-        public static bool EnableMetrics                = true;
-        public static bool AssumeCrashIfNotResponsive   = true;
-        public static bool StartWithWindows             = true;
-        public static bool EnableVerboseLogging         = true;
-        public static bool EnableScreenshotOnCrash      = true;
-        #endregion
+        public class Local
+        {
+            public static string ApplicationToWtach = "";
+            public static string CommandLineArguments = "";
+            public static string ScriptToExecuteOnCrash = "";
+            public static int TimeDelayBeforeLaunch = 10;
+            public static bool ForceAlwaysOnTop = false;
+            public static bool ForceMaximize = false;
+            public static bool EnableMetrics = true;
+            public static bool AssumeCrashIfNotResponsive = true;
+            public static bool StartWithWindows = true;
+            public static bool EnableVerboseLogging = true;
+            public static bool EnableScreenshotOnCrash = true;
+        }

-        #region Remote
-        public static string UpdateServerAddress        = "";
-        public static string UpdateChannel              = "#app";
-        public static bool ReceiveAnonymousUpdates      = false;
-        public static string UpdateHash                 = "-- no hash --";
-        public static string Username                   = "";
-        #endregion
+        public class Remote
+        {
+            public static string UpdateServerAddress = "";
+            public static string UpdateChannel = "#app";
+            public static bool ReceiveAnonymousUpdates = false;
+            public static string UpdateHash = "-- no hash --";
+            public static string Username = "";
+        }
     }
 }


Modify auto scrollbar settings.

Modify auto scrollbar settings.

--- AddIn/Dialog/Config/ConfigWindow.cs
+++ AddIn/Dialog/Config/ConfigWindow.cs
@@ -64,6 +64,9 @@
             var pane = this.configItemPanel;
             ConfigItemBase content;

+            // スクロールを無効化してスクロール位置を初期化
+            pane.AutoScroll = false;
+
             // 古いコンテンツを削除
             if (pane.Controls.Count > 0)
             {
@@ -79,6 +82,9 @@
                 pane.Controls.Add(content);
                 content.OnShow();
             }
+
+            // スクロールを有効化して必要に応じてスクロール表示
+            pane.AutoScroll = true;
         }

         /// <summary>


Make encoding table char[]

Make encoding table char[]

--- src/Base32Alphabet.cs
+++ src/Base32Alphabet.cs
@@ -28,12 +28,12 @@
         public static Base32Alphabet Rfc4648 = new Base32Alphabet("ABCDEFGHIJKLMNOPQRSTUVWXYZ234567");
         public static Base32Alphabet ExtendedHex = new Base32Alphabet("0123456789ABCDEFGHIJKLMNOPQRSTUV");

-        public string EncodingTable { get; private set; }
+        public char[] EncodingTable { get; private set; }
         public byte[] DecodingTable { get; protected set; }

         public Base32Alphabet(string chars)
         {
-            this.EncodingTable = chars;
+            this.EncodingTable = chars.ToCharArray();
             createDecodingTable(chars);
         }


generator.cs: allow MountainLionAttribute

--- src/generator.cs
+++ src/generator.cs
@@ -1661,7 +1661,7 @@
 					} else if (attr is NoDefaultValueAttribute) {
 						seenNoDefaultValue = true;
 						continue;
-					} else if (attr is SealedAttribute || attr is EventArgsAttribute || attr is DelegateNameAttribute || attr is EventNameAttribute || attr is ObsoleteAttribute || attr is AlphaAttribute || attr is NewAttribute || attr is SinceAttribute || attr is PostGetAttribute || attr is NullAllowedAttribute || attr is CheckDisposedAttribute || attr is SnippetAttribute || attr is LionAttribute || attr is AppearanceAttribute || attr is ThreadSafeAttribute || attr is AutoreleaseAttribute || attr is EditorBrowsableAttribute || attr is AdviceAttribute)
+					} else if (attr is SealedAttribute || attr is EventArgsAttribute || attr is DelegateNameAttribute || attr is EventNameAttribute || attr is ObsoleteAttribute || attr is AlphaAttribute || attr is NewAttribute || attr is SinceAttribute || attr is PostGetAttribute || attr is NullAllowedAttribute || attr is CheckDisposedAttribute || attr is SnippetAttribute || attr is LionAttribute || attr is MountainLionAttribute || attr is AppearanceAttribute || attr is ThreadSafeAttribute || attr is AutoreleaseAttribute || attr is EditorBrowsableAttribute || attr is AdviceAttribute)
 						continue;
 					else if (attr is MarshalNativeExceptionsAttribute)
 						continue;


Move is_unsafe to MemberInformation.

Move is_unsafe to MemberInformation.

--- src/generator.cs
+++ src/generator.cs
@@ -811,8 +811,9 @@
 {
 	public readonly bool is_abstract, is_protected, is_internal, is_override, is_new, is_sealed, is_static, is_thread_static, is_autorelease, is_wrapper;
 	public readonly Generator.ThreadCheck threadCheck;
-
-	public MemberInformation (MemberInfo mi, Type type)
+	public bool is_unsafe;
+
+	MemberInformation (MemberInfo mi, Type type)
 	{
 		is_abstract = Generator.HasAttribute (mi, typeof (AbstractAttribute)) && mi.DeclaringType == type;
 		is_protected = Generator.HasAttribute (mi, typeof (ProtectedAttribute));
@@ -826,6 +827,19 @@
 		is_wrapper = !Generator.HasAttribute (mi.DeclaringType, typeof(SyntheticAttribute));
 		threadCheck = Generator.HasAttribute (mi, typeof (ThreadSafeAttribute)) ? Generator.ThreadCheck.Off : Generator.ThreadCheck.On;

+	}
+
+	public MemberInformation (MethodInfo mi, Type type) : this ((MemberInfo)mi, type)
+	{
+		foreach (ParameterInfo pi in mi.GetParameters ())
+			if (pi.ParameterType.IsSubclassOf (typeof (Delegate)))
+				is_unsafe = true;
+	}
+
+	public MemberInformation (PropertyInfo pi, Type type) : this ((MemberInfo)pi, type)
+	{
+		if (pi.PropertyType.IsSubclassOf (typeof (Delegate)))
+			is_unsafe = true;
 	}

 	public string GetVisibility ()
@@ -2836,10 +2850,6 @@
 		string wrap;
 		var export = GetExportAttribute (pi, out wrap);
 		var minfo = new MemberInformation (pi, type);
-		bool is_unsafe = false;
-
-		if (pi.PropertyType.IsSubclassOf (typeof (Delegate)))
-			is_unsafe = true;

 		var mod = minfo.GetVisibility ();

@@ -2848,7 +2858,7 @@
 			PrintPropertyAttributes (pi);
 			print ("{0} {1}{2}{3}{4} {5} {{",
 			       mod,
-			       is_unsafe ? "unsafe " : "",
+			       minfo.is_unsafe ? "unsafe " : "",
 			       minfo.is_new ? "new " : "",
 			       (minfo.is_static ? "static " : ""),
 			       FormatType (pi.DeclaringType,  pi.PropertyType),
@@ -2915,7 +2925,7 @@

 		print ("{0} {1}{2}{3}{4} {5} {{",
 		       mod,
-		       is_unsafe ? "unsafe " : "",
+		       minfo.is_unsafe ? "unsafe " : "",
 		       minfo.is_new ? "new " : "",
 		       override_mod,
 		       FormatType (pi.DeclaringType,  pi.PropertyType),
@@ -3089,19 +3099,13 @@
 		if (minfo.is_static || category_extension_type != null)
 			virtual_method = false;

-		bool is_unsafe = false;
-
-		foreach (ParameterInfo pi in mi.GetParameters ())
-			if (pi.ParameterType.IsSubclassOf (typeof (Delegate)))
-				is_unsafe = true;
-
 		var mod = minfo.GetVisibility ();

 		bool ctor;
 		print_generated_code ();
 		print ("{0} {1}{2}{3}{4}{5}",
 		       mod,
-		       is_unsafe ? "unsafe " : "",
+		       minfo.is_unsafe ? "unsafe " : "",
 		       minfo.is_new ? "new " : "",
 		       minfo.is_sealed ? "" : (minfo.is_abstract ? "abstract " : (virtual_method ? (minfo.is_override ? "override " : "virtual ") : (minfo.is_static || category_extension_type != null ? "static " : ""))),
 		       MakeSignature (mi, out ctor, category_extension_type),


Added average rtt label to graph

Added average rtt label to graph

--- src/Commands/Graph.cs
+++ src/Commands/Graph.cs
@@ -82,6 +82,7 @@
         private int m_FailLabelX, m_FailLabelY;
         private int m_RttLabelX, m_RttLabelY;
         private int m_TimeLabelX, m_TimeLabelY;
+        private int m_AvgLabelX, m_AvgLabelY;
         private int m_yAxisStart;

         public Graph(string address, CancellationToken cancellationTkn)
@@ -437,6 +438,12 @@
             Console.Write("           Received: ");
             m_RecvLabelX = Console.CursorLeft;
             m_RecvLabelY = Console.CursorTop;
+            Console.ForegroundColor = ConsoleColor.Gray;
+
+            Console.ForegroundColor = ConsoleColor.Yellow;
+            Console.Write("           Average: ");
+            m_AvgLabelX = Console.CursorLeft;
+            m_AvgLabelY = Console.CursorTop;
             Console.WriteLine();
             Console.ForegroundColor = ConsoleColor.Gray;

@@ -603,36 +610,43 @@
             Console.CursorLeft = Console.CursorLeft - 8;
             Console.Write(results.Received);

-            // Update fail label
-            Console.SetCursorPosition(m_FailLabelX, m_FailLabelY);
+            // Update average label
+            Console.SetCursorPosition(m_AvgLabelX, m_AvgLabelY);
             Console.Write(blankLabel);
             Console.CursorLeft = Console.CursorLeft - 8;
-            Console.Write(results.Lost);
-
-            // Update RTT label
-            Console.SetCursorPosition(m_RttLabelX, m_RttLabelY);
-            Console.Write(blankLabel);
-            Console.CursorLeft = Console.CursorLeft - 8;
-            Console.Write("{0:0.0}ms (avg ", results.CurrTime);
             double r = Math.Round(results.AvgTime, 1);
             if (lastAvg < r) {
                 Console.ForegroundColor = ConsoleColor.DarkRed;
                 Console.Write("+");
                 if (results.CurrTime - lastRes > 20)
                     Console.Write("+");
-            } else if (lastAvg > r) {
+            }
+            else if (lastAvg > r) {
                 Console.ForegroundColor = ConsoleColor.DarkGreen;
                 Console.Write("-");
                 if (lastRes - results.CurrTime > 20)
                     Console.Write("-");
-            } else {
+            }
+            else {
                 Console.ForegroundColor = ConsoleColor.DarkYellow;
                 Console.Write("~");
             }
             lastAvg = r;
             lastRes = results.CurrTime;
             Console.ResetColor();
-            Console.Write("{0:0.0}ms)", results.AvgTime);
+            Console.Write("{0:0.0}ms", results.AvgTime);
+
+            // Update fail label
+            Console.SetCursorPosition(m_FailLabelX, m_FailLabelY);
+            Console.Write(blankLabel);
+            Console.CursorLeft = Console.CursorLeft - 8;
+            Console.Write(results.Lost);
+
+            // Update RTT label
+            Console.SetCursorPosition(m_RttLabelX, m_RttLabelY);
+            Console.Write(blankLabel);
+            Console.CursorLeft = Console.CursorLeft - 8;
+            Console.Write("{0:0.0}ms", results.CurrTime);

             // Update time label
             Console.SetCursorPosition(m_TimeLabelX, m_TimeLabelY);


feat: 为 ToHexString(...) 方法增加 offset、count 参数即指定范围的特性。 :sunflower:

--- src/Common/Convert.cs
+++ src/Common/Convert.cs
@@ -188,45 +188,70 @@
 		/// 将指定的字节数组转换为其用十六进制数字编码的等效字符串表示形式。
 		/// </summary>
 		/// <param name="bytes">一个 8 位无符号字节数组。</param>
+		/// <param name="lowerCase">返回的十六进制字符串中是否使用小写字符，默认为大写。</param>
 		/// <returns>参数中元素的字符串表示形式，以十六进制文本表示。</returns>
-		public static string ToHexString(byte[] bytes)
-		{
-			return ToHexString(bytes, '\0');
+		public static string ToHexString(byte[] bytes, bool lowerCase = false)
+		{
+			return ToHexString(bytes, 0, 0, '\0', lowerCase);
 		}

 		/// <summary>
 		/// 将指定的字节数组转换为其用十六进制数字编码的等效字符串表示形式。
 		/// </summary>
 		/// <param name="bytes">一个 8 位无符号字节数组。</param>
-		/// <param name="isLower">返回的十六进制字符串中是否使用小写字符，默认为大写。</param>
+		/// <param name="offset">指定字节数组的起始下标。</param>
+		/// <param name="count">指定字节数组的元素个数。</param>
+		/// <param name="lowerCase">返回的十六进制字符串中是否使用小写字符，默认为大写。</param>
 		/// <returns>参数中元素的字符串表示形式，以十六进制文本表示。</returns>
-		public static string ToHexString(byte[] bytes, bool isLower)
-		{
-			return ToHexString(bytes, '\0', isLower);
-		}
-
-		/// <summary>
-		/// 将指定的字节数组转换为其用十六进制数字编码的等效字符串表示形式。参数指定是否在返回值中插入分隔符。
+		public static string ToHexString(byte[] bytes, int offset, int count, bool lowerCase = false)
+		{
+			return ToHexString(bytes, offset, count, '\0', lowerCase);
+		}
+
+		/// <summary>
+		/// 将指定的字节数组转换为其用十六进制数字编码的等效字符串表示形式。
 		/// </summary>
 		/// <param name="bytes">一个 8 位无符号字节数组。</param>
 		/// <param name="separator">每字节对应的十六进制文本中间的分隔符。</param>
-		/// <param name="isLower">返回的十六进制字符串中是否使用小写字符，默认为大写。</param>
+		/// <param name="lowerCase">返回的十六进制字符串中是否使用小写字符，默认为大写。</param>
 		/// <returns>参数中元素的字符串表示形式，以十六进制文本表示。</returns>
-		public static string ToHexString(byte[] bytes, char separator, bool isLower = false)
-		{
-			if(bytes == null || bytes.Length < 1)
+		public static string ToHexString(byte[] bytes, char separator, bool lowerCase = false)
+		{
+			return ToHexString(bytes, 0, 0, separator, lowerCase);
+		}
+
+		/// <summary>
+		/// 将指定的字节数组转换为其用十六进制数字编码的等效字符串表示形式。
+		/// </summary>
+		/// <param name="bytes">一个 8 位无符号字节数组。</param>
+		/// <param name="offset">指定字节数组的起始下标。</param>
+		/// <param name="count">指定字节数组的元素个数。</param>
+		/// <param name="separator">每字节对应的十六进制文本中间的分隔符。</param>
+		/// <param name="lowerCase">返回的十六进制字符串中是否使用小写字符，默认为大写。</param>
+		/// <returns>参数中元素的字符串表示形式，以十六进制文本表示。</returns>
+		public static string ToHexString(byte[] bytes, int offset, int count, char separator, bool lowerCase = false)
+		{
+			if(bytes == null || bytes.Length == 0)
 				return string.Empty;

-			var alpha = isLower ? 'a' : 'A';
+			if(offset < 0 || offset >= bytes.Length)
+				throw new ArgumentOutOfRangeException(nameof(offset));
+
+			if(count < 1)
+				count = (bytes.Length - offset);
+			else
+				count = Math.Min(bytes.Length - offset, count);
+
+			var alpha = lowerCase ? 'a' : 'A';
 			var rank = separator == '\0' ? 2 : 3;
-			var characters = new char[bytes.Length * rank - (rank - 2)];
-
-			for(int i = 0; i < bytes.Length; i++)
-			{
-				characters[i * rank] = GetDigit((byte)(bytes[i] / 16), alpha);
-				characters[i * rank + 1] = GetDigit((byte)(bytes[i] % 16), alpha);
-
-				if(rank == 3 && i < bytes.Length - 1)
+			var characters = new char[count * rank - (rank - 2)];
+
+			for(int i = 0; i < count; i++)
+			{
+				characters[i * rank] = GetDigit((byte)(bytes[offset + i] / 16), alpha);
+				characters[i * rank + 1] = GetDigit((byte)(bytes[offset + i] % 16), alpha);
+
+				if(rank == 3 && i < count - 1)
 					characters[i * rank + 2] = separator;
 			}


Update Program.cs

Update Program.cs

Solving the problems that project cannot be run on IIS.

--- test/Ocelot.ManualTest/Program.cs
+++ test/Ocelot.ManualTest/Program.cs
@@ -16,8 +16,8 @@

             builder.UseKestrel()
                 .UseContentRoot(Directory.GetCurrentDirectory())
-                .UseStartup<Startup>();
-
+                .UseIISIntegration()
+                .UseStartup<Startup>();
             var host = builder.Build();

             host.Run();


TypeDef now implements IMemberRefResolver

Also add Resolve{Method,Field}() methods

--- src/DotNet/TypeDef.cs
+++ src/DotNet/TypeDef.cs
@@ -6,7 +6,7 @@
 	/// <summary>
 	/// A high-level representation of a row in the TypeDef table
 	/// </summary>
-	public abstract class TypeDef : ITypeDefOrRef, IHasCustomAttribute, IHasDeclSecurity, IMemberRefParent, ITypeOrMethodDef, IListListener<FieldDef>, IListListener<MethodDef>, IListListener<TypeDef>, IListListener<EventDef>, IListListener<PropertyDef> {
+	public abstract class TypeDef : ITypeDefOrRef, IHasCustomAttribute, IHasDeclSecurity, IMemberRefParent, ITypeOrMethodDef, IListListener<FieldDef>, IListListener<MethodDef>, IListListener<TypeDef>, IListListener<EventDef>, IListListener<PropertyDef>, IMemberRefResolver {
 		/// <summary>
 		/// The row id in its table
 		/// </summary>
@@ -494,6 +494,66 @@
 		/// </summary>
 		public IEnumerable<TypeDef> GetTypes() {
 			return AllTypesHelper.Types(NestedTypes);
+		}
+
+		/// <summary>
+		/// Resolves a method or a field. The <see cref="MemberRef.Class"/> (owner type) is
+		/// ignored when resolving the method/field.
+		/// </summary>
+		/// <param name="memberRef">A method/field reference</param>
+		/// <returns>A <see cref="MethodDef"/> or a <see cref="FieldDef"/> instance or <c>null</c>
+		/// if it couldn't be resolved.</returns>
+		public IMemberForwarded Resolve(MemberRef memberRef) {
+			if (memberRef == null)
+				return null;
+
+			var methodSig = memberRef.MethodSig;
+			if (methodSig != null)
+				return ResolveMethod(memberRef.Name, methodSig);
+
+			var fieldSig = memberRef.FieldSig;
+			if (fieldSig != null)
+				return ResolveField(memberRef.Name, fieldSig);
+
+			return null;
+		}
+
+		/// <summary>
+		/// Resolves a method
+		/// </summary>
+		/// <param name="name">Method name</param>
+		/// <param name="sig">Method signature</param>
+		/// <returns>The first method that matches or <c>null</c> if none found</returns>
+		public MethodDef ResolveMethod(UTF8String name, MethodSig sig) {
+			if (UTF8String.IsNull(name) || sig == null)
+				return null;
+			var comparer = new SigComparer(0);
+			foreach (var method in Methods) {
+				if (UTF8String.CompareTo(name, method.Name) != 0)
+					continue;
+				if (comparer.Equals(method.MethodSig, sig))
+					return method;
+			}
+			return null;
+		}
+
+		/// <summary>
+		/// Resolves a field
+		/// </summary>
+		/// <param name="name">Field name</param>
+		/// <param name="sig">Field signature</param>
+		/// <returns>The first field that matches or <c>null</c> if none found</returns>
+		public FieldDef ResolveField(UTF8String name, FieldSig sig) {
+			if (UTF8String.IsNull(name) || sig == null)
+				return null;
+			var comparer = new SigComparer(0);
+			foreach (var field in Fields) {
+				if (UTF8String.CompareTo(name, field.Name) != 0)
+					continue;
+				if (comparer.Equals(field.FieldSig, sig))
+					return field;
+			}
+			return null;
 		}

 		/// <inheritdoc/>


Add class comment and remove useless using statements

--- src/DotNet/TypeSig.cs
+++ src/DotNet/TypeSig.cs
@@ -1,7 +1,33 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using dot10.DotNet.MD;
+using System.Collections.Generic;
+
+/*
+All TypeSig classes:
+
+TypeSig								base class
+	LeafSig							base class for leaf types
+		TypeDefOrRefSig				contains a ITypeDefOrRef instance
+			CorLibTypeSig			simple corlib types (eg. System.Int32)
+			ClassOrValueTypeSig		base class for Class/ValueType element types
+				ValueTypeSig		ValueType
+				ClassSig			Class
+		GenericSig					base class for generic vars
+			GenericVar				Generic type parameter
+			GenericMVar				Generic method parameter
+		SentinelSig					Sentinel
+		FnPtrSig					Function pointer sig
+		GenericInstSig				Generic instance type (contains a generic type + all generic args)
+	NonLeafSig						base class for non-leaf types
+		PtrSig						Pointer
+		ByRefSig					By ref
+		ArraySig					Array
+		SZArraySig					Single dimension, zero lower limit array (i.e., THETYPE[])
+		ModifierSig					C modifier base class
+			CModReqdSig				C required modifier
+			CModOptSig				C optional modifier
+		PinnedSig					Pinned
+		ValueArraySig				Value array (undocumented/not implemented by the CLR so don't use it)
+		ModuleSig					Module (undocumented/not implemented by the CLR so don't use it)
+*/

 namespace dot10.DotNet {
 	/// <summary>


Change int16 _cpuUsage to double

Change int16 _cpuUsage to double

--- srcCs/CpuMonitor.cs
+++ srcCs/CpuMonitor.cs
@@ -26,8 +26,8 @@
         ComTypes.FILETIME _prevSysKernel;
         ComTypes.FILETIME _prevSysUser;
         TimeSpan _prevProcTotal;
-        Int16 _cpuUsage;
-        Int16 _cpuUsageTotal;
+        double _cpuUsage;
+        double _cpuUsageTotal;
         DateTime _lastRun;
         long _counter;


forcing the toolbar style

forcing the toolbar style

svn path=/trunk/; revision=3280

--- src/FullScreenView.cs
+++ src/FullScreenView.cs
@@ -101,6 +101,8 @@
 				scroll.ScrolledWindow.Add (view);

 				Toolbar tbar = new Toolbar ();
+				tbar.ToolbarStyle = Gtk.ToolbarStyle.BothHoriz;
+
 				tbar.ShowArrow = false;
 				tbar.BorderWidth = 15;


refactor

refactor

--- src/GridController.cs
+++ src/GridController.cs
@@ -46,7 +46,7 @@

     public void createAcrossSums() {
       foreach (RowDef row in rows) {
-        for (int c = 0; c < rows[0].size(); ++c) {
+        foreach (var c in Enumerable.Range(0, rows[0].size())) {
           var optCell = row.get(c);
           if (optCell.HasValue) {
             var cell = optCell.get();
@@ -63,8 +63,8 @@
     }

     public void createDownSums() {
-      for (int r = 0; r < rows.Count; ++r) {
-        for (int c = 0; c < rows[0].size(); ++c) {
+      foreach (var r in Enumerable.Range(0, rows.Count)) {
+        foreach (var c in Enumerable.Range(0, rows[0].size())) {
           var optCell = rows[r].get(c);
           if (optCell.HasValue) {
             var cell = optCell.get();


增加对忽略空的序列化选项的支持。 :trophy:

增加对忽略空的序列化选项的支持。 :trophy:

--- src/JsonSerializer.cs
+++ src/JsonSerializer.cs
@@ -176,10 +176,13 @@
 				if(settings.MaximumDepth > 0)
 					result.MaxDepth = settings.MaximumDepth;

+				if((settings.SerializationBehavior & SerializationBehavior.IgnoreNullValue) == SerializationBehavior.IgnoreNullValue)
+					result.NullValueHandling = NullValueHandling.Ignore;
+
 				if((settings.SerializationBehavior & SerializationBehavior.IgnoreDefaultValue) == SerializationBehavior.IgnoreDefaultValue)
 				{
+					result.NullValueHandling = NullValueHandling.Ignore;
 					result.DefaultValueHandling = DefaultValueHandling.Ignore;
-					result.NullValueHandling = NullValueHandling.Ignore;
 				}
 			}