From mytechdoubt@yahoo.com Tue Oct 1 06:15:30 2002 From: mytechdoubt@yahoo.com (mani gandan) Date: Mon, 30 Sep 2002 22:15:30 -0700 (PDT) Subject: [Mono-list] Optimization in Mono In-Reply-To: <20020922014529.GA10888@skyris.ath.cx> Message-ID: <20021001051530.36373.qmail@web21007.mail.yahoo.com> --0-1796427293-1033449330=:35372 Content-Type: text/plain; charset=us-ascii Hi, What extent optimization is achieved in MONO? Regards manigandan --------------------------------- Do you Yahoo!? New DSL Internet Access from SBC & Yahoo! --0-1796427293-1033449330=:35372 Content-Type: text/html; charset=us-ascii

Hi,

What extent optimization is achieved in MONO?

Regards

manigandan

 



Do you Yahoo!?
New DSL Internet Access from SBC & Yahoo! --0-1796427293-1033449330=:35372-- From marco.parenzan@libero.it Tue Oct 1 06:45:48 2002 From: marco.parenzan@libero.it (Marco Parenzan) Date: Tue, 1 Oct 2002 07:45:48 +0200 Subject: [Mono-list] VB.NET and C# differences in compiling References: Message-ID: <001c01c2690d$cb25d220$1464000a@retedis.com> Well, for my own job, I'll need to work on compiler...but... Two things: - No...I don't know yacc/jay....I need to study it... - Miguel said in one message that the approach to copy mcs AST is not a good idea. What about that? I think that I can work on Microsoft.VisualBasic namespace...so you can work on compiler. If for you is ok.....give me a status..and a priority plan on development of Microsoft.VisualBasic you need.... Marco ----- Original Message ----- From: "A Rafael D Teixeira" To: Cc: Sent: Monday, September 30, 2002 7:19 PM Subject: Re: [Mono-list] VB.NET and C# differences in compiling > >Just one question: Miguel said that MonoBasic seems not to be a priority. > >But I'm very interested. I'd like to work on a VB compiler. > > > >Can I help in any way? > > Welcome aboard, Marco > > I think that the people that was helping me implement Microsoft.VisualBasic > is gone, could you tackle that or prefer to work directly in the compiler? > > In the compiler, I was delayed by my perfeccionism in making Mono.GetOptions > the new option supplier for mbas' driver. It's usable now (just response > file support is really missing on Mono.GetOptions). > > My strategy is to follow mcs lead on generating the AST. So I look into mcs > jay file and adapt it to mbas syntax. Do you know yacc/jay? > > Down the pipe we will need to parametize the symbol resolver to accomodate > VB.NET case-insensitive syntax. And plug a different overload resolver (the > overload criteria is different between the languages). > > Late binding also needs work but most of it are calls to functions like: > > Microsoft.VisualBasic.CompilerServices.LateBinding::LateCall > > So we get back to that supporting DLL... > > Thanks in advance for any help > > Rafael Teixeira > Brazilian Polymath > > > _________________________________________________________________ > Join the world's largest e-mail service with MSN Hotmail. > http://www.hotmail.com > From Sebastien Pouliot Tue Oct 1 02:19:47 2002 From: Sebastien Pouliot (Sebastien Pouliot) Date: Mon, 30 Sep 2002 21:19:47 -0400 Subject: [Mono-list] FAQ update Message-ID: <000801c268e8$a3743ac0$0301a8c0@einstein> This is a multi-part message in MIME format. --Boundary_(ID_AK0873Xhs+j5Q3zWJwsNeQ) Content-type: text/plain; charset=iso-8859-1 Content-transfer-encoding: 7BIT You can update question 4 from the FAQ from: > Question 4: Where can I find the specification for these technologies? > > You can find the work-in-progress documentation from the T3G ECMA group here: http://www.dotnetexperts.com to: You can find the ECMA standard documentation here: C# http://www.ecma.ch/ecma1/STAND/ecma-334.htm CLI http://www.ecma.ch/ecma1/STAND/ecma-335.htm --Boundary_(ID_AK0873Xhs+j5Q3zWJwsNeQ) Content-type: text/html; charset=iso-8859-1 Content-transfer-encoding: 7BIT
You can update question 4 from the FAQ from:
 
> Question 4: Where can I find the specification for these technologies?
>
> You can find the work-in-progress documentation from the T3G ECMA group here: http://www.dotnetexperts.com
 
to:
 
You can find the ECMA standard documentation here:
C#    
--Boundary_(ID_AK0873Xhs+j5Q3zWJwsNeQ)-- From chandrakm@hotmail.com Tue Oct 1 06:41:22 2002 From: chandrakm@hotmail.com (krishnamoorthy C) Date: Tue, 01 Oct 2002 00:41:22 -0500 Subject: [Mono-list] I would like to contribute to your project Message-ID: Hello, I would like to contribute to your Ximian project for free. What are the prerequisites ? . What is the procedure? . Thanks. Sincerely, K Chandra *********** "HOC EST VERUM ET NIHILI NISI VERUM" ****************** This is the truth and nothing but the truth _________________________________________________________________ Join the world’s largest e-mail service with MSN Hotmail. http://www.hotmail.com From andy@nobugs.org Tue Oct 1 09:12:27 2002 From: andy@nobugs.org (Andrew Birkett) Date: 01 Oct 2002 09:12:27 +0100 Subject: [Mono-list] Optimization in Mono In-Reply-To: <20021001051530.36373.qmail@web21007.mail.yahoo.com> References: <20021001051530.36373.qmail@web21007.mail.yahoo.com> Message-ID: <1033459950.6950.26.camel@localhost.localdomain> On Tue, 2002-10-01 at 06:15, mani gandan wrote: > > What extent optimization is achieved in MONO? There's two places where you can perform optimization. Firstly, you can make mcs produce more efficient IL by performing constant folding, common subexpression elimination, loop invariant motion and things like that. Currently, mcs currently implements constant folding, some loop inversion and dead code elimination. These are the kind of operations which you'd see being performed on the intermediate representation of a traditional compiler. I think we'd get a big improvement from adding a peephole optimizer, which looks at small sequences of IL (the peephole) and transforms them into more efficient sequences. It doesn't require complex dataflow analysis. I would be interested in working on this (or a generic IL optimizer) once I've finished the RC2 encryption stuff which I'm now doing. The second place where you can optimize is in the jit, where you convert from IL into assembly fragments on-the-fly. This is similar to the backend of a traditional compiler. There's lots of ways to map IL sequences into assembly sequences. Mono uses a tree matching scheme similar to the lcc compiler - it reconstructs the flat stack-based IL code into a tree and then uses template-matching to convert subtrees into assembly. Then you have to allocate registers to the assembly sequences, which is a tricky in general, and particularly tricky on the x86 where you have so few general purpose registers. Unlike a traditional compiler, a JIT compiler has to do all this very quickly. There's no point spending ten seconds optimizing a routine which is only going to be called once and take a millisecond to run. There is a huge amount of research papers which cover efficient code generation for Java, which will be immediately relevant to mono. Andrew From dufrp@hotmail.com Tue Oct 1 09:20:52 2002 From: dufrp@hotmail.com (Paul Dufresne) Date: Tue, 01 Oct 2002 08:20:52 +0000 Subject: [Mono-list] error CS5001: Test.exe does not have an entry point defined Message-ID: I typed: mcs Test.cs I also tried mcs /t:exe /main:Test Test.cs but with the same result. Note that mcs /t:module Test.cs works fine. Here is Test.cs: using System; class Test{ public static void main(){ Console.WriteLine("Hello world\nHow are you today?"); } } This is a Debian woody installed from DebianPlanet yesterday. What's wrong with that? _________________________________________________________________ Rejoignez MSN Hotmail, le plus important service de messagerie http://www.hotmail.com/fr From rodrigo@ximian.com Tue Oct 1 10:16:20 2002 From: rodrigo@ximian.com (Rodrigo Moya) Date: 01 Oct 2002 11:16:20 +0200 Subject: [Mono-list] Test class for SqlBoolean In-Reply-To: <200209302018.53907.vi64pa@koti.soon.fi> References: <1033380245.19153.50.camel@localhost> <200209302018.53907.vi64pa@koti.soon.fi> Message-ID: <1033463779.2362.12.camel@localhost> On Mon, 2002-09-30 at 19:18, ville wrote: > > > > yes, please ville, do what Nick says and resend the file and I'll put it > > on CVS. > > Now it is done. > > I have tested this with w2k and tests went through without problems. > ok, applied to CVS. cheers -- Rodrigo Moya From dick@ximian.com Tue Oct 1 10:42:23 2002 From: dick@ximian.com (Dick Porter) Date: 01 Oct 2002 10:42:23 +0100 Subject: [Mono-list] error CS5001: Test.exe does not have an entry point defined In-Reply-To: References: Message-ID: <1033465343.21660.30.camel@hagbard.apathetic.discordia.org.uk> On Tue, 2002-10-01 at 09:20, Paul Dufresne wrote: > public static void main(){ > What's wrong with that? Main - Dick From martin_aliger@email.cz Tue Oct 1 11:39:38 2002 From: martin_aliger@email.cz (Martin Aliger) Date: Tue, 1 Oct 2002 12:39:38 +0200 (CEST) Subject: [Mono-list] GetModules Message-ID: <3D997B6A.000001.24887@email1.atc.cz> Hi, Is anybody working on System.Reflection GetModules? It is needed to get MkMaster working. Martin ______________________________________________________________________________ SB KOMPLET® Informaèní ekonomický systém http://www.sb-komplet.cz …umíme svoji práci! From lupus@ximian.com Tue Oct 1 11:54:02 2002 From: lupus@ximian.com (Paolo Molaro) Date: Tue, 1 Oct 2002 12:54:02 +0200 Subject: [Mono-list] I would like to contribute to your project In-Reply-To: References: Message-ID: <20021001105402.GB19193@debian.org> On 10/01/02 krishnamoorthy C wrote: > I would like to contribute to your Ximian project for free. What are the > prerequisites ? . What is the procedure? . Check: http://www.go-mono.com/contributing.html lupus -- ----------------------------------------------------------------- lupus@debian.org debian/rules lupus@ximian.com Monkeys do it better From lupus@ximian.com Tue Oct 1 11:59:00 2002 From: lupus@ximian.com (Paolo Molaro) Date: Tue, 1 Oct 2002 12:59:00 +0200 Subject: [Mono-list] Test failure In-Reply-To: <9A4FC925410C024792B85198DF1E97E403F45990@usmsg03.sagus.com> References: <9A4FC925410C024792B85198DF1E97E403F45990@usmsg03.sagus.com> Message-ID: <20021001105859.GC19193@debian.org> On 09/30/02 Ferguson, Neale wrote: > I changed the variable CSC in Makefile to invoke mcs as I could not find a > csc anywhere. The tests pass up until: > > exception3.cs(32) error CS0165: Use of unassigned local variable `res' > Compilation failed: 1 error(s), 0 warnings mcs bug: I filed http://bugzilla.ximian.com/show_bug.cgi?id=31546 for it. lupus -- ----------------------------------------------------------------- lupus@debian.org debian/rules lupus@ximian.com Monkeys do it better From lupus@ximian.com Tue Oct 1 12:08:37 2002 From: lupus@ximian.com (Paolo Molaro) Date: Tue, 1 Oct 2002 13:08:37 +0200 Subject: [Mono-list] Test failure In-Reply-To: <9A4FC925410C024792B85198DF1E97E403F45996@usmsg03.sagus.com> References: <9A4FC925410C024792B85198DF1E97E403F45996@usmsg03.sagus.com> Message-ID: <20021001110837.GD19193@debian.org> On 09/30/02 Ferguson, Neale wrote: > Okay, here's the results of the 1st attempt at running the tests on S/390 > (summary 112 passed/16 failed). Which of these would require exercising of Pretty good results! > the mono_create_method_pointer code that tramp.c would emit? Some of the pinvoke tests. > Testing exception6.exe... failed 2048 (8) signal (0). Need to finish the .ovf opcode implementation in mint: fails on x86, too. > Testing pinvoke1.exe... pass. > Testing pinvoke2.exe... failed 34304 (134) signal (0). > Testing pinvoke3.exe... failed 34304 (134) signal (0). > Testing pinvoke4.exe... failed 34304 (134) signal (0). > Testing pinvoke5.exe... pass. > Testing pinvoke6.exe... failed 65280 (255) signal (0). > Testing pinvoke7.exe... failed 65280 (255) signal (0). > Testing pinvoke8.exe... failed 34304 (134) signal (0). > Testing pinvoke9.exe... failed 256 (1) signal (0). Only pinvoke7.exe fails on x86. > Testing cattr-object.exe... failed 512 (2) signal (0). mcs bug: http://bugzilla.ximian.com/show_bug.cgi?id=28562 > Testing jit-int.exe... failed 65280 (255) signal (0). I guess a mint bug: it fails on x86, too. > Testing appdomain2.exe... failed 1024 (4) signal (0). Fails on x86, too. > Testing vararg.exe... failed 34304 (134) signal (0). Vararg call convention not yet implemented in the runtime and in mint, not important. > Testing marshal2.exe... failed 256 (1) signal (0). Fails on x86, too. > Testing marshal4.exe... failed 34304 (134) signal (0). > Testing thread5.exe... failed 256 (1) signal (0). Works on x86. > Testing thread6.exe... failed 35328 (138) signal (0). Fails on x86, too. > ilasm cpblkTest.il /OUTPUT=cpblkTest.exe > make: ilasm: Command not found > make: *** [cpblkTest.exe] Error 127 You need an il assembler to compile .il programs: there is one in the mcs module, but it's not yet ready to compile our test programs, I guess. Hope this helps. lupus -- ----------------------------------------------------------------- lupus@debian.org debian/rules lupus@ximian.com Monkeys do it better From lupus@ximian.com Tue Oct 1 12:13:54 2002 From: lupus@ximian.com (Paolo Molaro) Date: Tue, 1 Oct 2002 13:13:54 +0200 Subject: [Mono-list] Test failure In-Reply-To: <20020930191017.GD1964@odo.ecs.umass.edu> References: <9A4FC925410C024792B85198DF1E97E403F45996@usmsg03.sagus.com> <20020930191017.GD1964@odo.ecs.umass.edu> Message-ID: <20021001111354.GE19193@debian.org> On 09/30/02 Mark Crichton wrote: > > Testing pinvoke2.exe... failed 34304 (134) signal (0). > > Testing pinvoke3.exe... failed 34304 (134) signal (0). > > Testing pinvoke4.exe... failed 34304 (134) signal (0). > > You're catching a SIGTRAP. For pinvoke2, I'm getting an error there > since I cannot handle MONO_TYPE_VALUETYPE where its size != 4. This is > where PPC does some memcpy trickery. I don't know if this would work > on Sparc or S/390. It might. A MONO_TYPE_VALUETYPE is a structure: when you need to copy it, you need to use memcpy (it's optimized with a register load/store if the size is 4 bytes). > pinvoke3 and 4 fail for me with error 255. I've been told that is > somewhat normal, but I don't know why. Lupus, can you explain that one > to me? It's not normal:-) A 0 result would be normal. It's probably getting a signal (segfault?) and mint has a bug that will make it quit with 255 error message instead of printing the backtrace. > > Testing pinvoke8.exe... failed 34304 (134) signal (0). > > For me, I put an assert, since I cannot handle a value type as a return > value from a delegate. No clue on how I'll fix that one. See above, use memcpy. The other errors I explained already in another mail. lupus -- ----------------------------------------------------------------- lupus@debian.org debian/rules lupus@ximian.com Monkeys do it better From lupus@ximian.com Tue Oct 1 12:16:20 2002 From: lupus@ximian.com (Paolo Molaro) Date: Tue, 1 Oct 2002 13:16:20 +0200 Subject: [Mono-list] mono executable In-Reply-To: <9A4FC925410C024792B85198DF1E97E403F4598B@usmsg03.sagus.com> References: <9A4FC925410C024792B85198DF1E97E403F4598B@usmsg03.sagus.com> Message-ID: <20021001111620.GF19193@debian.org> On 09/30/02 Ferguson, Neale wrote: > The build for mono goes through cleanly, the mcs build (using the latest > monocharge stuff) trundles along well (it builds a heap of dlls) but crashes > when it attempts to execute the "mono" program. Should this have been built > as part of the mono build? If so, which directory is it in so I can examine > the makefile etc.? mono is the JIT, it's not yet built unless you run on a x86 architecture. You should be able to use the makefiles running: make -f makefile.gnu RUNTIME=mint lupus -- ----------------------------------------------------------------- lupus@debian.org debian/rules lupus@ximian.com Monkeys do it better From lupus@ximian.com Tue Oct 1 12:19:18 2002 From: lupus@ximian.com (Paolo Molaro) Date: Tue, 1 Oct 2002 13:19:18 +0200 Subject: [Mono-list] mcs and windows In-Reply-To: <3D9800A4.000001.08690@email1.atc.cz> References: <3D9800A4.000001.08690@email1.atc.cz> Message-ID: <20021001111918.GH19193@debian.org> On 09/30/02 Martin Aliger wrote: > Do you know, that current mcs generated EXEs does NOT works with > MS runtime? I today installed Microsoft .NET Framework v1.0.3705 +SP2 > and it complains about exception or does nothing when run mcs compiled > code. Other way is ok - mono runs csc generated code great. [csc code > is a lot longer!] Can you provide more info on the program? All the programs should run fine (but the assemblies that reference System.Xml). lupus -- ----------------------------------------------------------------- lupus@debian.org debian/rules lupus@ximian.com Monkeys do it better From tobe_better@hotmail.com Tue Oct 1 12:42:16 2002 From: tobe_better@hotmail.com (Auge Mike) Date: Tue, 01 Oct 2002 15:42:16 +0400 Subject: [Mono-list] How to install automake for Cygwin... Message-ID: "Your automake is too old! You need version 1.6.2 or newer." How can i install a newer version for my cygwin automake .... ?? And from ??? where shall i download it??? Thanx fro your help, _________________________________________________________________ Chat with friends online, try MSN Messenger: http://messenger.msn.com From rafaelteixeirabr@hotmail.com Tue Oct 1 14:59:38 2002 From: rafaelteixeirabr@hotmail.com (A Rafael D Teixeira) Date: Tue, 01 Oct 2002 10:59:38 -0300 Subject: [Mono-list] Re: Mono.GetOptions problem is a Mono problem Message-ID: >From: Marcus >To: "A Rafael D Teixeira" >Subject: Mono.GetOptions problem is a Mono problem >Date: Mon, 30 Sep 2002 23:19:59 -0500 > >Pardon my sending so many emails so quickly, but I wanted to let you know >that >I did investigate the problem, and it's a bug in Mono. I filed a bug >report: > >http://bugzilla.ximian.com/show_bug.cgi?id=31535 Thanks a lot, for finding this bug that affects Mono.GetOptions running in Mono runtime/classes. Rafael Teixeira Brazilian Polymath _________________________________________________________________ MSN Photos is the easiest way to share and print your photos: http://photos.msn.com/support/worldwide.aspx From rafaelteixeirabr@hotmail.com Tue Oct 1 15:29:10 2002 From: rafaelteixeirabr@hotmail.com (A Rafael D Teixeira) Date: Tue, 01 Oct 2002 11:29:10 -0300 Subject: [Mono-list] VB.NET and C# differences in compiling Message-ID: >I have seen mb-parser.jay. > >It seems a file that contain a C# class, but that needs to be >pre-processed, >probably by jay. >The pre-processing probably generate some kind of "symbol table" used by >yacc components. > >Am I correct? > > Marco Jay IS yacc, but tweaked to generate C# code instead of C code. Yes, it pre-process mb-parser.jay creating mb-parser.cs that contains the table-driven state-machine that parses the source generating the AST. So far the mcs AST has shown itself as appropriate to be extended to work for mbas. Rafael Teixeira Brazilian Polymath _________________________________________________________________ Send and receive Hotmail on your mobile device: http://mobile.msn.com From Arcencielltd@aol.com Tue Oct 1 15:43:45 2002 From: Arcencielltd@aol.com (Arcencielltd@aol.com) Date: Tue, 1 Oct 2002 10:43:45 EDT Subject: [Mono-list] Mono Core Message-ID: <127.17ea60b4.2acb0ea1@aol.com> --part1_127.17ea60b4.2acb0ea1_boundary Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit Hi - I'm very interested in porting my C# Class Libraries to a Linux platform. Can you tell me:- 1. When will Mono Core be released? 2. Will it handle graphic methods, such as polygon fill? Many thanks Tony Reynolds (UK) --part1_127.17ea60b4.2acb0ea1_boundary Content-Type: text/html; charset="US-ASCII" Content-Transfer-Encoding: 7bit Hi -

I'm very interested in porting my C# Class Libraries to a Linux platform. Can you tell me:-

1. When will Mono Core be released?

2. Will it handle graphic methods, such as polygon fill?

Many thanks

Tony Reynolds (UK)
--part1_127.17ea60b4.2acb0ea1_boundary-- From everaldo.canuto@bol.com.br Tue Oct 1 17:25:37 2002 From: everaldo.canuto@bol.com.br (Everaldo Canuto) Date: Tue, 01 Oct 2002 13:25:37 -0300 Subject: [Mono-list] Error Mono under Cygwin Message-ID: <3D99CC81.30900@bol.com.br> I'm compiling mono under, after call auto_gen, I receive a error message. I use the last version from CVS. $ ./autogen.sh --prefix=/mono Running libtoolize... Running aclocal ... Running autoheader... WARNING: Using auxiliary files such as `acconfig.h', `config.h.bot' WARNING: and `config.h.top', to define templates for `config.h.in' WARNING: is deprecated and discouraged. WARNING: Using the third argument of `AC_DEFINE' and WARNING: `AC_DEFINE_UNQUOTED' allows to define a template without WARNING: `acconfig.h': WARNING: AC_DEFINE([NEED_MAIN], 1, WARNING: [Define if a function `main' is needed.]) WARNING: More sophisticated templates can also be produced, see the WARNING: documentation. autoheader: `config.h.in' is unchanged Running automake --gnu ... automake: mono/jit/Makefile.am: object `win32-exception.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `codegen-x86.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `emit-x86.$(OBJEXT)' created both with li btool and without automake: mono/jit/Makefile.am: object `regset.$(OBJEXT)' created both with libt ool and without automake: mono/jit/Makefile.am: object `debug.$(OBJEXT)' created both with libto ol and without automake: mono/jit/Makefile.am: object `debug-stabs.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `debug-dwarf2.$(OBJEXT)' created both wit h libtool and without automake: mono/jit/Makefile.am: object `jit.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `trampoline.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `exception.$(OBJEXT)' created both with l ibtool and without automake: mono/jit/Makefile.am: object `linear-scan.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `helpers.$(OBJEXT)' created both with lib tool and without **Error**: automake failed. Somebody could help me? Thanks, Everaldo Canuto From gonzalo@ximian.com Tue Oct 1 17:38:25 2002 From: gonzalo@ximian.com (Gonzalo Paniagua Javier) Date: 01 Oct 2002 18:38:25 +0200 Subject: [Mono-list] Error Mono under Cygwin In-Reply-To: <3D99CC81.30900@bol.com.br> References: <3D99CC81.30900@bol.com.br> Message-ID: <1033490306.499.4.camel@lalo2.micasa> El mar, 01-10-2002 a las 18:25, Everaldo Canuto escribió: > I'm compiling mono under, after call auto_gen, I receive a error message. > I use the last version from CVS. > > $ ./autogen.sh --prefix=/mono Try --prefix=c:/mono Why don't you use the script? It's easier and you don't have to worry about (almost) anything else. -Gonzalo From everaldo.canuto@bol.com.br Tue Oct 1 18:22:36 2002 From: everaldo.canuto@bol.com.br (Everaldo Canuto) Date: Tue, 01 Oct 2002 14:22:36 -0300 Subject: [Mono-list] Error Mono under Cygwin References: <3D99CC81.30900@bol.com.br> <1033490306.499.4.camel@lalo2.micasa> Message-ID: <3D99D9DC.3000504@bol.com.br> > > >Why don't you use the script? It's easier and you don't have to worry >about (almost) anything else. > > I use install script... it solve my problem. Thanks Gonzalo Everaldo Canuto From martin@gnome.org Tue Oct 1 19:54:08 2002 From: martin@gnome.org (Martin Baulig) Date: 01 Oct 2002 20:54:08 +0200 Subject: [Mono-list] mcs generates a "callvirt" where a "call" should be generated In-Reply-To: <039a01c2684f$cfcd0460$d601a8c0@tpjeroen> References: <039a01c2684f$cfcd0460$d601a8c0@tpjeroen> Message-ID: <868z1if0rz.fsf@einstein.home-of-linux.org> "Jeroen Frijters" writes: > It could do that, but it probably isn't worthwhile. The C# language > specification requires that a NullReferenceException is thrown when x is > null, callvirt does this check, but call doesn't so that is why, in > general, callvirt should be used. In this particular case, the compiler > could see that x is always non-null, but it probably isn't worthwhile to > optimize for this. The problem here is that we do not track this in mcs's definite assignment checks: MCS checks whether `x' has been assigned (which it must be), but it doesn't know which value `x' has because it could have been initialized to `null'. -- Martin Baulig martin@gnome.org From Neale.Ferguson@SoftwareAG-USA.com Tue Oct 1 20:55:48 2002 From: Neale.Ferguson@SoftwareAG-USA.com (Ferguson, Neale) Date: Tue, 1 Oct 2002 15:55:48 -0400 Subject: [Mono-list] Test failure Message-ID: <9A4FC925410C024792B85198DF1E97E403F459B2@usmsg03.sagus.com> Some improvements to my trampoline (better springs, more robust matting). I got pinvoke7 to work by catering for zero size structures being returned. I'm now checking the other pinvokes and thread5. Testing array-init.exe... pass. Testing arraylist.exe... pass. Testing char-isnumber.exe... pass. Testing create-instance.exe... pass. Testing field-layout.exe... pass. Testing pack-layout.exe... pass. Testing hash-table.exe... pass. Testing test-ops.exe... pass. Testing obj.exe... pass. Testing string.exe... pass. Testing stringbuilder.exe... pass. Testing switch.exe... pass. Testing outparm.exe... pass. Testing delegate.exe... pass. Testing bitconverter.exe... pass. Testing exception.exe... pass. Testing exception2.exe... pass. Testing exception3.exe... pass. Testing exception4.exe... pass. Testing exception5.exe... pass. Testing exception6.exe... failed 2048 (8) signal (0). Testing exception7.exe... pass. Testing exception8.exe... pass. Testing exception10.exe... pass. Testing exception11.exe... pass. Testing exception12.exe... pass. Testing exception13.exe... pass. Testing exception14.exe... pass. Testing struct.exe... pass. Testing valuetype-gettype.exe... pass. Testing static-constructor.exe... pass. Testing pinvoke.exe... pass. Testing pinvoke1.exe... pass. Testing pinvoke2.exe... failed 65280 (255) signal (0). Testing pinvoke3.exe... failed 256 (1) signal (0). Testing pinvoke4.exe... failed 65280 (255) signal (0). Testing pinvoke5.exe... pass. Testing pinvoke6.exe... pass. Testing pinvoke7.exe... pass. Testing pinvoke8.exe... failed 65280 (255) signal (0). Testing pinvoke9.exe... pass. Testing invoke.exe... pass. Testing invoke2.exe... pass. Testing reinit.exe... pass. Testing box.exe... pass. Testing array.exe... pass. Testing enum.exe... pass. Testing enum2.exe... pass. Testing property.exe... pass. Testing enumcast.exe... pass. Testing assignable-tests.exe... pass. Testing array-cast.exe... pass. Testing cattr-compile.exe... pass. Testing cattr-field.exe... pass. Testing cattr-object.exe... failed 512 (2) signal (0). Testing custom-attr.exe... pass. Testing double-cast.exe... pass. Testing newobj-valuetype.exe... pass. Testing arraylist-clone.exe... pass. Testing setenv.exe... pass. Testing vtype.exe... pass. Testing isvaluetype.exe... pass. Testing iface6.exe... pass. Testing ipaddress.exe... pass. Testing array-vt.exe... pass. Testing interface1.exe... pass. Testing reflection-enum.exe... pass. Testing reflection-prop.exe... pass. Testing reflection4.exe... pass. Testing reflection5.exe... pass. Testing many-locals.exe... pass. Testing string-compare.exe... pass. Testing test-prime.exe... pass. Testing params.exe... pass. Testing reflection.exe... pass. Testing interface.exe... pass. Testing iface.exe... pass. Testing iface2.exe... pass. Testing iface3.exe... pass. Testing iface4.exe... pass. Testing virtual-method.exe... pass. Testing intptrcast.exe... pass. Testing indexer.exe... pass. Testing stream.exe... pass. Testing console.exe... pass. Testing shift.exe... pass. Testing jit-int.exe... failed 65280 (255) signal (0). Testing jit-uint.exe... pass. Testing jit-long.exe... pass. Testing long.exe... pass. Testing jit-ulong.exe... pass. Testing jit-float.exe... pass. Testing pop.exe... pass. Testing time.exe... pass. Testing appdomain.exe... pass. Testing appdomain1.exe... pass. Testing appdomain2.exe... failed 1024 (4) signal (0). Testing appdomain-client.exe... pass. Testing pointer.exe... pass. Testing vararg.exe... failed 34304 (134) signal (0). Testing rounding.exe... pass. Testing hashcode.exe... pass. Testing delegate1.exe... pass. Testing delegate2.exe... pass. Testing delegate3.exe... pass. Testing delegate4.exe... pass. Testing delegate5.exe... pass. Testing delegate6.exe... pass. Testing delegate7.exe... pass. Testing remoting1.exe... pass. Testing remoting2.exe... pass. Testing remoting3.exe... pass. Testing nonvirt.exe... pass. Testing largeexp.exe... pass. Testing largeexp2.exe... pass. Testing marshalbyref1.exe... pass. Testing static-ctor.exe... pass. Testing inctest.exe... pass. Testing bound.exe... pass. Testing array-invoke.exe... pass. Testing decimal.exe... pass. Testing marshal1.exe... pass. Testing marshal2.exe... failed 256 (1) signal (0). Testing marshal3.exe... pass. Testing marshal4.exe... pass. Testing thread.exe... pass. Testing thread5.exe... failed 256 (1) signal (0). Testing thread6.exe... failed 35328 (138) signal (0). .cs: 116 test(s) passed. 12 test(s) failed. From ccesario@isic.com.br Tue Oct 1 22:11:25 2002 From: ccesario@isic.com.br (ccesario) Date: Tue, 01 Oct 2002 21:11:25 +0000 Subject: [Mono-list] Include error Message-ID: <20021001211126.113.qmail@netwireless.com.br> Hi! Can somebody tell me how to make an include to be compiled with the index file? for example. I have following code: --------------------------- index.aspx <%@ Page Language="C#" %> <%@ import namespace="System.Data" %> <%@ import namespace="System.Data.SqlClient" %> Some DB testing
----------------------------- include.aspx SqlConnection cnc; int count = 0; cnc = new SqlConnection (); string connectionString = "hostaddr=192.168.1.17;" + "user=ziral;" + "password=ziral;" + "dbname=teste"; cnc.ConnectionString = connectionString; try { cnc.Open (); lbl1.Text = "Connected: "; } catch (Exception e2) { lbl1.Text = "The error was: " + e2.Message; } IDbCommand selectCommand = cnc.CreateCommand(); IDataReader reader; if (selectCommand == null) lbl1.Text = "Null"; else lbl1.Text = "Not Null"; string selectCmd = "SELECT * FROM alunos"; selectCommand.CommandText = selectCmd; reader = selectCommand.ExecuteReader (); lbl1.Text = "Executed "; Response.Write("Id Nome Nota" + "
"); while (reader.Read ()) { Response.Write (reader.GetValue(0).ToString() + " - " + reader.GetValue(1).ToString() + " - " + reader.GetValue(2).ToString() + "
"); count++; } Response.Write("
"); Response.Write(count + " register(s)" + "
"); cnc.Close(); } ---------------------------------------- but nothing it happens :( I'd like to know which would be the correct way this operation to function. greets Carlos Cesario From gonzalo@ximian.com Wed Oct 2 01:30:03 2002 From: gonzalo@ximian.com (Gonzalo Paniagua Javier) Date: 02 Oct 2002 02:30:03 +0200 Subject: [Mono-list] Include error In-Reply-To: <20021001211126.113.qmail@netwireless.com.br> References: <20021001211126.113.qmail@netwireless.com.br> Message-ID: <1033518605.1412.8.camel@lalo2.micasa> El mar, 01-10-2002 a las 23:11, ccesario escribió: > Hi! > Can somebody tell me how to make an include to be compiled with the index > file? We don't support including files yet. Once we finish ASP.NET hosting support in System.Web, we will add more missing features, including this one, to the xsp code generator. -Gonzalo From jeske@chat.net Tue Oct 1 23:15:12 2002 From: jeske@chat.net (David Jeske) Date: Tue, 1 Oct 2002 15:15:12 -0700 Subject: [Mono-list] New mailing list archive available (Beta)... In-Reply-To: <20020926223712.I20812@mozart.chat.net> References: <20020926223712.I20812@mozart.chat.net> Message-ID: <20021001151512.I4430@mozart.chat.net> I want to thank those of you who provided useful mbox archives of mono-list for me. I've worked with a close friend of mine (Brandon Long) to put together a nice mailing list archive for mono-list. You can now use the new archive: http://archive.neotonic.com/archive/mono-list Things which it has which make it better than pipermail include: - proper handling of mime/attachments/charsets - egroups.com style "by month" display - findmail.com style framed interface - groups.google.com style "10 msgs at once" - groups.google.com style flat thread listing - fast full-text search - top-authors listing by month - rss feeds - snazzy interface skin which matches www.go-mono.com Things which pipermail has which we still need to add include: - date sorted or author sorted display - non-frames interface I'd appreciate it if anyone who currently uses the pipermail interface could give this a try and send us feedback at: archive@neotonic.com Ximian: feel free to list it, just put the word "beta" next to the link. -- David Jeske (N9LCA) + http://www.chat.net/~jeske/ + jeske@chat.net From miguel@ximian.com Wed Oct 2 02:03:03 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 01 Oct 2002 21:03:03 -0400 Subject: [Mono-list] How frozen is the API In-Reply-To: <1033248326.1021.298.camel@emma> References: <1033248326.1021.298.camel@emma> Message-ID: <1033520582.27718.3657.camel@erandi.boston.ximian.com> > Ah, that's much nicer... But, I assume that since the API is frozen, > this would be a bad idea. Am I wrong? Can this functionality be added > somehow? It could be added, but then your program will not run on Windows. The right way of suggesting these improvements is to get them accepted by Microsoft, and we will follow ;-) Miguel From miguel@ximian.com Wed Oct 2 02:06:07 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 01 Oct 2002 21:06:07 -0400 Subject: [Mono-list] No Go with Mono In-Reply-To: <20020929110439.591D9ADF6E@smtp-3.paradise.net.nz> References: <20020929110439.591D9ADF6E@smtp-3.paradise.net.nz> Message-ID: <1033520767.27716.3661.camel@erandi.boston.ximian.com> > Unfortunately, setting up Mono was a struggle which ultimately ended in > failure. I believe the main problem was setting up pkg-config > (pkgconfig-0.13.0), but I also think things (e.g. gc6.0, glib-1.3.12, > mcs-0.15, mono-0.15) weren't being setup in their correct locations. The mono-build script should take care of this, but we have recently gone through this process for setting up the Red Carpet builds, and you need: pkg-config libgc glib2 (notice, not glib1 as you used above, but glib2) mono tarball. We do have Mandrake 8.2 rpms available. Miguel From miguel@ximian.com Wed Oct 2 02:26:01 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 01 Oct 2002 21:26:01 -0400 Subject: [Mono-list] Mono 0.16 has been released! Message-ID: <1033521960.27716.3669.camel@erandi.boston.ximian.com> Hello everyone! The latest and greatest release of Mono is available now. We have easy-to-compile source code, RPMs for five distributions and even a Red Carpet channel for those distributions if you want to play with it. Get the goodies here: http://www.go-mono.com/download.html I know the excitement is big, because everyone trying to compile from CVS has been doing it because you needed some of the bug fixes, so the bug fixes are here, now we can all share the joy and excitement of those CVS head people! Thanks a lot again to Duncan for putting together the release notes, and this time he was in charge of building all of the packages for your delight. Thanks to everyone that make this possible. Release notes follow. Version 0.16 of Mono has been released! This is mostly a bug fix release, a lot of work has been going on to make existing features more robust and less buggy. Also, contributions are too varied, so it is hard to classify them in groups. * Stats 795 commits to mono and mcs since August 23rd. * News The changes that got in this releases are mostly bugfixes. Miguel, Martin and Ravi attacked lots of bugs in the compiler, Dick fixed a bunch of bugs related to processes and threads. Mark Crichton resumed his work on the SPARC port and made lots of progress there. Juli Mallett has been working on making sure Mono also builds on BSD systems. As usual, Dietmar and Paolo supplied their continuous stream of fixes to the runtime. Dietmar has completed the work on the runtime side for remoting support and we ship now with a sample channel, the System.Runtime.Remoting.Sample. This can be used as a reference implementation for anyone interested in implementing other channels (like a CORBA channel). Duncan got preliminary XSLT support done by using libxslt. Gonzalo (with some help from Patrik) has been working hard making our ASP.NET implementation work on both Mono and MS by migrating the existing xsp code to the class library. Gaurav started working on the classes in System.Design.dll and Chris Toshok checked in Mono.Directory.LDAP, which will be the foundation to implement the System.DirectoryServices assembly. Various fixes from Kral, Jason, Piers and Gonzalo were committed to System.Xml; Martin Algiers reports that the upcoming NAnt release will be fully compatible with Mono. Miguel imported Sergey Chaban's Mono.PEToolkit and ilasm code to CVS. Nick, as always, continues to refine our testing framework by improving our tests. Andrew Birkett continues to improve the implementation of our security/cryptographic classes. Jonathan Pryor contributed type-reflector the our list of tools. * Other News From Behind de Curtain. While the above is pretty impressive on its own, various other non-released portions of Mono have been undergoing: Adam Treat has been leading the effort to document our class libraries and produce the tools required for it. Martin Baulig has been working on the Mono Debugger which is not being released yet. This debugger allows both native Linux application as well as CIL applications to be debugged at the same time (and in fact, you can use this to debug the JIT engine). The debugger is written in C# with some C glue In the meant A new JIT engine is under development, focused on adding more of the high-end optimizations which will be integrated on an ahead-of-time-compiler. Dietmar and Paolo have been working on this. * Contributors to this release * Non-Ximian developers: Adam Treat, Andrew Birkett, Dennis Hayes, Diego Sevilla, Franklin Wise, Gaurav Vaish ,Jason Diamond, Johannes Roith, John Sohn, Jonathan Pryor, Juli Mallett, Kral Ferch, Mike Crichton, Nick Drochak, Nick Zigarovich, Piers Haken, Rafael Teixeira, Ricardo Fernandez Pascual, Sergey Chaban, Tim Coleman. * Ximian developers: Dietmar, Paolo, Dick, Duncan, Ravi, Miguel, Martin, Chris, Joe, Gonzalo, Rodrigo. From Neale.Ferguson@SoftwareAG-USA.com Wed Oct 2 03:20:08 2002 From: Neale.Ferguson@SoftwareAG-USA.com (Ferguson, Neale) Date: Tue, 1 Oct 2002 22:20:08 -0400 Subject: [Mono-list] pinvoke4 Message-ID: <9A4FC925410C024792B85198DF1E97E403F459B5@usmsg03.sagus.com> This message is in MIME format. Since your mail reader does not understand this format, some or all of this message may not be legible. ------_=_NextPart_001_01C269BA.3A2A7610 Content-Type: text/plain; charset="iso-8859-1" In pinvoke4.cs simplestruct is defined as: public struct SimpleStruct { public bool a; public bool b; public bool c; public string d; } In libtest.c simplestruct is defined as: typedef struct { int a; int b; int c; char *d; } simplestruct However, when mono_create_trampoline the size of the returned by: mono_class_value_size (sig->ret->data.klass, NULL) is 8. Why is it not 16? I guess the answer is it should be 16 but I'm doing something stupid. Neale Ferguson ------_=_NextPart_001_01C269BA.3A2A7610 Content-Type: text/html; charset="iso-8859-1"
In pinvoke4.cs simplestruct is defined as:
 
        public struct SimpleStruct {
                public bool a;
                public bool b;
                public bool c;
                public string d;
        }

In libtest.c simplestruct is defined as:
 
typedef struct {
        int a;
        int b;
        int c;
        char *d;
} simplestruct
 
However, when mono_create_trampoline the size of the returned by: mono_class_value_size (sig->ret->data.klass, NULL) is 8. Why is it not 16? I guess the answer is it should be 16 but I'm doing something stupid.

Neale Ferguson

------_=_NextPart_001_01C269BA.3A2A7610-- From kabir_soorya@hotmail.com Wed Oct 2 01:34:34 2002 From: kabir_soorya@hotmail.com (Kabir Soorya) Date: Tue, 01 Oct 2002 20:34:34 -0400 Subject: [Mono-list] GCC/TenDRA .NET Message-ID: Hi Guyz, I've Been Busy But It's Good 2 B Bak. So anyway let's modify tendra to get c++ support ] maybe use STL at www.stlport.org then modify it to accept M$ MC++ and output M$ compatible Output including embeding machine code as an option to do M$ style stuff. then we can atleast have C/c++ as well as the Gcc frontends which compiler cobol etc. to C/c++ (and maybe write some more) sOund good ? Let's Start C-YA _________________________________________________________________ Chat with friends online, try MSN Messenger: http://messenger.msn.com From gabeemily@hotmail.com Wed Oct 2 06:26:42 2002 From: gabeemily@hotmail.com (Gabe & Emily Gunderson) Date: Tue, 1 Oct 2002 23:26:42 -0600 Subject: [Mono-list] SWEET WORK! Message-ID: This is a multi-part message in MIME format. ------=_NextPart_000_0005_01C269A1.FFDE8720 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Keep up the GREAT work! I check this site almost every day. I need = more posts. We almost went 2 weeks with no word of your progress. I'm = stoked about what you're doing. I wish you the best. I wish I had = something to give but I'm just a lowly VB.NET user (no c or c++). Keep it up, Gabriel ------=_NextPart_000_0005_01C269A1.FFDE8720 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Keep up the GREAT work!  I check = this site=20 almost every day.  I need more posts.  We almost went 2 weeks = with no=20 word of your progress.  I'm stoked about what you're doing.  I = wish=20 you the best.  I wish I had something to give but I'm just a lowly = VB.NET=20 user (no c or c++).
 
Keep it up,
Gabriel
------=_NextPart_000_0005_01C269A1.FFDE8720-- From dietmar@ximian.com Wed Oct 2 08:30:14 2002 From: dietmar@ximian.com (Dietmar Maurer) Date: 02 Oct 2002 09:30:14 +0200 Subject: [Mono-list] pinvoke4 In-Reply-To: <9A4FC925410C024792B85198DF1E97E403F459B5@usmsg03.sagus.com> References: <9A4FC925410C024792B85198DF1E97E403F459B5@usmsg03.sagus.com> Message-ID: <1033543815.17603.7.camel@tequila> You need to distinguish 2 cases, managed vs. unmanaged code. The data representation can be different, for example a bool uses one byte in managed code, but four bytes in unmanaged code. Data types are automatically converted by the runtime if you do a PInvoke call. So thats why SimpleStruct uses 8 byte in managed code, but 32 bytes in unmanaged code. - Dietmar On Wed, 2002-10-02 at 04:20, Ferguson, Neale wrote: In pinvoke4.cs simplestruct is defined as: public struct SimpleStruct { public bool a; public bool b; public bool c; public string d; } In libtest.c simplestruct is defined as: typedef struct { int a; int b; int c; char *d; } simplestruct However, when mono_create_trampoline the size of the returned by: mono_class_value_size (sig->ret->data.klass, NULL) is 8. Why is it not 16? I guess the answer is it should be 16 but I'm doing something stupid. From martin_aliger@email.cz Wed Oct 2 11:47:57 2002 From: martin_aliger@email.cz (Martin Aliger) Date: Wed, 2 Oct 2002 12:47:57 +0200 (CEST) Subject: [Mono-list] mcs and windows Message-ID: <3D9ACEDD.000001.29361@email1.atc.cz> >> Do you know, that current mcs generated EXEs does NOT works with >> MS runtime? I today installed Microsoft .NET Framework v1.0.3705 +SP2 >> and it complains about exception or does nothing when run mcs compiled >> code. Other way is ok - mono runs csc generated code great. [csc code >> is a lot longer!] > Can you provide more info on the program? > All the programs should run fine (but the assemblies that reference > System.Xml) It fail on even most simple program on my W2k box. I attached my tests and mcs-compiled exes. Some simply does nothing (it should write somethink to console), some throws ugly exception (MS runtime shows it as popup window). Hope this helps (is it working for anybody?) Martin ______________________________________________________________________________ Domácí spotøebièe a elektronika za akèní ceny – slevy a¾ 50 %. Kliknìte na: http://www.obchodni-dum.cz/index.phtml?prov=54&akce=yes From ccesario@isic.com.br Wed Oct 2 12:45:50 2002 From: ccesario@isic.com.br (Carlos Cesario) Date: Wed, 02 Oct 2002 08:45:50 -0300 Subject: [Mono-list] Include error References: <20021001211126.113.qmail@netwireless.com.br> <1033518605.1412.8.camel@lalo2.micasa> Message-ID: <3D9ADC6E.5000700@isic.com.br> Gonzalo Paniagua Javier wrote: >El mar, 01-10-2002 a las 23:11, ccesario escribió: > > >>Hi! >>Can somebody tell me how to make an include to be compiled with the index >>file? >> >> > >We don't support including files yet. > >Once we finish ASP.NET hosting support in System.Web, we will add more >missing features, including this one, to the xsp code generator. > >-Gonzalo > > >_______________________________________________ >Mono-list maillist - Mono-list@ximian.com >http://lists.ximian.com/mailman/listinfo/mono-list > > > > Gonzalo, I am making tests and I would need this very: ( Do you have forecast of when this functionality will be?? Greets Carlos Cesario From martin_aliger@email.cz Wed Oct 2 11:52:56 2002 From: martin_aliger@email.cz (Martin Aliger) Date: Wed, 2 Oct 2002 12:52:56 +0200 (CEST) Subject: [Mono-list] mcs patch Message-ID: <3D9AD008.000001.31761@email1.atc.cz> Hi all, seems that my report about /fullpaths parameter to mcs disappers somewhere so I make [very robust] patch for that (by diff -bp driver_old.cs driver.cs) Here it is: ------- *** driver_old.cs Wed Oct 2 08:44:06 2002 --- driver.cs Wed Oct 2 08:44:32 2002 *************** namespace Mono.CSharp *** 858,863 **** --- 858,864 ---- case "/incremental": case "/incremental+": case "/incremental-": + case "/fullpaths": // nothing. return true; ------- Thanks for applying ;-) Martin ______________________________________________________________________________ Nej¹ir¹í nabídka PC komponent v ÈR - http://www.levi.cz Neváhejte a srovnejte mo¾nosti dne¹ního hardware. From gonzalo@ximian.com Wed Oct 2 15:57:29 2002 From: gonzalo@ximian.com (Gonzalo Paniagua Javier) Date: 02 Oct 2002 16:57:29 +0200 Subject: [Mono-list] Include error In-Reply-To: <3D9ADC6E.5000700@isic.com.br> References: <20021001211126.113.qmail@netwireless.com.br> <1033518605.1412.8.camel@lalo2.micasa> <3D9ADC6E.5000700@isic.com.br> Message-ID: <1033570650.505.17.camel@lalo2.micasa> El mié, 02-10-2002 a las 13:45, Carlos Cesario escribió: > Gonzalo, > I am making tests and I would need this very: ( > Do you have forecast of when this functionality will be?? I don't really know when it will be available. There are other things higher in my priority list. -Gonzalo From ccesario@isic.com.br Wed Oct 2 13:49:54 2002 From: ccesario@isic.com.br (Carlos Cesario) Date: Wed, 02 Oct 2002 09:49:54 -0300 Subject: [Mono-list] Include error References: <20021001211126.113.qmail@netwireless.com.br> <1033518605.1412.8.camel@lalo2.micasa> Message-ID: <3D9AEB72.9080500@isic.com.br> Gonzalo Paniagua Javier wrote: >El mar, 01-10-2002 a las 23:11, ccesario escribió: > > >>Hi! >>Can somebody tell me how to make an include to be compiled with the index >>file? >> >> > >We don't support including files yet. > >Once we finish ASP.NET hosting support in System.Web, we will add more >missing features, including this one, to the xsp code generator. > >-Gonzalo > > >_______________________________________________ >Mono-list maillist - Mono-list@ximian.com >http://lists.ximian.com/mailman/listinfo/mono-list > > > > Gonzalo, I am making tests and I would need this very: ( Do you have forecast of when this functionality will be?? Greets Carlos Cesario From vi64pa@koti.soon.fi Wed Oct 2 19:09:27 2002 From: vi64pa@koti.soon.fi (ville) Date: Wed, 2 Oct 2002 21:09:27 +0300 Subject: [Mono-list] Testsuite for SqlByte Message-ID: <200210022109.27097.vi64pa@koti.soon.fi> --------------Boundary-00=_R39DWPORGSZ3IL40CYOI Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable SqlByteTest.cs is tested with w2k without problems. Comments and suggestions are still welcome. ville --------------Boundary-00=_R39DWPORGSZ3IL40CYOI Content-Type: text/x-c++src; charset="us-ascii"; name="SqlByteTest.cs" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="SqlByteTest.cs" // // SqlByteTest.cs - NUnit Test Cases for System.Data.SqlTypes.SqlByte // // Ville Palo (vi64pa@koti.soon.fi) // // (C) Ville Palo 2002 // using NUnit.Framework; using System; using System.Data.SqlTypes; namespace MonoTests.System.Data.SqlTypes { public class SqlByteTest : TestCase { private const string Error = " does not work correctly"; public SqlByteTest() : base ("System.Data.SqlTypes.SqlByte") {} public SqlByteTest(string name) : base(name) {} protected override void TearDown() {} protected override void SetUp() { } public static ITest Suite { get { return new TestSuite(typeof(SqlString)); } } // Test constructor public void TestCreate() { byte b = 29; SqlByte TestByte = new SqlByte(b); AssertEquals("Constructor 1 does not work correctly", (byte)29, TestByte.Value); } // Test public fields public void TestPublicFields() { AssertEquals("MaxValue field" + Error, (SqlByte)255, SqlByte.MaxValue); AssertEquals("MinValue field" + Error, (SqlByte)0, SqlByte.MinValue); Assert("Null field" + Error, SqlByte.Null.IsNull); AssertEquals("Zero field" + Error, (byte)0, SqlByte.Zero.Value); } // Test properties public void TestProperties() { SqlByte TestByte = new SqlByte(54); SqlByte TestByte2 = new SqlByte(1); Assert("IsNull property" + Error, SqlByte.Null.IsNull); AssertEquals("Value property 1" + Error, (byte)54, TestByte.Value); AssertEquals("Value property 2" + Error, (byte)1, TestByte2.Value); } // PUBLIC STATIC METHODS public void TestAddMethod() { SqlByte TestByte64 = new SqlByte(64); SqlByte TestByte0 = new SqlByte(0); SqlByte TestByte164 = new SqlByte(164); SqlByte TestByte255 = new SqlByte(255); AssertEquals("AddMethod 1" + Error, (byte)64, SqlByte.Add(TestByte64, TestByte0).Value); AssertEquals("AddMethod 2" + Error, (byte)228, SqlByte.Add(TestByte64, TestByte164).Value); AssertEquals("AddMethod 3" + Error, (byte)164, SqlByte.Add(TestByte0, TestByte164).Value); AssertEquals("AddMethod 4" + Error, (byte)255, SqlByte.Add(TestByte255, TestByte0).Value); try { SqlByte.Add(TestByte255, TestByte64); Fail ("AddMethod 6" + Error); } catch (Exception e) { AssertEquals("AddMethod 5" + Error, typeof(OverflowException), e.GetType()); } } public void TestBitwiseAndMethod() { SqlByte TestByte2 = new SqlByte(2); SqlByte TestByte1 = new SqlByte(1); SqlByte TestByte62 = new SqlByte(62); SqlByte TestByte255 = new SqlByte(255); AssertEquals("BitwiseAnd method 1" + Error, (byte)0, SqlByte.BitwiseAnd(TestByte2, TestByte1).Value); AssertEquals("BitwiseAnd method 2" + Error, (byte)0, SqlByte.BitwiseAnd(TestByte1, TestByte62).Value); AssertEquals("BitwiseAnd method 3" + Error, (byte)2, SqlByte.BitwiseAnd(TestByte62, TestByte2).Value); AssertEquals("BitwiseAnd method 4" + Error, (byte)1, SqlByte.BitwiseAnd(TestByte1, TestByte255).Value); AssertEquals("BitwiseAnd method 5" + Error, (byte)62, SqlByte.BitwiseAnd(TestByte62, TestByte255).Value); } public void TestBitwiseOrMethod() { SqlByte TestByte2 = new SqlByte(2); SqlByte TestByte1 = new SqlByte(1); SqlByte TestByte62 = new SqlByte(62); SqlByte TestByte255 = new SqlByte(255); AssertEquals("BitwiseOr method 1" + Error, (byte)3, SqlByte.BitwiseOr(TestByte2, TestByte1).Value); AssertEquals("BitwiseOr method 2" + Error, (byte)63, SqlByte.BitwiseOr(TestByte1, TestByte62).Value); AssertEquals("BitwiseOr method 3" + Error, (byte)62, SqlByte.BitwiseOr(TestByte62, TestByte2).Value); AssertEquals("BitwiseOr method 4" + Error, (byte)255, SqlByte.BitwiseOr(TestByte1, TestByte255).Value); AssertEquals("BitwiseOr method 5" + Error, (byte)255, SqlByte.BitwiseOr(TestByte62, TestByte255).Value); } public void TestCompareTo() { SqlByte TestByte13 = new SqlByte(13); SqlByte TestByte10 = new SqlByte(10); SqlByte TestByte10II = new SqlByte(10); SqlString TestString = new SqlString("This is a test"); Assert("CompareTo method 1" + Error, TestByte13.CompareTo(TestByte10) > 0); Assert("CompareTo method 2" + Error, TestByte10.CompareTo(TestByte13) < 0); Assert("CompareTo method 3" + Error, TestByte10.CompareTo(TestByte10II) == 0); try { TestByte13.CompareTo(TestString); Fail("CompareTo method 4" + Error); } catch(Exception e) { AssertEquals("Parse method 5" + Error, typeof(ArgumentException), e.GetType()); } } public void TestDivideMethod() { SqlByte TestByte13 = new SqlByte(13); SqlByte TestByte0 = new SqlByte(0); SqlByte TestByte2 = new SqlByte(2); SqlByte TestByte180 = new SqlByte(180); SqlByte TestByte3 = new SqlByte(3); AssertEquals("Divide method 1" + Error, (byte)6, SqlByte.Divide(TestByte13, TestByte2).Value); AssertEquals("Divide method 2" + Error, (byte)90, SqlByte.Divide(TestByte180, TestByte2).Value); AssertEquals("Divide method 3" + Error, (byte)60, SqlByte.Divide(TestByte180, TestByte3).Value); AssertEquals("Divide method 4" + Error, (byte)0, SqlByte.Divide(TestByte13, TestByte180).Value); AssertEquals("Divide method 5" + Error, (byte)0, SqlByte.Divide(TestByte13, TestByte180).Value); try { SqlByte.Divide(TestByte13, TestByte0); Fail ("Divide method 6" + Error); } catch(Exception e) { AssertEquals("DivideByZeroException", typeof(DivideByZeroException), e.GetType()); } } public void TestEqualsMethod() { SqlByte TestByte0 = new SqlByte(0); SqlByte TestByte158 = new SqlByte(158); SqlByte TestByte180 = new SqlByte(180); SqlByte TestByte180II = new SqlByte(180); Assert("Equals method 1" + Error, !TestByte0.Equals(TestByte158)); Assert("Equals method 2" + Error, !TestByte158.Equals(TestByte180)); Assert("Equals method 3" + Error, !TestByte180.Equals(new SqlString("TEST"))); Assert("Equals method 4" + Error, TestByte180.Equals(TestByte180II)); } public void TestStaticEqualsMethod() { SqlByte TestByte34 = new SqlByte(34); SqlByte TestByte34II = new SqlByte(34); SqlByte TestByte15 = new SqlByte(15); Assert("static Equals method 1" + Error, SqlByte.Equals(TestByte34, TestByte34II).Value); Assert("static Equals method 2" + Error, !SqlByte.Equals(TestByte34, TestByte15).Value); Assert("static Equals method 3" + Error, !SqlByte.Equals(TestByte15, TestByte34II).Value); } public void TestGetHashCode() { SqlByte TestByte15 = new SqlByte(15); SqlByte TestByte216 = new SqlByte(216); AssertEquals("GetHashCode method 1" + Error, 15, TestByte15.GetHashCode()); AssertEquals("GetHashCode method 2" + Error, 216, TestByte216.GetHashCode()); } public void TestGetType() { SqlByte TestByte = new SqlByte(84); AssertEquals("GetType method" + Error, "System.Data.SqlTypes.SqlByte", TestByte.GetType().ToString()); } public void TestGreaterThan() { SqlByte TestByte10 = new SqlByte(10); SqlByte TestByte10II = new SqlByte(10); SqlByte TestByte110 = new SqlByte(110); Assert("GreaterThan method 1" + Error, !SqlByte.GreaterThan(TestByte10, TestByte110).Value); Assert("GreaterThan method 2" + Error, SqlByte.GreaterThan(TestByte110, TestByte10).Value); Assert("GreaterThan method 3" + Error, !SqlByte.GreaterThan(TestByte10II, TestByte10).Value); } public void TestGreaterThanOrEqual() { SqlByte TestByte10 = new SqlByte(10); SqlByte TestByte10II = new SqlByte(10); SqlByte TestByte110 = new SqlByte(110); Assert("GreaterThanOrEqual method 1" + Error, !SqlByte.GreaterThanOrEqual(TestByte10, TestByte110).Value); Assert("GreaterThanOrEqual method 2" + Error, SqlByte.GreaterThanOrEqual(TestByte110, TestByte10).Value); Assert("GreaterThanOrEqual method 3" + Error, SqlByte.GreaterThanOrEqual(TestByte10II, TestByte10).Value); } public void TestLessThan() { SqlByte TestByte10 = new SqlByte(10); SqlByte TestByte10II = new SqlByte(10); SqlByte TestByte110 = new SqlByte(110); Assert("LessThan method 1" + Error, SqlByte.LessThan(TestByte10, TestByte110).Value); Assert("LessThan method 2" + Error, !SqlByte.LessThan(TestByte110, TestByte10).Value); Assert("LessThan method 3" + Error, !SqlByte.LessThan(TestByte10II, TestByte10).Value); } public void TestLessThanOrEqual() { SqlByte TestByte10 = new SqlByte(10); SqlByte TestByte10II = new SqlByte(10); SqlByte TestByte110 = new SqlByte(110); Assert("LessThanOrEqual method 1" + Error, SqlByte.LessThanOrEqual(TestByte10, TestByte110).Value); Assert("LessThanOrEqual method 2" + Error, !SqlByte.LessThanOrEqual(TestByte110, TestByte10).Value); Assert("LessThanOrEqual method 3" + Error, SqlByte.LessThanOrEqual(TestByte10II, TestByte10).Value); Assert("LessThanOrEqual method 4" + Error, SqlByte.LessThanOrEqual(TestByte10II, SqlByte.Null).IsNull); } public void TestMod() { SqlByte TestByte132 = new SqlByte(132); SqlByte TestByte10 = new SqlByte(10); SqlByte TestByte200 = new SqlByte(200); AssertEquals("Mod method 1" + Error, (SqlByte)2, SqlByte.Mod(TestByte132, TestByte10)); AssertEquals("Mod method 2" + Error, (SqlByte)10, SqlByte.Mod(TestByte10, TestByte200)); AssertEquals("Mod method 3" + Error, (SqlByte)0, SqlByte.Mod(TestByte200, TestByte10)); AssertEquals("Mod method 4" + Error, (SqlByte)68, SqlByte.Mod(TestByte200, TestByte132)); } public void TestMultiply() { SqlByte TestByte12 = new SqlByte (12); SqlByte TestByte2 = new SqlByte (2); SqlByte TestByte128 = new SqlByte (128); AssertEquals ("Multiply method 1" + Error, (byte)24, SqlByte.Multiply(TestByte12, TestByte2).Value); AssertEquals ("Multiply method 2" + Error, (byte)24, SqlByte.Multiply(TestByte2, TestByte12).Value); try { SqlByte.Multiply(TestByte128, TestByte2); Fail ("Multiply method 3"); } catch(Exception e) { AssertEquals("OverflowException" + Error, typeof(OverflowException), e.GetType()); } } public void TestNotEquals() { SqlByte TestByte12 = new SqlByte(12); SqlByte TestByte128 = new SqlByte(128); SqlByte TestByte128II = new SqlByte(128); Assert("NotEquals method 1" + Error, SqlByte.NotEquals(TestByte12, TestByte128).Value); Assert("NotEquals method 2" + Error, SqlByte.NotEquals(TestByte128, TestByte12).Value); Assert("NotEquals method 3" + Error, SqlByte.NotEquals(TestByte128II, TestByte12).Value); Assert("NotEquals method 4" + Error, !SqlByte.NotEquals(TestByte128II, TestByte128).Value); Assert("NotEquals method 5" + Error, !SqlByte.NotEquals(TestByte128, TestByte128II).Value); } public void TestOnesComplement() { SqlByte TestByte12 = new SqlByte(12); SqlByte TestByte128 = new SqlByte(128); AssertEquals("OnesComplement method 1" + Error, (SqlByte)243, SqlByte.OnesComplement(TestByte12)); AssertEquals("OnesComplement method 2" + Error, (SqlByte)127, SqlByte.OnesComplement(TestByte128)); } public void TestParse() { try { SqlByte.Parse(null); Fail("Parse method 2" + Error); } catch (Exception e) { AssertEquals("Parse method 3" + Error, typeof(ArgumentNullException), e.GetType()); } try { SqlByte.Parse("not-a-number"); Fail("Parse method 4" + Error); } catch (Exception e) { AssertEquals("Parse method 5" + Error, typeof(FormatException), e.GetType()); } try { int OverInt = (int)SqlByte.MaxValue + 1; SqlByte.Parse(OverInt.ToString()); Fail("Parse method 6" + Error); } catch (Exception e) { AssertEquals("Parse method 7" + Error, typeof(OverflowException), e.GetType()); } AssertEquals("Parse method 8" + Error, (byte)150, SqlByte.Parse("150").Value); } public void TestSubtract() { SqlByte TestByte12 = new SqlByte(12); SqlByte TestByte128 = new SqlByte(128); AssertEquals("Subtract method 1" + Error, (byte)116, SqlByte.Subtract(TestByte128, TestByte12).Value); try { SqlByte.Subtract(TestByte12, TestByte128); } catch(Exception e) { AssertEquals("OverflowException", typeof(OverflowException), e.GetType()); } } public void TestToSqlBoolean() { SqlByte TestByte12 = new SqlByte(12); SqlByte TestByte0 = new SqlByte(0); SqlByte TestByteNull = SqlByte.Null; Assert("ToSqlBoolean method 1" + Error, TestByte12.ToSqlBoolean().Value); Assert("ToSqlBoolean method 2" + Error, !TestByte0.ToSqlBoolean().Value); Assert("ToSqlBoolean method 3" + Error, TestByteNull.ToSqlBoolean().IsNull); } public void TestToSqlDecimal() { SqlByte TestByte12 = new SqlByte(12); SqlByte TestByte0 = new SqlByte(0); SqlByte TestByte228 = new SqlByte(228); AssertEquals("ToSqlDecimal method 1" + Error, (decimal)12, TestByte12.ToSqlDecimal().Value); AssertEquals("ToSqlDecimal method 2" + Error, (decimal)0, TestByte0.ToSqlDecimal().Value); AssertEquals("ToSqlDecimal method 3" + Error, (decimal)228, TestByte228.ToSqlDecimal().Value); } public void TestToSqlDouble() { SqlByte TestByte12 = new SqlByte(12); SqlByte TestByte0 = new SqlByte(0); SqlByte TestByte228 = new SqlByte(228); AssertEquals("ToSqlDouble method 1" + Error, (double)12, TestByte12.ToSqlDouble().Value); AssertEquals("ToSqlDouble method 2" + Error, (double)0, TestByte0.ToSqlDouble().Value); AssertEquals("ToSqlDouble method 3" + Error, (double)228, TestByte228.ToSqlDouble().Value); } public void TestToSqlInt16() { SqlByte TestByte12 = new SqlByte(12); SqlByte TestByte0 = new SqlByte(0); SqlByte TestByte228 = new SqlByte(228); AssertEquals("ToSqInt16 method 1" + Error, (short)12, TestByte12.ToSqlInt16().Value); AssertEquals("ToSqlInt16 method 2" + Error, (short)0, TestByte0.ToSqlInt16().Value); AssertEquals("ToSqlInt16 method 3" + Error, (short)228, TestByte228.ToSqlInt16().Value); } public void TestToSqlInt32() { SqlByte TestByte12 = new SqlByte(12); SqlByte TestByte0 = new SqlByte(0); SqlByte TestByte228 = new SqlByte(228); AssertEquals("ToSqInt32 method 1" + Error, (int)12, TestByte12.ToSqlInt32().Value); AssertEquals("ToSqlInt32 method 2" + Error, (int)0, TestByte0.ToSqlInt32().Value); AssertEquals("ToSqlInt32 method 3" + Error, (int)228, TestByte228.ToSqlInt32().Value); } public void TestToSqlInt64() { SqlByte TestByte12 = new SqlByte(12); SqlByte TestByte0 = new SqlByte(0); SqlByte TestByte228 = new SqlByte(228); AssertEquals("ToSqInt64 method " + Error, (long)12, TestByte12.ToSqlInt64().Value); AssertEquals("ToSqlInt64 method 2" + Error, (long)0, TestByte0.ToSqlInt64().Value); AssertEquals("ToSqlInt64 method 3" + Error, (long)228, TestByte228.ToSqlInt64().Value); } public void TestToSqlMoney() { SqlByte TestByte12 = new SqlByte(12); SqlByte TestByte0 = new SqlByte(0); SqlByte TestByte228 = new SqlByte(228); AssertEquals("ToSqMoney method 1" + Error, (decimal)12, TestByte12.ToSqlMoney().Value); AssertEquals("ToSqlMoney method 2" + Error, (decimal)0, TestByte0.ToSqlMoney().Value); AssertEquals("ToSqlMoney method 3" + Error, (decimal)228, TestByte228.ToSqlMoney().Value); } public void TestToSqlSingle() { SqlByte TestByte12 = new SqlByte(12); SqlByte TestByte0 = new SqlByte(0); SqlByte TestByte228 = new SqlByte(228); AssertEquals("ToSqlSingle method 1" + Error, (float)12, TestByte12.ToSqlSingle().Value); AssertEquals("ToSqlSingle method 2" + Error, (float)0, TestByte0.ToSqlSingle().Value); AssertEquals("ToSqlSingle method 3" + Error, (float)228, TestByte228.ToSqlSingle().Value); } public void TestToSqlString() { SqlByte TestByte12 = new SqlByte(12); SqlByte TestByte0 = new SqlByte(0); SqlByte TestByte228 = new SqlByte(228); AssertEquals("ToSqlString method 1" + Error, "12", TestByte12.ToSqlString().Value); AssertEquals("ToSqlString method 2" + Error, "0", TestByte0.ToSqlString().Value); AssertEquals("ToSqlString method 3" + Error, "228", TestByte228.ToSqlString().Value); } public void TestToString() { SqlByte TestByte12 = new SqlByte(12); SqlByte TestByte0 = new SqlByte(0); SqlByte TestByte228 = new SqlByte(228); AssertEquals("ToString method 1" + Error, "12", TestByte12.ToString()); AssertEquals("ToString method 2" + Error, "0", TestByte0.ToString()); AssertEquals("ToString method 3" + Error, "228", TestByte228.ToString()); } public void TestXor() { SqlByte TestByte14 = new SqlByte(14); SqlByte TestByte58 = new SqlByte(58); SqlByte TestByte130 = new SqlByte(130); AssertEquals("Xor method 1" + Error, (byte)52, SqlByte.Xor(TestByte14, TestByte58).Value); AssertEquals("Xor method 2" + Error, (byte)140, SqlByte.Xor(TestByte14, TestByte130).Value); AssertEquals("Xor method 3" + Error, (byte)184, SqlByte.Xor(TestByte58, TestByte130).Value); } // OPERATORS public void TestAdditionOperator() { SqlByte TestByte24 = new SqlByte(24); SqlByte TestByte64 = new SqlByte(64); SqlByte TestByte255 = new SqlByte(255); AssertEquals("Addition operator" + Error, (SqlByte)88,TestByte24 + TestByte64); try { SqlByte result = TestByte64 + TestByte255; Fail("Addition operator 1" + Error); } catch (Exception e) { AssertEquals("Addition operator 2" + Error, typeof(OverflowException), e.GetType()); } } public void TestBitwiseAndOperator() { SqlByte TestByte2 = new SqlByte(2); SqlByte TestByte4 = new SqlByte(4); SqlByte TestByte255 = new SqlByte(255); AssertEquals("Bitwise and operator 1" + Error, (SqlByte)0,TestByte2 & TestByte4); AssertEquals("Bitwise and operaror 2" + Error, (SqlByte)2, TestByte2 & TestByte255); } public void TestBitwiseOrOperator() { SqlByte TestByte2 = new SqlByte(2); SqlByte TestByte4 = new SqlByte(4); SqlByte TestByte255 = new SqlByte(255); AssertEquals("Bitwise or operator 1" + Error, (SqlByte)6,TestByte2 | TestByte4); AssertEquals("Bitwise or operaror 2" + Error, (SqlByte)255, TestByte2 | TestByte255); } public void TestDivisionOperator() { SqlByte TestByte2 = new SqlByte(2); SqlByte TestByte4 = new SqlByte(4); SqlByte TestByte255 = new SqlByte(255); SqlByte TestByte0 = new SqlByte(0); AssertEquals("Division operator 1" + Error, (SqlByte)2,TestByte4 / TestByte2); AssertEquals("Division operaror 2" + Error, (SqlByte)127, TestByte255 / TestByte2); try { TestByte2 = TestByte255 / TestByte0; Fail("Division operator 3" + Error); } catch (Exception e) { AssertEquals("DivideByZeroException", typeof(DivideByZeroException), e.GetType()); } } public void TestEqualityOperator() { SqlByte TestByte15 = new SqlByte(15); SqlByte TestByte15II = new SqlByte(15); SqlByte TestByte255 = new SqlByte(255); Assert("== operator" + Error, (TestByte15 == TestByte15II).Value); Assert("== operator 2" + Error, !(TestByte15 == TestByte255).Value); Assert("!= operator" + Error, !(TestByte15 != TestByte15II).Value); Assert("!= operator 2" + Error, (TestByte15 != TestByte255).Value); } public void TestExclusiveOrOperator() { SqlByte TestByte15 = new SqlByte(15); SqlByte TestByte10 = new SqlByte(10); SqlByte TestByte255 = new SqlByte(255); AssertEquals("Exclusive or operator 1" + Error, (SqlByte)5, (TestByte15 ^ TestByte10)); AssertEquals("Exclusive or operator 2" + Error, (SqlByte)240, (TestByte15 ^ TestByte255)); } public void TestThanOrEqualOperators() { SqlByte TestByte165 = new SqlByte(165); SqlByte TestByte100 = new SqlByte(100); SqlByte TestByte100II = new SqlByte(100); SqlByte TestByte255 = new SqlByte(255); Assert("> operator 1" + Error, (TestByte165 > TestByte100).Value); Assert("> operator 2" + Error, !(TestByte165 > TestByte255).Value); Assert("> operator 3" + Error, !(TestByte100 > TestByte100II).Value); Assert(">= operator 1" + Error, !(TestByte165 >= TestByte255).Value); Assert(">= operator 2" + Error, (TestByte255 >= TestByte165).Value); Assert(">= operator 3" + Error, (TestByte100 >= TestByte100II).Value); Assert("< operator 1" + Error, !(TestByte165 < TestByte100).Value); Assert("< operator 2" + Error, (TestByte165 < TestByte255).Value); Assert("< operator 3" + Error, !(TestByte100 < TestByte100II).Value); Assert("<= operator 1" + Error, (TestByte165 <= TestByte255).Value); Assert("<= operator 2" + Error, !(TestByte255 <= TestByte165).Value); Assert("<= operator 3" + Error, (TestByte100 <= TestByte100II).Value); } public void TestMultiplicationOperator() { SqlByte TestByte4 = new SqlByte(4); SqlByte TestByte12 = new SqlByte(12); SqlByte TestByte128 = new SqlByte(128); AssertEquals("Multiplication operator 1" + Error, (SqlByte)48, TestByte4 * TestByte12); try { SqlByte test = (TestByte128 * TestByte4); Fail("Multiplication operator 2" + Error); } catch (Exception e) { AssertEquals("OverflowException", typeof(OverflowException), e.GetType()); } } public void TestOnesComplementOperator() { SqlByte TestByte12 = new SqlByte(12); SqlByte TestByte128 = new SqlByte(128); AssertEquals("OnesComplement operator 1" + Error, (SqlByte)243, ~TestByte12); AssertEquals("OnesComplement operator 2" + Error, (SqlByte)127, ~TestByte128); } public void TestSubtractionOperator() { SqlByte TestByte4 = new SqlByte(4); SqlByte TestByte12 = new SqlByte(12); SqlByte TestByte128 = new SqlByte(128); AssertEquals("Subtraction operator 1" + Error, (SqlByte)8, TestByte12 - TestByte4); try { SqlByte test = TestByte4 - TestByte128; Fail("Sybtraction operator 2" + Error); } catch (Exception e) { AssertEquals("OverflowException", typeof(OverflowException), e.GetType()); } } public void TestSqlBooleanToSqlByte() { SqlBoolean TestBoolean = new SqlBoolean(true); SqlByte TestByte; TestByte = (SqlByte)TestBoolean; AssertEquals("SqlBooleanToSqlByte op" + Error, (byte)1, TestByte.Value); } public void TestSqlByteToByte() { SqlByte TestByte = new SqlByte(12); byte test = (byte)TestByte; AssertEquals("SqlByteToByte" + Error, (byte)12, test); } public void TestSqlDecimalToSqlByte() { SqlDecimal TestDecimal64 = new SqlDecimal(64); SqlDecimal TestDecimal900 = new SqlDecimal(900); AssertEquals("SqlDecimalToByte" + Error, (byte)64, ((SqlByte)TestDecimal64).Value); try { SqlByte test = (SqlByte)TestDecimal900; Fail("SqlDecimalToByte 2" + Error); } catch (Exception e) { AssertEquals("OverflowException", typeof(OverflowException), e.GetType()); } } public void TestSqlDoubleToSqlByte() { SqlDouble TestDouble64 = new SqlDouble(64); SqlDouble TestDouble900 = new SqlDouble(900); AssertEquals("SqlDecimalToByte" + Error, (byte)64, ((SqlByte)TestDouble64).Value); try { SqlByte test = (SqlByte)TestDouble900; Fail("SqlDoubleToByte 2" + Error); } catch (Exception e) { AssertEquals("OverflowException", typeof(OverflowException), e.GetType()); } } public void TestSqlInt16ToSqlByte() { SqlInt16 TestInt1664 = new SqlInt16(64); SqlInt16 TestInt16900 = new SqlInt16(900); AssertEquals("SqlInt16ToByte" + Error, (byte)64, ((SqlByte)TestInt1664).Value); try { SqlByte test = (SqlByte)TestInt16900; Fail("SqlInt16ToByte 2" + Error); } catch (Exception e) { AssertEquals("OverflowException", typeof(OverflowException), e.GetType()); } } public void TestSqlInt32ToSqlByte() { SqlInt32 TestInt3264 = new SqlInt32(64); SqlInt32 TestInt32900 = new SqlInt32(900); AssertEquals("SqlInt32ToByte" + Error, (byte)64, ((SqlByte)TestInt3264).Value); try { SqlByte test = (SqlByte)TestInt32900; Fail("SqlInt32ToByte 2" + Error); } catch (Exception e) { AssertEquals("OverflowException", typeof(OverflowException), e.GetType()); } } public void TestSqlInt64ToSqlByte() { SqlInt64 TestInt6464 = new SqlInt64(64); SqlInt64 TestInt64900 = new SqlInt64(900); AssertEquals("SqlInt64ToByte" + Error, (byte)64, ((SqlByte)TestInt6464).Value); try { SqlByte test = (SqlByte)TestInt64900; Fail("SqlInt64ToByte 2" + Error); } catch (Exception e) { AssertEquals("OverflowException", typeof(OverflowException), e.GetType()); } } public void TestSqlMoneyToSqlByte() { SqlMoney TestMoney64 = new SqlMoney(64); SqlMoney TestMoney900 = new SqlMoney(900); AssertEquals("SqlMoneyToByte" + Error, (byte)64, ((SqlByte)TestMoney64).Value); try { SqlByte test = (SqlByte)TestMoney900; Fail("SqlMoneyToByte 2" + Error); } catch (Exception e) { AssertEquals("OverflowException", typeof(OverflowException), e.GetType()); } } public void TestSqlSingleToSqlByte() { SqlSingle TestSingle64 = new SqlSingle(64); SqlSingle TestSingle900 = new SqlSingle(900); AssertEquals("SqlSingleToByte" + Error, (byte)64, ((SqlByte)TestSingle64).Value); try { SqlByte test = (SqlByte)TestSingle900; Fail("SqlSingleToByte 2" + Error); } catch (Exception e) { AssertEquals("OverflowException", typeof(OverflowException), e.GetType()); } } public void TestSqlStringToSqlByte() { SqlString TestString = new SqlString("Test string"); SqlString TestString100 = new SqlString("100"); SqlString TestString1000 = new SqlString("1000"); AssertEquals ("SqlStringToByte 1" + Error, (byte)100, ((SqlByte)TestString100).Value); try { SqlByte test = (SqlByte)TestString1000; } catch(Exception e) { AssertEquals("OverflowException", typeof(OverflowException), e.GetType()); } try { SqlByte test = (SqlByte)TestString; Fail("SqlStringToByte 2" + Error); } catch(Exception e) { AssertEquals("FormatException", typeof(FormatException), e.GetType()); } } public void TestByteToSqlByte() { byte TestByte = 14; AssertEquals ("ByteToSqlByte" + Error, (byte)14, ((SqlByte)TestByte).Value); } } } --------------Boundary-00=_R39DWPORGSZ3IL40CYOI-- From kojoadams@hotmail.com Wed Oct 2 21:08:25 2002 From: kojoadams@hotmail.com (kojo) Date: Wed, 2 Oct 2002 16:08:25 -0400 Subject: [Mono-list] decimal bug Message-ID: This is a multi-part message in MIME format. ------=_NextPart_000_002E_01C26A2D.EFE351C0 Content-Type: multipart/alternative; boundary="----=_NextPart_001_002F_01C26A2D.EFE351C0" ------=_NextPart_001_002F_01C26A2D.EFE351C0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hi all, I don't know if this is already filed in bugzilla. The following = fails when compiled with mcs. ------=_NextPart_001_002F_01C26A2D.EFE351C0 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Hi all,
   I don't know if this is = already filed=20 in bugzilla.  The following fails when compiled with = mcs.
 
 
------=_NextPart_001_002F_01C26A2D.EFE351C0-- ------=_NextPart_000_002E_01C26A2D.EFE351C0 Content-Type: application/octet-stream; name="bug.cs" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="bug.cs" public class Run=0A= {=0A= public static void Main()=0A= {=0A= Book myBooks =3D new Book();=0A= Book myBooks5 =3D new Book();=0A= Book myBooks3 =3D new Book();=0A= Book myBooks2 =3D new Book();=0A= myBooks2.price =3D (decimal) 9.95;=0A= myBooks.it();=0A= =0A= }=0A= }=0A= =0A= public class Book=0A= {=0A= public decimal price;=0A= public void it(){}=0A= }=0A= =0A= ------=_NextPart_000_002E_01C26A2D.EFE351C0-- From kmilo@softhome.net Thu Oct 3 02:13:13 2002 From: kmilo@softhome.net (kmilo) Date: 02 Oct 2002 20:13:13 -0500 Subject: [Mono-list] Problems installing Mono 0.16 In-Reply-To: <3D6E9EA7.3090906@golohaas.de> References: <3D6E9EA7.3090906@golohaas.de> Message-ID: <1033607598.26518.20.camel@linux> Mono 0.16 doesn't build for me. Has anyone help? linux:/usr/local/src/mono-0.16 # make ... /usr/local/src/mono-0.16/mono/metadata/threads.c:405: undefined reference to `GC_MALLOC' /usr/local/src/mono-0.16/mono/metadata/threads.c:406: undefined reference to `GC_REGISTER_FINALIZER' collect2: ld returned 1 exit status make[3]: *** [mint] Error 1 make[3]: Saliendo directorio `/usr/local/src/mono-0.16/mono/interpreter' make[2]: *** [all-recursive] Error 1 make[2]: Saliendo directorio `/usr/local/src/mono-0.16/mono' make[1]: *** [all-recursive] Error 1 make[1]: Saliendo directorio `/usr/local/src/mono-0.16' make: *** [all-recursive-am] Error 2 I installl gc6.1. -- kmilo From gizmobits@hotmail.com Thu Oct 3 06:26:29 2002 From: gizmobits@hotmail.com (Just Me) Date: Thu, 03 Oct 2002 00:26:29 -0500 Subject: [Mono-list] Quick Question... Message-ID: I have a question and I haven't seen it come up previously. One thing that has been stated in the past is that part of the rationale for creating Mono was that it would make it easier for the developer and end user as they won't have to worry about dependency issues. How can this be true? From what I have observed, Mono is currently just making calls to various GNOME libraries to get most of the work done. If that is the case, Mono is not the platform that it is claimed to be, just another wrapper like Gtk--, Gnome--, PyGtk and others. Would it not me more appropriate to have the end goal being to have wrappers for only the GUI portions as to maintain the look and feel of GNOME apps? Eventually all classes in Mono should have their own code, should they not? If they do not, won't the dependency problem still exist, only worse? If I have Mono version X installed and it is built against libABC version 1.0 and I have an app that needs libABC version 1.5 which breaks compatibility, it will also break Mono which will, in turn, break every app that relies on it. How can this be considered as advancement for development on Linux? This could be a real nightmare. Please tell me I am wrong about this! I am not going to join the list for this, so please include me in any replies. Thanks! _________________________________________________________________ Join the world’s largest e-mail service with MSN Hotmail. http://www.hotmail.com From martin_aliger@email.cz Thu Oct 3 09:49:07 2002 From: martin_aliger@email.cz (Martin Aliger) Date: Thu, 3 Oct 2002 10:49:07 +0200 (CEST) Subject: [Mono-list] bug: System.IO.FileStream Message-ID: <3D9C0483.000001.22101@email1.atc.cz> Hi all, I'm working on simple patch to nant to handle mono class libraries @list files. During this I found one bug (or rather not implemented thing not marked as [MonoTODO]). ----- using System; using System.IO; class StreamTest { public static void Main () { System.IO.Stream str=File.OpenRead ("/"); System.IO.StreamReader rd=new System.IO.StreamReader (str); int p=rd.Peek (); Console.WriteLine ("{0}", p); } } ----- Note, that I'm opening _directory_ with IO.FileStream. This is not allowed by specs, but current implementaion allows it. It fails later in Text.Encoding (do not know why there? - not reached in regular files - maybe this could be looked into as well) Solution is to patch IO.FileStream's ctor to throws UnauthorizedAccessException when opening directory as described in MS docs. Thanks Martin BTW: nant is already working for me. I will contribute it later today BTW2: --trace is great facility! Maybe this should be extended to produce customizable output or even xml files. It could be better than debugger in some cases. [eg. --trace:nojit,xml] [or integrate to debugger?] [profiling info?] ______________________________________________________________________________ Domácí spotøebièe a elektronika za akèní ceny – slevy a¾ 50 %. Kliknìte na: http://www.obchodni-dum.cz/index.phtml?prov=54&akce=yes From rodrigo@ximian.com Thu Oct 3 10:53:24 2002 From: rodrigo@ximian.com (Rodrigo Moya) Date: 03 Oct 2002 11:53:24 +0200 Subject: [Mono-list] Testsuite for SqlByte In-Reply-To: <200210022109.27097.vi64pa@koti.soon.fi> References: <200210022109.27097.vi64pa@koti.soon.fi> Message-ID: <1033638804.2461.18.camel@localhost> On Wed, 2002-10-02 at 20:09, ville wrote: > SqlByteTest.cs is tested with w2k without problems. > Comments and suggestions are still welcome. > applied to CVS. Only one thing, which I had to change in the file you sent, which is the coding style. You are not using Mono's, which should be described, AFAIK, in go-mono.com. Please follow that coding style. cheers -- Rodrigo Moya From groith@tcrz.net Thu Oct 3 11:01:46 2002 From: groith@tcrz.net (Guenther Roith) Date: Thu, 3 Oct 2002 12:01:46 +0200 Subject: [Mono-list] Quick Question... References: Message-ID: <002a01c26ac3$e2520bf0$010aa8c0@roithw2k> Hi! > I have a question and I haven't seen it come up previously. One thing that > has been stated in the past is that part of the rationale for creating Mono > was that it would make it easier for the developer and end user as they > won't have to worry about dependency issues. How can this be true? From > what I have observed, Mono is currently just making calls to various GNOME > libraries to get most of the work done. If that is the case, Mono is not > the platform that it is claimed to be, just another wrapper like Gtk--, > Gnome--, PyGtk and others. Would it not me more appropriate to have the end > goal being to have wrappers for only the GUI portions as to maintain the > look and feel of GNOME apps? Eventually all classes in Mono should have > their own code, should they not? If they do not, won't the dependency > problem still exist, only worse? If I have Mono version X installed and it > is built against libABC version 1.0 and I have an app that needs libABC > version 1.5 which breaks compatibility, it will also break Mono which will, > in turn, break every app that relies on it. How can this be considered as > advancement for development on Linux? This could be a real nightmare. > Please tell me I am wrong about this! Yes, you are ;-) First, mono is _not_ a wrapper around GNOME libs. Most parts of the class library work without it. Then, the GNOME API is finally frozen and will be back-wards compatible. Now, the benefit of solving dependency issues was really not the biggest reason for creating mono, but still the feature exists. It doesn't mean, that if you call native libs, they can exist in various versions, but if you write your application in "managed code"/IL , mono can handle different versions of that code, by using the "Global Assesmbly Cache". So, the conclusion is, if you write in C#, your program won't have that problems or cause them, the mono class lib/runtime, theoretically still has them. Johannes From ccesario@isic.com.br Thu Oct 3 13:02:25 2002 From: ccesario@isic.com.br (Carlos Cesario) Date: Thu, 03 Oct 2002 09:02:25 -0300 Subject: [Mono-list] Information Message-ID: <3D9C31D1.7090307@isic.com.br> I'm trying, with two more friends, to do "monoBR" site using XSP, but we are in trouble. We'd like to create a template with the menu/header/footer/etc...we'd like to use "include", but this feature is not implemented yet, is there any other way to do this? greets Carlos Cesario From weiqigao@networkusa.net Thu Oct 3 13:50:14 2002 From: weiqigao@networkusa.net (Weiqi Gao) Date: 03 Oct 2002 07:50:14 -0500 Subject: [Mono-list] Mono for Red Hat 7.2 Channel in Red Carpet Message-ID: <1033649416.5443.8.camel@gao-2001> I'm delighted to see the Mono channel is available for Red Hat 7.2 today. However Red Carpet encountered an error while downloading Channel data (404). I just want some one at Ximian's end to know about the error. (The red-carpet@ximian.com list is not accepting my emails.) Thanks, -- Weiqi Gao weiqigao@networkusa.net From dick@ximian.com Thu Oct 3 15:10:08 2002 From: dick@ximian.com (Dick Porter) Date: 03 Oct 2002 15:10:08 +0100 Subject: [Mono-list] Mono on FreeBSD In-Reply-To: <1032892996.16403.6.camel@hagbard.apathetic.discordia.org.uk> References: <000c01c263db$f48e0150$ac88fea9@developers.local> <1032892996.16403.6.camel@hagbard.apathetic.discordia.org.uk> Message-ID: <1033654207.17088.19.camel@hagbard.apathetic.discordia.org.uk> On Tue, 2002-09-24 at 19:43, Dick Porter wrote: > On Tue, 2002-09-24 at 16:06, Jonel Rienton wrote: > > Thanks Dick, are you getting any of those Memory Sanity Check failed > > error when you build/run(mono/mcs) your apps? > > > > "Shared memory sanity check failed." ? > > Thats to do with the shared memory handle daemon. Mark committed some > code recently to make that work on solaris, but it's not working > properly on freebsd yet. Figuring out why is on my todo list. For those that care, I've just committed the fixes that allow shared memory handles to work on freebsd. - Dick From gonzalo@ximian.com Thu Oct 3 15:31:22 2002 From: gonzalo@ximian.com (Gonzalo Paniagua Javier) Date: 03 Oct 2002 16:31:22 +0200 Subject: [Mono-list] bug: System.IO.FileStream In-Reply-To: <3D9C0483.000001.22101@email1.atc.cz> References: <3D9C0483.000001.22101@email1.atc.cz> Message-ID: <1033655484.1119.0.camel@lalo2.micasa> El jue, 03-10-2002 a las 10:49, Martin Aliger escribió: > > Solution is to patch IO.FileStream's ctor to throws UnauthorizedAccessException when opening directory as described in MS docs. Fixed in CVS. Thanks! -Gonzalo From mwh@sysrq.dk Thu Oct 3 16:00:29 2002 From: mwh@sysrq.dk (Martin Willemoes Hansen) Date: 03 Oct 2002 17:00:29 +0200 Subject: [Mono-list] Problems installing Mono 0.16 In-Reply-To: <1033607598.26518.20.camel@linux> References: <3D6E9EA7.3090906@golohaas.de> <1033607598.26518.20.camel@linux> Message-ID: <1033657229.309.8.camel@spiril> Umh did you install from src? Anyways did you get the headers from gc installed? I had to cp them manually, check the build script in the download section of go-mono.org btw the headers will be installed automagically in the next release of gc. > Mono 0.16 doesn't build for me. > > Has anyone help? > > linux:/usr/local/src/mono-0.16 # make > > ... > /usr/local/src/mono-0.16/mono/metadata/threads.c:405: undefined > reference to `GC_MALLOC' > /usr/local/src/mono-0.16/mono/metadata/threads.c:406: undefined > reference to `GC_REGISTER_FINALIZER' > collect2: ld returned 1 exit status > make[3]: *** [mint] Error 1 > make[3]: Saliendo directorio `/usr/local/src/mono-0.16/mono/interpreter' > make[2]: *** [all-recursive] Error 1 > make[2]: Saliendo directorio `/usr/local/src/mono-0.16/mono' > make[1]: *** [all-recursive] Error 1 > make[1]: Saliendo directorio `/usr/local/src/mono-0.16' > make: *** [all-recursive-am] Error 2 > > > I installl gc6.1. > > -- > kmilo > > > _______________________________________________ > Mono-list maillist - Mono-list@ximian.com > http://lists.ximian.com/mailman/listinfo/mono-list -- Martin Willemoes Hansen -------------------------------------------------------- E-Mail mwh@sysrq.dk Website mwh.sysrq.dk IRC MWH, openprojects -------------------------------------------------------- From Neale.Ferguson@SoftwareAG-USA.com Thu Oct 3 16:12:27 2002 From: Neale.Ferguson@SoftwareAG-USA.com (Ferguson, Neale) Date: Thu, 3 Oct 2002 11:12:27 -0400 Subject: [Mono-list] MONO_TYPE_TVALUE Message-ID: <9A4FC925410C024792B85198DF1E97E403F459CB@usmsg03.sagus.com> This message is in MIME format. Since your mail reader does not understand this format, some or all of this message may not be legible. ------_=_NextPart_001_01C26AEF.48FAF710 Content-Type: text/plain; charset="iso-8859-1" When you're trampoline is invoked and the routine to be called returns a structure what do you return to the caller of the trampoline? For S/390 when you are returned a structure, you pass a hidden parameter to the callee which points to an area on the stack it can use to return the data. So I make room on the stack, point (in S/390's case) R2 to it and call the routine. On return that area contains what I'd expect. Now, how do I return this information to my caller (which has passed me a pointer to retval)? I thought I'd move the structure from the stack to the area addressed by retval but, apparently, that's not correct. Do the other architectures simply use retval as the "hidden" parameter so the caller puts the data directly there? Neale Ferguson ------_=_NextPart_001_01C26AEF.48FAF710 Content-Type: text/html; charset="iso-8859-1"
When you're trampoline is invoked and the routine to be called returns a structure what do you return to the caller of the trampoline? For S/390 when you are returned a structure, you pass a hidden parameter to the callee which points to an area on the stack it can use to return the data. So I make room on the stack, point (in S/390's case) R2 to it and call the routine. On return that area contains what I'd expect. Now, how do I return this information to my caller (which has passed me a pointer to retval)? I thought I'd move the structure from the stack to the area addressed by retval but, apparently, that's not correct. Do the other architectures simply use retval as the "hidden" parameter so the caller puts the data directly there?

Neale Ferguson

 
------_=_NextPart_001_01C26AEF.48FAF710-- From manyoso@yahoo.com Thu Oct 3 17:30:40 2002 From: manyoso@yahoo.com (Adam Treat) Date: Thu, 3 Oct 2002 12:30:40 -0400 Subject: [Mono-list] Qt# 0.5 has been released Message-ID: <200210031230.40662.manyoso@yahoo.com> October 3rd, 2002 Qt# 0.5 - A cross-platform GUI toolkit for Mono and Portable.Net, has been released. Download for source, binaries, tutorials and documentation: http://sourceforge.net/project/showfiles.php?group_id=48999 Information and screenshots: http://qtcsharp.sourceforge.net Debian apt source: deb http://qtcsharp.sourceforge.net/debian unstable release Changes since 0.4 * Changed distribution name from `qtcsharp' to `qtsharp' (all) * API now uses PascalCase which is the default code style of the ECMA specifications (adam) * Overhaul of the signal/slot implementation including signal <--> signal connections. (nick) * Full event handling support (nick/adam) * A C# parser for the Qt header files replacing the kalyptus script and making way for the QtC replacement (marcus) * Preliminary RAD support with uicsharp and QWidgetFactory (joseph/marcus) * Better memory management with the use of Weak References in our object tracker (all) * Monodoc: Mono's GUI documentation editor written in Qt# (adam/john) * Support for C# signals (nick) * Updates of QtC including better support for QSizePolicy (marcus) * Support for more Qt/C++ signal/slot prototypes (nick) * Object tracking via Qt signals and runtime debugging support '--qts-help' (nick) * Patches to compile and run on Rotor/FreeBSD (alexander) * Scribblewindow is now double buffered and has a color menu (marcus) * Numerous bug fixes and small enhancements (all) Qt# developers: Adam Treat, Marcus Urban, Nick Zigarovich, Joseph Wenninger, John Sohn, Alexander Pigolkine From duncan@ximian.com Thu Oct 3 01:50:03 2002 From: duncan@ximian.com (Duncan Mak) Date: 02 Oct 2002 20:50:03 -0400 Subject: [Mono-list] Problems installing Mono 0.16 In-Reply-To: <1033607598.26518.20.camel@linux> References: <3D6E9EA7.3090906@golohaas.de> <1033607598.26518.20.camel@linux> Message-ID: <1033606202.7519.0.camel@localhost.localdomain> On Wed, 2002-10-02 at 21:13, kmilo wrote: > Mono 0.16 doesn't build for me. > > Has anyone help? > > I installl gc6.1. > If you installed from RPM, you need to install the -devel package too in order to build mono. -- Duncan Mak From dietmar@ximian.com Thu Oct 3 18:10:21 2002 From: dietmar@ximian.com (Dietmar Maurer) Date: 03 Oct 2002 19:10:21 +0200 Subject: [Mono-list] MONO_TYPE_TVALUE In-Reply-To: <9A4FC925410C024792B85198DF1E97E403F459CB@usmsg03.sagus.com> References: <9A4FC925410C024792B85198DF1E97E403F459CB@usmsg03.sagus.com> Message-ID: <1033665021.30690.19.camel@tequila> On Thu, 2002-10-03 at 17:12, Ferguson, Neale wrote: > When you're trampoline is invoked and the routine to be called returns a > structure what do you return to the caller of the trampoline? For S/390 when > you are returned a structure, you pass a hidden parameter to the callee > which points to an area on the stack it can use to return the data. So I > make room on the stack, point (in S/390's case) R2 to it and call the > routine. On return that area contains what I'd expect. Now, how do I return > this information to my caller (which has passed me a pointer to retval)? I > thought I'd move the structure from the stack to the area addressed by > retval but, apparently, that's not correct. Do the other architectures > simply use retval as the "hidden" parameter so the caller puts the data > directly there? yes. X86 has the same calling convention, so you can take a look on the current code how that is implemented (jit.c line 2201, impl. of CALL opcode). - Dietmar From miguel@ximian.com Thu Oct 3 18:19:50 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 03 Oct 2002 13:19:50 -0400 Subject: [Mono-list] Quick Question... In-Reply-To: References: Message-ID: <1033665590.27715.3870.camel@erandi.boston.ximian.com> Hello, > I have a question and I haven't seen it come up previously. One thing that > has been stated in the past is that part of the rationale for creating Mono > was that it would make it easier for the developer and end user as they > won't have to worry about dependency issues. How can this be true? From I wonder where we said that and in which context. If you do not want to worry about this, wait until Mono is packaged for you and installed as part of your Linux distribution. It is not ready to be used by casual users yet. Miguel From miguel@ximian.com Thu Oct 3 18:21:49 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 03 Oct 2002 13:21:49 -0400 Subject: [Mono-list] bug: System.IO.FileStream In-Reply-To: <3D9C0483.000001.22101@email1.atc.cz> References: <3D9C0483.000001.22101@email1.atc.cz> Message-ID: <1033665708.27715.3876.camel@erandi.boston.ximian.com> Hello, > > Note, that I'm opening _directory_ with IO.FileStream. This is not allowed by specs, but current implementaion allows it. It fails later in Text.Encoding (do not know why there? - not reached in regular files - maybe this could be looked into as well) In Unix it is valid to open a directory. On some Unix systems you can read the directory from the handle you obtained, in some others you cant. > Solution is to patch IO.FileStream's ctor to throws UnauthorizedAccessException when opening directory as described in MS docs. Possibly. > BTW2: --trace is great facility! Maybe this should be extended to produce customizable output or even xml files. It could be better than debugger in some cases. [eg. --trace:nojit,xml] [or integrate to debugger?] [profiling info?] Yes, it would be nice to have more features in the tracer. From miguel@ximian.com Thu Oct 3 18:22:49 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 03 Oct 2002 13:22:49 -0400 Subject: [Mono-list] Information In-Reply-To: <3D9C31D1.7090307@isic.com.br> References: <3D9C31D1.7090307@isic.com.br> Message-ID: <1033665769.27715.3880.camel@erandi.boston.ximian.com> Hello, > I'm trying, with two more friends, to do "monoBR" site using XSP, but we > are in trouble. > We'd like to create a template with the menu/header/footer/etc...we'd > like to use "include", but this feature is not implemented yet, is there > any other way to do this? XSP/ASP.NET support is not ready for prime time use. You are better off waiting until a number of pieces are put together. Miguel From luifer@onetel.net.uk Thu Oct 3 19:16:08 2002 From: luifer@onetel.net.uk (Luis Fernandez) Date: 03 Oct 2002 18:16:08 +0000 Subject: [Mono-list] Checking for identical items in an ArrayList Message-ID: <1033668972.1392.12.camel@linux> Hi all, I'm trying to implement a few methods in the System.Data namespace but I have the following question. When creating a DataTable and populating it, the values of each column are stored in an ArrayList. If after populating the DataTable I try to set one of the columns to be unique, the classes need to check if there is any repeated value in the ArrayList. Since the DataTable can be storing considerable amounts of data, I would like to know what what be the best way, performance wise, of doing this. Thanks for your help. Luis From miguel@ximian.com Thu Oct 3 18:32:37 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 03 Oct 2002 13:32:37 -0400 Subject: [Mono-list] Mono Core In-Reply-To: <127.17ea60b4.2acb0ea1@aol.com> References: <127.17ea60b4.2acb0ea1@aol.com> Message-ID: <1033666357.27716.3899.camel@erandi.boston.ximian.com> Hello, > 1. When will Mono Core be released? The plans have not been finalized yet. > 2. Will it handle graphic methods, such as polygon fill? Mono Core (the first public release of Mono) will be limited in scope: it will just be a stable release of the components that we feel are mature for people to use. It will likely not ship with a GUI toolkit, and much less with Windows.Forms support. You might want to look into Gtk# or Qt# as GUI toolkits in the meantime, but neither is a production quality toolkit. Today if you want a portable GUI application with a high level language, you want to use Java. Miguel. From Girish Pal Singh" Hi, I am an engineering student from India and having my primary interest as programming. I love both C# and linux. As we are having a project in our final semester. So I wanna develop something related to both C# and linux. and i think i have found right place at Mono. Could you make me involved in development efforts. Thanks. Girish Pal Singh B.tech C.Sc & Engg, ASET New Delhi From tomar@apricot.com Thu Oct 3 19:18:09 2002 From: tomar@apricot.com (Tomar) Date: 03 Oct 2002 13:18:09 -0500 Subject: [Mono-list] Mono for Red Hat 7.2 Channel in Red Carpet In-Reply-To: <1033649416.5443.8.camel@gao-2001> References: <1033649416.5443.8.camel@gao-2001> Message-ID: <1033669089.5029.29.camel@tomalon> It is a good thing you did bring this up because right now the channel exists but no software is available to download. I do see an update to red-carpet itself and I'm hoping that it will clear up the problem. Does anyone have insight into what is going on? Tom Larsen On Thu, 2002-10-03 at 07:50, Weiqi Gao wrote: > I'm delighted to see the Mono channel is available for Red Hat 7.2 > today. > > However Red Carpet encountered an error while downloading Channel data > (404). > > I just want some one at Ximian's end to know about the error. (The > red-carpet@ximian.com list is not accepting my emails.) > > Thanks, > -- > Weiqi Gao > weiqigao@networkusa.net > > > _______________________________________________ > Mono-list maillist - Mono-list@ximian.com > http://lists.ximian.com/mailman/listinfo/mono-list > From miguel@ximian.com Thu Oct 3 19:34:24 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 03 Oct 2002 14:34:24 -0400 Subject: [Mono-list] decimal bug In-Reply-To: References: Message-ID: <1033670063.27716.3962.camel@erandi.boston.ximian.com> Hello, > I don't know if this is already filed in bugzilla. The following > fails when compiled with mcs. Thanks for the bug report, but in the future please use Bugzilla, because that helps us track down the problem. If it is duplicated, we will mark it as duplicated, or you can check the list for yourself (helping us focus on the problems, and helping Mono along the way). The bug has now been fixed, and will commit a patch. Miguel From j0k3rin@yahoo.co.in Thu Oct 3 15:25:32 2002 From: j0k3rin@yahoo.co.in (Zaphod) Date: Thu, 3 Oct 2002 19:55:32 +0530 Subject: [Mono-list] Quick Question... In-Reply-To: <002a01c26ac3$e2520bf0$010aa8c0@roithw2k>; from groith@tcrz.net on Thu, Oct 03, 2002 at 12:01:46PM +0200 References: <002a01c26ac3$e2520bf0$010aa8c0@roithw2k> Message-ID: <20021003195532.A4632@md3.vsnl.net.in> On Thu, Oct 03, 2002 at 12:01:46PM +0200, Guenther Roith wrote: > > Now, the benefit of solving dependency issues was really not the biggest > reason for creating mono, but still the feature exists. It doesn't mean, > that if you call native libs, they can exist in various versions, but if you > write your application in "managed code"/IL , mono can handle different > versions of that code, by using the "Global Assesmbly Cache". > > So, the conclusion is, if you write in C#, your program won't have that > problems or cause them, the mono class lib/runtime, theoretically still has > them. Hmm... after that , I still can't understand why mono is yet another dependency hellhole ... I've tried compiling gcc before and understand bootstrapping , but this is insane !!! .. ||Your mono runtime and corlib are out of sync. ||When you update one from cvs you need to update, compile and install ||the other too. ||Do not report this as a bug unless you're sure you have updated ||correctly: ||you probably have a broken mono install. ||If you see other errors or faults after this message they are probably ||related ||and you need to fix your mono install first. I've tried DotGNU and found that CVS compiled out of the box , can I use that to compile mcs Or is there a vendor conflict there as well ? From treilly@macromedia.com Thu Oct 3 20:03:42 2002 From: treilly@macromedia.com (Tom Reilly) Date: Thu, 3 Oct 2002 15:03:42 -0400 Subject: [Mono-list] Quick Question... Message-ID: The nice thing about the future is that it hasn't happened yet, I imagine Mono could make developers not have to worry about dependency issues if enough people wanted it to. It would be nice if you could build an application with mono, package it in some form that expresses its dependencies (but doesn't include them) and have the runtime system handle downloading the right version of the dependencies if they aren't already present on the host system. Or you could package your app in a wrapper that handled the dependency checking/downloading, which would be nice because it would run on MS's .Net and it could be completely separate from Mono. Such a system would make it such that the Mono libraries wouldn't have to be of the kitchen sink variety and neither would your application. .Net assemblies have a lot of features that could make such a system robust. IBM's sash platform has something akin to this: http://sash.alphaworks.ibm.com/ > -----Original Message----- > From: Miguel de Icaza [mailto:miguel@ximian.com] > Sent: Thursday, October 03, 2002 1:20 PM > To: Just Me > Cc: mono-list@ximian.com > Subject: Re: [Mono-list] Quick Question... > > > Hello, > > > I have a question and I haven't seen it come up previously. > One thing that > > has been stated in the past is that part of the rationale > for creating Mono > > was that it would make it easier for the developer and end > user as they > > won't have to worry about dependency issues. How can this > be true? From > > I wonder where we said that and in which context. > > If you do not want to worry about this, wait until Mono is > packaged for > you and installed as part of your Linux distribution. It is not ready > to be used by casual users yet. > > Miguel > > _______________________________________________ > Mono-list maillist - Mono-list@ximian.com > http://lists.ximian.com/mailman/listinfo/mono-list > From dietmar@ximian.com Thu Oct 3 20:57:53 2002 From: dietmar@ximian.com (Dietmar Maurer) Date: 03 Oct 2002 21:57:53 +0200 Subject: [Mono-list] (no subject) In-Reply-To: <20021003180952.23740.qmail@webmail16.rediffmail.com> References: <20021003180952.23740.qmail@webmail16.rediffmail.com> Message-ID: <1033675074.30679.24.camel@tequila> On Thu, 2002-10-03 at 20:09, Girish Pal Singh wrote: > Hi, > I am an engineering student from India and having my primary > interest as programming. I love both C# and linux. > As we are having a project in our final semester. So I wanna > develop something related to both C# and linux. and i think i have > found right place at Mono. > Could you make me involved in development efforts. > Thanks. We have a web page with much informations, just take a look at http://www.go-mono.org/contributing.html for more infos. - Dietmar From zer@neo.rr.com Fri Oct 4 03:08:27 2002 From: zer@neo.rr.com (James F. Bellinger) Date: Thu, 3 Oct 2002 22:08:27 -0400 Subject: [Mono-list] pinvoke4 In-Reply-To: <9A4FC925410C024792B85198DF1E97E403F459B5@usmsg03.sagus.com> Message-ID: <000001c26b4a$f8d5ac60$14cb5d18@ruri> This is a multi-part message in MIME format. ------=_NextPart_000_0001_01C26B29.71C40C60 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit If I may make a guess, a bool has a size of 1, and the three Boolean values are being aligned to four bytes. Have a nice day :-) Jim Bellinger -----Original Message----- From: mono-list-admin@ximian.com [mailto:mono-list-admin@ximian.com] On Behalf Of Ferguson, Neale Sent: Tuesday, October 01, 2002 10:20 PM To: Monolist (E-mail) Subject: [Mono-list] pinvoke4 In pinvoke4.cs simplestruct is defined as: public struct SimpleStruct { public bool a; public bool b; public bool c; public string d; } In libtest.c simplestruct is defined as: typedef struct { int a; int b; int c; char *d; } simplestruct However, when mono_create_trampoline the size of the returned by: mono_class_value_size (sig->ret->data.klass, NULL) is 8. Why is it not 16? I guess the answer is it should be 16 but I'm doing something stupid. Neale Ferguson ------=_NextPart_000_0001_01C26B29.71C40C60 Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable

If I may make a guess, a bool has a = size of 1, and the three Boolean values are being aligned to four = bytes.

 

Have a nice day J

Jim Bellinger

 

-----Original = Message-----
From: = mono-list-admin@ximian.com [mailto:mono-list-admin@ximian.com] On Behalf Of Ferguson, Neale
Sent: Tuesday, October = 01, 2002 10:20 PM
To: Monolist (E-mail)
Subject: [Mono-list] = pinvoke4

 

In pinvoke4.cs simplestruct is defined = as:

 

        public struct SimpleStruct {
            &= nbsp;   public bool a;
            &= nbsp;   public bool b;
            &= nbsp;   public bool c;
            &= nbsp;   public string d;
        }

In libtest.c simplestruct is defined = as:

 

typedef struct {
        int a;
        int b;
        int c;
        char *d;
} simplestruct

 

However, when = mono_create_trampoline the = size of the returned by: mono_class_value_size (sig->ret->data.klass, NULL) is 8. Why is it not 16? I = guess the answer is it should be 16 but I'm doing something = stupid.

Neale = Ferguson

------=_NextPart_000_0001_01C26B29.71C40C60-- From gaurav.vaish@amsoft.net Fri Oct 4 04:58:43 2002 From: gaurav.vaish@amsoft.net (Gaurav Vaish) Date: Fri, 4 Oct 2002 09:28:43 +0530 Subject: [Mono-list] Checking for identical items in an ArrayList References: <1033668972.1392.12.camel@linux> Message-ID: <008301c26b5a$5716b5d0$38ca14c0@amsoft.co.in> > > Hi all, > > I'm trying to implement a few methods in the System.Data namespace but I > have the following question. > > When creating a DataTable and populating it, the values of each column > are stored in an ArrayList. > > If after populating the DataTable I try to set one of the columns to be > unique, the classes need to check if there is any repeated value in the > ArrayList. Though not quite sure, but a binary sort followed by matching adjacent elements. Sorting and searching on the basis of their hashcodes. If someone finds better, please do let me know. I will overhaul quite a few of my programs. ;-) Happy hacking, Gaurav http://mastergaurav.virtualave.net/iitk ---------------------------- > > Since the DataTable can be storing considerable amounts of data, I would > like to know what what be the best way, performance wise, of doing this. > > Thanks for your help. > > Luis From gaurav.vaish@amsoft.net Fri Oct 4 05:04:33 2002 From: gaurav.vaish@amsoft.net (Gaurav Vaish) Date: Fri, 4 Oct 2002 09:34:33 +0530 Subject: [Mono-list] (no subject) References: <20021003180952.23740.qmail@webmail16.rediffmail.com> Message-ID: <009501c26b5b$272b72b0$38ca14c0@amsoft.co.in> ----- Original Message ----- From: "Girish Pal Singh" To: Sent: Thursday, October 03, 2002 23:39 Subject: [Mono-list] (no subject) > Hi, Hello, > I am an engineering student from India and having my primary > interest as programming. I love both C# and linux. > As we are having a project in our final semester. So I wanna > develop something related to both C# and linux. and i think i have > found right place at Mono. Great time. Welcome aboard (!) > Could you make me involved in development efforts. Concisely, define your areas of interest and see if there is work going or to be done in the area. Check out the http://www.go-mono.com/contributing.html page on how you can contribute. Get a local copy of the CVS (esp the module mcs) and see where you can get your fingers going. When you are ready with the code (or docs, in case you're interested in documentation - least likely I guess), inform the list with your code / patches. [ btw Girish, where's ASET? I am also based in New Delhi. ] Happy hacking, Gaurav http://mastergaurav.virtualave.net/iitk ---------------------------- > Thanks. > > Girish Pal Singh > B.tech C.Sc & Engg, > ASET New Delhi From dick@ximian.com Fri Oct 4 10:51:09 2002 From: dick@ximian.com (Dick Porter) Date: 04 Oct 2002 10:51:09 +0100 Subject: [Mono-list] Quick Question... In-Reply-To: <20021003195532.A4632@md3.vsnl.net.in> References: <002a01c26ac3$e2520bf0$010aa8c0@roithw2k> <20021003195532.A4632@md3.vsnl.net.in> Message-ID: <1033725069.17088.27.camel@hagbard.apathetic.discordia.org.uk> On Thu, 2002-10-03 at 15:25, Zaphod wrote: > Hmm... after that , I still can't understand why mono is yet another > dependency hellhole ... I've tried compiling gcc before and understand > bootstrapping , but this is insane !!! .. Try building gcc without another C compiler on your system - Dick From rgresham@fire.ci.portland.or.us Thu Oct 3 20:54:48 2002 From: rgresham@fire.ci.portland.or.us (Gresham, Rick (PFB Email)) Date: Thu, 3 Oct 2002 12:54:48 -0700 Subject: [Mono-list] Security Message-ID: This message is in MIME format. Since your mail reader does not understand this format, some or all of this message may not be legible. ------_=_NextPart_001_01C26B16.BAD5EDF0 Content-Type: text/plain; charset="iso-8859-1" Will Mono on Linux support/interoperate with the same security features that are being built into Windows and .Net such as code access security and role-based security? Will IBM's Eclipse become a sort of open source Visual Stuido.Net complete with mono framework GUI designers and code templates? What about the "enterprise services" like transactions and message queueing that are available in Win2K? Are there analogs in the open source/Linux platform. Thanks. ------_=_NextPart_001_01C26B16.BAD5EDF0 Content-Type: text/html; charset="iso-8859-1"
Will Mono on Linux support/interoperate with the same security features that are being built into Windows and .Net such as code access security and role-based security? 
 
Will IBM's Eclipse become a sort of open source Visual Stuido.Net complete with mono framework GUI designers and code templates?
 
What about the "enterprise services" like transactions and message queueing that are available in Win2K?  Are there analogs in the open source/Linux platform.
 
 
Thanks.
------_=_NextPart_001_01C26B16.BAD5EDF0-- From Thomas_Delrue@hotmail.com Fri Oct 4 11:35:22 2002 From: Thomas_Delrue@hotmail.com (Thomas Delrue) Date: Fri, 4 Oct 2002 12:35:22 +0200 Subject: [Mono-list] Ildasm - ilasm Message-ID: <000401c26b91$bded7140$5900fe0a@iwt.ehb.be> Hello I read on the site (www.go-mono.org) that you already have a dissassembler (that would be 'monodis')... I was wondering if there also is an IL Assembler? An application that will assemble (MS-)IL into code (assemblies) that can be used within MONO. If there isn't, are there plans to create one? Thanks -- Thomas Delrue Thomas_Delrue@hotmail.com "Do not heed his words, for he is from the planet 'Bullock', and all from the planet 'Bullock' are liars!" From groith@tcrz.net Fri Oct 4 12:38:21 2002 From: groith@tcrz.net (Guenther Roith) Date: Fri, 4 Oct 2002 13:38:21 +0200 Subject: [Mono-list] Ildasm - ilasm References: <000401c26b91$bded7140$5900fe0a@iwt.ehb.be> Message-ID: <001001c26b9a$8cad79f0$010aa8c0@roithw2k> > dissassembler (that would be 'monodis')... I was wondering if there > also is an IL Assembler? Serge has done one, in the mcs package from 0.16, written in C#, but it's still old code and requires an update. Johannes From martin@gnome.org Fri Oct 4 15:14:41 2002 From: martin@gnome.org (Martin Baulig) Date: 04 Oct 2002 16:14:41 +0200 Subject: [Mono-list] Checking for identical items in an ArrayList In-Reply-To: <008301c26b5a$5716b5d0$38ca14c0@amsoft.co.in> References: <1033668972.1392.12.camel@linux> <008301c26b5a$5716b5d0$38ca14c0@amsoft.co.in> Message-ID: <86vg4ixpda.fsf@einstein.home-of-linux.org> "Gaurav Vaish" writes: > > I'm trying to implement a few methods in the System.Data namespace but I > > have the following question. > > > > When creating a DataTable and populating it, the values of each column > > are stored in an ArrayList. > > > > If after populating the DataTable I try to set one of the columns to be > > unique, the classes need to check if there is any repeated value in the > > ArrayList. > > > Though not quite sure, but a binary sort followed by matching adjacent > elements. Sorting and searching on the basis of their hashcodes. > > If someone finds better, please do let me know. I will overhaul quite a > few of my programs. ;-) One (very easy to implement, but very expensive) way of doing this is storing all array elements in a hash table: Hashtable hash = new Hashtable (); foreach (Element e in list) { if (hash.Contains (e)) { // You have a duplicate } else hash.Add (e, some_value); } } I think the optimal way of doing this is using a binary search like you suggested. However, you should implement the search algorithm yourself since you may be able to avoid the additional searching pass. The sorting algorithm needs to compare elements anyways, so it could easily detect duplicates. -- Martin Baulig martin@gnome.org From martin@gnome.org Fri Oct 4 15:32:08 2002 From: martin@gnome.org (Martin Baulig) Date: 04 Oct 2002 16:32:08 +0200 Subject: [Mono-list] mcs bug In-Reply-To: <3D97FF47.000001.06283@email1.atc.cz> References: <3D97FF47.000001.06283@email1.atc.cz> Message-ID: <86ofaaxok7.fsf@einstein.home-of-linux.org> Thanks for your bug report, I'll fix it as soon as possible. Martin Martin Aliger writes: > Hi all, > > while my attempt to isolate bug in NAnt to send it to nant developers, I found another bug in mcs. It is not serious, but should be fixed. > > It seems, that mcs assumes public visibility to contructors as default, rather than private as MS csc does. There is code to reproduce this: > > ------- > using System; > > class Element > { > string _name=""; > public String Name {get{return _name;}} > > Element(string s) //should be public > { > _name=s; > } > } > > class ElTest > { > private Element _d=new Element("derived"); > public Element El {get{return _d;}} > > static public void Main() > { > ElTest t=new ElTest(); > Console.WriteLine(t.El.Name); > } > > } > > ------- > > CSC throws error: > ell.cs(21,21): error CS0122: 'Element.Element(string)' is inaccessible due to its protection level > > MCS compiles successfully and resulting code works :-) > > Martin Aliger > > > ______________________________________________________________________________ > Domácí spotøebièe a elektronika za akèní ceny – slevy a¾ 50 %. > Kliknìte na: http://www.obchodni-dum.cz/index.phtml?prov=54&akce=yes > > > > _______________________________________________ > Mono-list maillist - Mono-list@ximian.com > http://lists.ximian.com/mailman/listinfo/mono-list > -- Martin Baulig martin@gnome.org From martin_aliger@email.cz Fri Oct 4 16:55:16 2002 From: martin_aliger@email.cz (Martin Aliger) Date: Fri, 4 Oct 2002 17:55:16 +0200 (CEST) Subject: [Mono-list] mono bug?: VolumeSeparatorChar (System.IO.Path) Message-ID: <3D9DB9E4.000001.18864@email1.atc.cz> Hi all, this one is pretty serious [and little tricky]. Consider this example: -------- using System; using System.IO; class PathTest { static public void Main() { Console.WriteLine("{0}",Path.IsPathRooted("bin")); Console.WriteLine("{0}",Path.IsPathRooted("/bin")); Console.WriteLine("{0}",Path.IsPathRooted("./bin")); } } -------- What it could write? I hope "False/True/False". It looks logical as well. BUT now it returns "False/True/True" ! Problem is digged in VolumeSeparatorChar, which is '/' on Linux. IsPathRooted uses this condition: char c = path [0]; return (c == DirectorySeparatorChar || c == AltDirectorySeparatorChar || (path.Length > 1 && path [1] == VolumeSeparatorChar)); and both path.Length>1 and path[1]='/' is true. Real problem is, that I do not know what MS guys means by setting VolumeSep to '/' on Unixes (as docs says). It makes no sense to me... What about relative paths as "a/b/c/d.exe" ? Full path could be e.g. "/home/alik/mono/a/b/c/d.exe" and everything is ok... I was about to report fix to this as change VolumeSepChar to '\0' (in runtime) but than read MS docs... Any idea? Martin BTW: Is corlib/Linux/Linux.cs file is meaningful? At least there defined VolumeSepChar is not... [should be removed to increase cleanliness] BTW2: in Path.Combine current implementation the condition " bool b2 = path2 [0] == DirectorySeparatorChar || path2 [0] == AltDirectorySeparatorChar; " is always true (checked before with IsPathRooted) ______________________________________________________________________________ Domácí spotøebièe a elektronika za akèní ceny – slevy a¾ 50 %. Kliknìte na: http://www.obchodni-dum.cz/index.phtml?prov=54&akce=yes From martin_aliger@email.cz Fri Oct 4 16:59:27 2002 From: martin_aliger@email.cz (Martin Aliger) Date: Fri, 4 Oct 2002 17:59:27 +0200 (CEST) Subject: [Mono-list] mcs question Message-ID: <3D9DBADF.000001.20409@email1.atc.cz> Hi, This time I come with question [finally] :) What means this message? : error CS-0018: Cannot find any symbol writer MS docs wittily skips it... Regards, Martin ______________________________________________________________________________ SB KOMPLET® Informaèní ekonomický systém http://www.sb-komplet.cz …umíme svoji práci! From gonzalo@ximian.com Fri Oct 4 17:25:23 2002 From: gonzalo@ximian.com (Gonzalo Paniagua Javier) Date: 04 Oct 2002 18:25:23 +0200 Subject: [Mono-list] mono bug?: VolumeSeparatorChar (System.IO.Path) In-Reply-To: <3D9DB9E4.000001.18864@email1.atc.cz> References: <3D9DB9E4.000001.18864@email1.atc.cz> Message-ID: <1033748726.699.24.camel@lalo2.micasa> El vie, 04-10-2002 a las 17:55, Martin Aliger escribió: > char c = path [0]; > return (c == DirectorySeparatorChar || > c == AltDirectorySeparatorChar || > (path.Length > 1 && path [1] == VolumeSeparatorChar)); > > and both path.Length>1 and path[1]='/' is true. > > Real problem is, that I do not know what MS guys means by setting VolumeSep to '/'on Unixes (as docs says). It makes no sense to me... What about relative paths as "a/b/c/d.exe" ? Full path could be e.g. "/home/alik/mono/a/b/c/d.exe" and everything is ok... I was about to report fix to this as change VolumeSepChar to '\0' (in runtime) but than read MS docs... Mmm, may be if DirectorySeparatorChar and VolumeSeparator char are the same character we can avoid the last condition in the if. Any objections? > BTW2: in Path.Combine current implementation the condition " > bool b2 = path2 [0] == DirectorySeparatorChar || > path2 [0] == AltDirectorySeparatorChar; > " is always true (checked before with IsPathRooted) You meant false, right? Because if IsPathRooted returns true, path2 is returned. I will remove that one. -Gonzalo From Sebastien Pouliot Sat Oct 5 00:18:13 2002 From: Sebastien Pouliot (Sebastien Pouliot) Date: Fri, 04 Oct 2002 19:18:13 -0400 Subject: [Mono-list] Introduction Message-ID: <002501c26bfc$4fc50dc0$0301a8c0@einstein> Hello everyone, Now that I got my employer's autorization to participate in Mono let me introduce myself - I'm Sébastien Pouliot and I work as security architect for Motus Technologies. As part of my work I'm involved in all kind of security related technologies such as: smart cards, cryptography, PKI and biometry and I've experience implementing many security standards. Back in summer 2001 (at the time the .NET framework beta 2 has just been released), as a project to learn C# and web service, I decided to implement both a XKMS service and client (http://www.w3.org/2001/XKMS/). In order to use commercial web hosting I had to deploy a 100% managed web service - which prevented me from using CryptoAPI to generate the X509 certificates. So I had to roll my own implementation... but that's another story! Anyway this adventure has led me to work with most classes of the System.Security.Cryptography.* namespaces. Ever since I was impressed by C# (which was no surprise since I was a big Delphi fan) but I didn't have much free time until now to play again with the technology. But during that time I found out about Mono and begun following its evolution and frankly I'm quite impressed about all the work that has been done so far. For my part, I intend to help in the System.Security.Cryptography.* and in the Microsoft.WSDK.Security.Cryptography.X509Certificates namespaces. On the bad side this is my first participation in an Open Source project (and never used CVS or Bugzilla), my UN*X skills predates Linux, my home development environment is limited to Windows and (it should be obvious by now) I'm not related to Shakespeare as far as english is concerned. Apart from that I look like a regular geek ;-) Sébastien Pouliot Security Architect, Motus Technologies, http://www.motus.com/ work: spouliot@motus.com home: spouliot@videotron.ca From ccortez@prodigy.net.mx Sat Oct 5 07:45:12 2002 From: ccortez@prodigy.net.mx (Carlos Alberto Cortez) Date: Sat, 05 Oct 2002 01:45:12 -0500 Subject: [Mono-list] Mono Installation HOWTO Message-ID: <1033800316.2125.7.camel@localhost.localdomain> Hello there: Some time ago I've read the Mono Installation HOWTO. And, I was thinking that maybe it could be a great idea to translate it ... so, since I'm a native spanish speaker, I 'd like to translate it ... and, before I start, I 'd like to know if it has been already translated ... Regards, Carlos. From andy@nobugs.org Sat Oct 5 12:13:51 2002 From: andy@nobugs.org (Andrew Birkett) Date: 05 Oct 2002 12:13:51 +0100 Subject: [Mono-list] Introduction In-Reply-To: <002501c26bfc$4fc50dc0$0301a8c0@einstein> References: <002501c26bfc$4fc50dc0$0301a8c0@einstein> Message-ID: <1033816433.25214.19.camel@localhost.localdomain> On Sat, 2002-10-05 at 00:18, Sebastien Pouliot wrote: > For my part, I intend to help in the System.Security.Cryptography.* and in > the Microsoft.WSDK.Security.Cryptography.X509Certificates namespaces. Welcome to mono! :-) There's implementation of DES, MD5, Rijndael, SHA, Base64 and I've just done RC2, although I won't commit it until I've tested it under cygwin on Monday. There's nothing done for TripleDES, DSA or RSA yet, although someone posted a link a month or so ago to a 'largenum' C# library which might be useful. There's some code to get hold of a decent system random number generator, although I don't know if that is wired up at all. It would be nice to factor out code to do the various feedback modes, rather than having seperate version in each block cipher. It would make it a lot faster to implement all of the modes too! Andrew From gonzalo@ximian.com Sat Oct 5 13:08:16 2002 From: gonzalo@ximian.com (Gonzalo Paniagua Javier) Date: 05 Oct 2002 14:08:16 +0200 Subject: [Mono-list] Mono Installation HOWTO In-Reply-To: <1033800316.2125.7.camel@localhost.localdomain> References: <1033800316.2125.7.camel@localhost.localdomain> Message-ID: <1033819697.498.2.camel@lalo2.micasa> El sáb, 05-10-2002 a las 08:45, Carlos Alberto Cortez escribió: > > Hello there: > > Some time ago I've read the Mono Installation HOWTO. And, I was thinking > that maybe it could be a great idea to translate it ... so, since I'm a > native spanish speaker, I 'd like to translate it ... and, before I > start, I 'd like to know if it has been already translated ... Take a look at http://mono.es.gnome.org or ask in #mono-hispano channel on IRC. I think it's already translated. -Gonzalo From rafaelteixeirabr@hotmail.com Sat Oct 5 13:45:38 2002 From: rafaelteixeirabr@hotmail.com (A Rafael D Teixeira) Date: Sat, 05 Oct 2002 09:45:38 -0300 Subject: [Mono-list] Information Message-ID: >From: Carlos Cesario >To: mono-list@ximian.com >I'm trying, with two more friends, to do "monoBR" site using XSP, but we >are in trouble. >We'd like to create a template with the menu/header/footer/etc...we'd like >to use "include", but this feature is not implemented yet, is there any >other way to do this? > >greets > >Carlos Cesario Maybe you can use a custom Web Control, I'm not sure if it currently works, but probably. There are two approachs: The Lazy one: just a kind of "include"r control. The Good one: a series of specialized controls, one for the menu, other for the header part, etc... You can also develop a patch for XSP to implement include... in Portuguese: Vocês podem desenvolver um Web Control customizado. Existem 2 caminhos: O preguiçoso: um controle de "include". O bom: controles especializados, um para o menu, outro para o header, etc. Também vocês podem desenvolver um patch para o XSP, que implemente o "include". Happy Hackings, Um abraço Rafael Teixeira Brazilian Polymath Um Polímata Brasileiro _________________________________________________________________ Chat with friends online, try MSN Messenger: http://messenger.msn.com From crichton@gimp.org Sat Oct 5 16:00:18 2002 From: crichton@gimp.org (Mark Crichton) Date: Sat, 5 Oct 2002 11:00:18 -0400 Subject: [Mono-list] Introduction In-Reply-To: <1033816433.25214.19.camel@localhost.localdomain> References: <002501c26bfc$4fc50dc0$0301a8c0@einstein> <1033816433.25214.19.camel@localhost.localdomain> Message-ID: <20021005150018.GA2493@odo.ecs.umass.edu> --SUOF0GtieIMvvwua Content-Type: text/plain; charset=us-ascii Content-Disposition: inline * Andrew Birkett (andy@nobugs.org) [021005 07:14]: > random number generator, although I don't know if that is wired up at > all. It would be nice to factor out code to do the various feedback The RNG code works on Linux, should work on BSDs, maybe Solaris, and won't work on Win32. I'm still a tad confused by the CryptAPI for windows. If you know how to use it to get strong random numbers, have at it... Mark --SUOF0GtieIMvvwua Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.6 (SunOS) Comment: For info see http://www.gnupg.org iEYEARECAAYFAj2e/oEACgkQOfj2Ja/u/oAcAACeIG025mN1LSilJPgMRzhtgaid 66wAn2UTr/5X0oKxrzzb/DN6hBszA14i =JN73 -----END PGP SIGNATURE----- --SUOF0GtieIMvvwua-- From robhmitchell@hotmail.com Sat Oct 5 14:53:05 2002 From: robhmitchell@hotmail.com (Robert H. Mitchell) Date: Sat, 5 Oct 2002 09:53:05 -0400 Subject: [Mono-list] Mono Questions Message-ID: <000001c26c76$87b2fbf0$0300a8c0@Laptop1> This is a multi-part message in MIME format. ------=_NextPart_000_0001_01C26C55.00A46930 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Hi, I have a few questions about your Mono project that don't seem to be answered in your FAQ or rational pages or are a little confusing. You use the term "Common Language Infrastructure", which is new to me. Does this basically equate to the .NET SDK but for Unix/Linux? You also use the term "Virtual Execution System" does this equate to the "Common Language Runtime"? In your FAQ you have the following: >Question 48: Will I be able to compile a Microsoft VB.NET application and execute the resultant MSIL file under MONO on Linux without converting to C# and recompiling? Once we have a complete VisualBasic runtime, yes. < As I understand it if I right an app. in +VB.NET or C#.NET the resultant IL is very similar. Assuming you can run the compiled C# program using Mono why can't you run the compiled VB program? Are you saying that the C#.NET source code would have to be recompiled under Mono for it to work? Thanks, Rob ------=_NextPart_000_0001_01C26C55.00A46930 Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable

Hi,

 

I have a few questions about your Mono project that = don’t seem to be answered in your FAQ or rational pages or are a little = confusing.

 

You use the term “Common Language = Infrastructure”,  which is new to me.  Does this basically = equate to the .NET SDK but for Unix/Linux?

 

You also use the term “Virtual Execution = System” does this equate to the “Common Language = Runtime”?

 

In your FAQ you have the = following:

>Question 48: Will I be able to compile a = Microsoft VB.NET application and execute the resultant MSIL file under MONO on = Linux without converting to C# and recompiling?

Once we have a complete VisualBasic runtime, yes. <

As I understand it if I right an app. in +VB.NET or = C#.NET the resultant IL is very similar.  Assuming you can run the compiled C# program using Mono why can’t you run = the compiled VB program?  Are = you saying that the C#.NET source code would have to be recompiled under Mono for = it to work?

 

Thanks,

 

Rob

------=_NextPart_000_0001_01C26C55.00A46930-- From groith@tcrz.net Sat Oct 5 16:25:39 2002 From: groith@tcrz.net (Guenther Roith) Date: Sat, 5 Oct 2002 17:25:39 +0200 Subject: [Mono-list] Mono Questions References: <000001c26c76$87b2fbf0$0300a8c0@Laptop1> Message-ID: <000e01c26c83$76b23020$010aa8c0@roithw2k> This is a multi-part message in MIME format. ------=_NextPart_000_000B_01C26C94.39C24DB0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hi! VB.NET generates the same IL, but uses some classes, that are either not = in the class library, or have a different name. It contains typical BASIC classes like Beep. Johannes ----- Original Message -----=20 From: Robert H. Mitchell=20 To: mono-list@ximian.com=20 Sent: Saturday, October 05, 2002 3:53 PM Subject: [Mono-list] Mono Questions Hi, =20 I have a few questions about your Mono project that don't seem to be = answered in your FAQ or rational pages or are a little confusing. =20 You use the term "Common Language Infrastructure", which is new to = me. Does this basically equate to the .NET SDK but for Unix/Linux? =20 You also use the term "Virtual Execution System" does this equate to = the "Common Language Runtime"? =20 In your FAQ you have the following: >Question 48: Will I be able to compile a Microsoft VB.NET application = and execute the resultant MSIL file under MONO on Linux without = converting to C# and recompiling?=20 Once we have a complete VisualBasic runtime, yes. < As I understand it if I right an app. in +VB.NET or C#.NET the = resultant IL is very similar. Assuming you can run the compiled C# = program using Mono why can't you run the compiled VB program? Are you = saying that the C#.NET source code would have to be recompiled under = Mono for it to work? =20 Thanks, =20 Rob ------=_NextPart_000_000B_01C26C94.39C24DB0 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Hi!
 
VB.NET generates the same IL, = but uses some=20 classes, that are either not in the class library, or have a different=20 name.
It contains typical BASIC classes = like=20 Beep.
 
Johannes
----- Original Message -----
From:=20 Robert H. Mitchell
Sent: Saturday, October 05, = 2002 3:53=20 PM
Subject: [Mono-list] Mono = Questions

Hi,

 

I have a few questions = about your=20 Mono project that don=92t seem to be answered in your FAQ or rational = pages or=20 are a little confusing.

 

You use the term = =93Common Language=20 Infrastructure=94,  which is new to = me.  Does this basically equate = to the .NET=20 SDK but for Unix/Linux?

 

You also use the term = =93Virtual=20 Execution System=94 does this equate to the =93Common Language=20 Runtime=94?

 

In your FAQ you have the = following:

>Question=20 48: Will I be = able to=20 compile a Microsoft VB.NET application and execute the resultant MSIL = file=20 under MONO on Linux without converting to C# and recompiling?=20

Once we have = a complete=20 VisualBasic runtime, yes.=20 <

As I understand it if I = right an=20 app. in +VB.NET or C#.NET the resultant IL is very similar.  Assuming you can run the = compiled C#=20 program using Mono why can=92t you run the compiled VB program?  Are you saying that the = C#.NET source=20 code would have to be recompiled under Mono for it to=20 work?

 

Thanks,

 

Rob

------=_NextPart_000_000B_01C26C94.39C24DB0-- From Sebastien Pouliot Sat Oct 5 16:45:18 2002 From: Sebastien Pouliot (Sebastien Pouliot) Date: Sat, 05 Oct 2002 11:45:18 -0400 Subject: [Mono-list] Introduction References: <002501c26bfc$4fc50dc0$0301a8c0@einstein> <1033816433.25214.19.camel@localhost.localdomain> Message-ID: <004601c26c86$349913e0$0301a8c0@einstein> > Welcome to mono! :-) Thanks a lot! > There's implementation of DES, MD5, Rijndael, SHA, Base64 and I've just > done RC2, although I won't commit it until I've tested it under cygwin Most of the encryption algorithms will need some modificaton to work with CryptoConfig (which I posted yesterday but still haven't seen it on the list). I will send you the required modifications (related to the 2 static Create methods). > on Monday. There's nothing done for TripleDES, DSA or RSA yet, although > someone posted a link a month or so ago to a 'largenum' C# library which > might be useful. There's some code to get hold of a decent system > random number generator, although I don't know if that is wired up at > all. It would be nice to factor out code to do the various feedback > modes, rather than having seperate version in each block cipher. It > would make it a lot faster to implement all of the modes too! I was the one posting the link to the BigNum. However I didn't have much news abut the author. I think that Miguel talked to him (or at least tried to). These classes would bea great benefit to Mono. > Andrew Sebastien Pouliot Security Architect, Motus Technologies, http://www.motus.com/ work: spouliot@motus.com home: spouliot@videotron.ca From Sebastien Pouliot Sat Oct 5 16:45:31 2002 From: Sebastien Pouliot (Sebastien Pouliot) Date: Sat, 05 Oct 2002 11:45:31 -0400 Subject: [Mono-list] RNG Message-ID: <004701c26c86$3c740890$0301a8c0@einstein> Hi Mark, > The RNG code works on Linux, should work on BSDs, maybe Solaris, and > won't work on Win32. I'm still a tad confused by the CryptAPI for > windows. If you know how to use it to get strong random numbers, have > at it... I have work many times with CryptoAPI, both low-level (developing a smart card CSP, certificate revocation) and high-level (end-user application) so I should have no problem implementing RNG on top of it. If I remember correctly there are some RNG tests specified in either FIPS 140 or 186 (been some time). They would make great unit tests so I'll find a link to that too. > Mark Sebastien Pouliot Security Architect, Motus Technologies, http://www.motus.com/ work: spouliot@motus.com home: spouliot@videotron.ca From rafaelteixeirabr@hotmail.com Sat Oct 5 19:22:26 2002 From: rafaelteixeirabr@hotmail.com (A Rafael D Teixeira) Date: Sat, 05 Oct 2002 15:22:26 -0300 Subject: Enterprise Services: Was Re: [Mono-list] Security Message-ID: >What about the "enterprise services" like transactions and message queueing >that are available in Win2K? Are there analogs in the open source/Linux >platform. For message queuing I started project MonoQLE, a C# Message Queue Server. (http://codigolivre.org.br/projects/monoqle, sorry only in portuguese, for now). But we can also think of interoperating with J2EE JMS providers. Both cases are just in the beginning, do you want to contribute some of your time and knowledge? Cheers, Rafael Teixeira Brazilian Polymath _________________________________________________________________ MSN Photos is the easiest way to share and print your photos: http://photos.msn.com/support/worldwide.aspx From rafaelteixeirabr@hotmail.com Sat Oct 5 19:40:04 2002 From: rafaelteixeirabr@hotmail.com (A Rafael D Teixeira) Date: Sat, 05 Oct 2002 15:40:04 -0300 Subject: [Mono-list] Mono Questions Message-ID: >You use the term "Common Language Infrastructure", which is new to me. >Does this basically equate to the .NET SDK but for Unix/Linux? The CLI is a big chunk of what comes in .NET SDK, but not all of it. > >Question 48: Will I be able to compile a Microsoft VB.NET application >and execute the resultant MSIL file under MONO on Linux without >converting to C# and recompiling? >Once we have a complete VisualBasic runtime, yes. < >As I understand it if I right an app. in +VB.NET or C#.NET the resultant >IL is very similar. Assuming you can run the compiled C# program using >Mono why can't you run the compiled VB program? Are you saying that the >C#.NET source code would have to be recompiled under Mono for it to >work? C# programs compiled either on MS.NET (csc.exe) or in Linux/Mono (mcs.exe) will run in Mono directly, in binary form. VB.NET programs compiled either on MS.NET (vbc.exe) or in Linux/Mono (mbas.exe) will run in Mono directly, in binary form. BUT ALL THESE PROGRAMS NEED AN ADDITIONAL LIBRARY (Microsoft.VisualBasic.DLL) that we are still developing. That is what the FAQ calls a "VisualBasic runtime". Miguel: Maybe we could clarify that in the FAQ Some think that Microsoft.VisualBasic.DLL only contains support for OLD-STYLE VB.NET code, but that is not true, many usefull features of the language depend, "behind-the-curtains", on code that resides in that DLL. Help in developing that library is welcome. Happy hackings, Rafael Teixeira Brazilian Polymath _________________________________________________________________ MSN Photos is the easiest way to share and print your photos: http://photos.msn.com/support/worldwide.aspx From martin_aliger@email.cz Sat Oct 5 20:47:05 2002 From: martin_aliger@email.cz (Martin Aliger) Date: Sat, 5 Oct 2002 21:47:05 +0200 (CEST) Subject: [Mono-list] mono bug?: VolumeSeparatorChar (System.IO.Path) Message-ID: <3D9F41B9.000001.14123@email1.atc.cz> >> Real problem is, that I do not know what MS guys means by setting VolumeSep >> to '/'on Unixes (as docs says). It makes no sense to me... What about relative >> paths as "a/b/c/d.exe" ? Full path could be e.g. "/home/alik/mono/a/b/c/d.exe" and >>everything is ok... I was about to report fix to this as change VolumeSepChar >> to '\0' (in runtime) but than read MS docs... > >Mmm, may be if DirectorySeparatorChar and VolumeSeparator char are the >same character we can avoid the last condition in the if. Any >objections? This could solve situation. At least for now. But moving IsPathRooted function into runtime is cleaner IMO. I think that Macs are using drives as well as windows but drive is not one letter (not sure about that!). So test for Mac PathRooted should be different (e.g. "cdrom:/backup/"). Or maybe another platform is using similar scheme... We could not say now (runtime could - it is platform dependant) >> BTW2: in Path.Combine current implementation the condition " >> bool b2 = path2 [0] == DirectorySeparatorChar || >> path2 [0] == AltDirectorySeparatorChar; >> " is always true (checked before with IsPathRooted) > >You meant false, right? Because if IsPathRooted returns true, path2 is >returned. I will remove that one. Yeah - false, of course. Sorry about that :-) Martin ______________________________________________________________________________ SB KOMPLET® Informaèní ekonomický systém http://www.sb-komplet.cz …umíme svoji práci! From Sebastien Pouliot Sat Oct 5 22:02:15 2002 From: Sebastien Pouliot (Sebastien Pouliot) Date: Sat, 05 Oct 2002 17:02:15 -0400 Subject: [Mono-list] CryptoConfig and bug #30257 (repost) Message-ID: <006801c26cb2$7dbf4220$0301a8c0@einstein> This is a multi-part message in MIME format. --Boundary_(ID_qV/239Up6QeZ4r7Z7Sp/Qg) Content-type: text/plain; charset=iso-8859-1 Content-transfer-encoding: 8BIT Note: This is a repost because a. The mail didn't seem to reach the list; b. There was a file missing to run the test (AllTest.cs.diff) --- While doing the X509Certificate class I found out that the CryptoConfig class was missing. This is an important cryptographic class which role seems little understood ( http://www.codeproject.com/dotnet/encryption_decryption.asp?df=100&forumid=3 466&select=296127#xx296127xx ). This is probably due to the really short (one sentence), lame and sometimes wrong class documentation. So here is the CryptoConfig class with it's NUnit test class. This should make the GotDotNet "Hash" sample works normally (bug #30257 - http://bugzilla.ximian.com/show_bug.cgi?id=30257 ) - at least it works under Windows (both with Mono and MS). Please note that the class isn't 100% complete because, under MS .NET framework, it use the "machine.config" file to change default algorithm implementation - and I couldn't find one in mono. Is there (yet) a "machine.config" file in mono ? If not, is there a similar .config file, on which I can base myself to complete CryptoConfig ? Note: Installing the WSDK (Web Services Development Kit) changes the "machine.config" file. After the update the "SHA1" and "System.Security.Cryptography.SHA1" maps to "SHA1Managed" class (instead of "SHA1CryptoServiceProvider"). However both "SHA" and "System.Security.Cryptography.HashAlgorithm" still maps to "SHA1CryptoServiceProvider". What this means is that the unit test will FAIL when run under MS framework if WSDK is installed ! Sébastien Pouliot Security Architect, Motus Technologies, http://www.motus.com/ work: spouliot@motus.com home: spouliot@videotron.ca --Boundary_(ID_qV/239Up6QeZ4r7Z7Sp/Qg) Content-type: application/octet-stream; name=AllTests.cs.diff Content-transfer-encoding: quoted-printable Content-disposition: attachment; filename=AllTests.cs.diff 2c2 < // TestSuite.System.Security.Cryptography.AllTests.cs --- > // TestSuite.System.Security.Cryptography.AllCryptoTests.cs=0D 4c4 < // Authors: --- > // Author:=0D 6,8d5 < // Sebastien Pouliot (spouliot@motus.com) < // < // Portions (C) 2002 Motus Technologies Inc. (http://www.motus.com) 15,44c12,16 <=20 < /// < /// Combines all available crypto unit tests into one test suite. < /// < public class AllTests : TestCase { < public AllTests (string name) : base (name) {} <=20 < // because most crypto stuff works with byte[] buffers < static public void AssertEquals (string msg, byte[] array1, byte[] = array2) < { < if ((array1 =3D=3D null) && (array2 =3D=3D null)) < return; < if (array1 =3D=3D null) < Fail (msg + " -> First array is NULL"); < if (array2 =3D=3D null) < Fail (msg + " -> Second array is NULL"); <=20 < bool a =3D (array1.Length =3D=3D array2.Length); < if (a) { < for (int i =3D 0; i < array1.Length; i++) { < if (array1 [i] !=3D array2 [i]) { < a =3D false; < break; < } < } < } < msg +=3D " -> Expected " + BitConverter.ToString (array1, 0); < msg +=3D " is different than " + BitConverter.ToString (array2, 0); < Assert (msg, a); < } --- > /// =0D > /// Combines all available crypto unit tests into one test = suite.=0D > /// =0D > public class AllTests : TestCase {=0D > public AllTests(string name) : base(name) {}=0D 48c20,21 < get { --- > get =0D > {=0D 54c27,29 < suite.AddTest (CryptoConfigTest.Suite); --- > suite.AddTest (RijndaelManagedTest.Suite);=0D > suite.AddTest (MD5Test.Suite);=0D > suite.AddTest (RC2Test.Suite); 58,59c33 < } <=20 --- > }=0D --Boundary_(ID_qV/239Up6QeZ4r7Z7Sp/Qg) Content-type: text/plain; name=CryptoConfigTest.cs Content-transfer-encoding: 7BIT Content-disposition: attachment; filename=CryptoConfigTest.cs // // CryptoConfigTest.cs - NUnit Test Cases for CryptoConfig // // Author: // Sebastien Pouliot (spouliot@motus.com) // // (C) 2002 Motus Technologies Inc. (http://www.motus.com) // using NUnit.Framework; using System; using System.Security.Cryptography; namespace MonoTests.System.Security.Cryptography { public class CryptoConfigTest : TestCase { public CryptoConfigTest () : base ("System.Security.Cryptography.CryptoConfig testsuite") {} public CryptoConfigTest (string name) : base (name) {} protected override void SetUp () {} protected override void TearDown () {} public static ITest Suite { get { return new TestSuite (typeof (CryptoConfigTest)); } } public void AssertEquals (string msg, byte[] array1, byte[] array2) { AllTests.AssertEquals (msg, array1, array2); } void CreateFromName (string name, string objectname) { object o = CryptoConfig.CreateFromName (name); AssertEquals (name, o.ToString(), objectname); } // validate that CryptoConfig create the exact same implementation between mono and MS public void TestCreateFromName () { try { object o = CryptoConfig.CreateFromName (null); } catch (ArgumentNullException) { // do nothing, this is what we expect } catch (Exception e) { Fail ("ArgumentNullException not thrown: " + e.ToString()); } CreateFromName ("SHA", "System.Security.Cryptography.SHA1CryptoServiceProvider"); // FIXME: We need to support the machine.config file to get exact same results // with the MS .NET Framework CreateFromName ("SHA1", "System.Security.Cryptography.SHA1CryptoServiceProvider"); CreateFromName( "System.Security.Cryptography.SHA1", "System.Security.Cryptography.SHA1CryptoServiceProvider"); // after installing the WSDK - changes to the machine.config file (not documented) // CreateFromName ("SHA1", "System.Security.Cryptography.SHA1Managed"); // CreateFromName ("System.Security.Cryptography.SHA1", "System.Security.Cryptography.SHA1Managed"); CreateFromName ("System.Security.Cryptography.HashAlgorithm", "System.Security.Cryptography.SHA1CryptoServiceProvider"); CreateFromName ("MD5", "System.Security.Cryptography.MD5CryptoServiceProvider"); CreateFromName ("System.Security.Cryptography.MD5", "System.Security.Cryptography.MD5CryptoServiceProvider"); CreateFromName ("SHA256", "System.Security.Cryptography.SHA256Managed"); CreateFromName ("SHA-256", "System.Security.Cryptography.SHA256Managed"); CreateFromName ("System.Security.Cryptography.SHA256", "System.Security.Cryptography.SHA256Managed"); CreateFromName ("SHA384", "System.Security.Cryptography.SHA384Managed"); CreateFromName ("SHA-384", "System.Security.Cryptography.SHA384Managed"); CreateFromName ("System.Security.Cryptography.SHA384", "System.Security.Cryptography.SHA384Managed"); CreateFromName ("SHA512", "System.Security.Cryptography.SHA512Managed"); CreateFromName ("SHA-512", "System.Security.Cryptography.SHA512Managed"); CreateFromName ("System.Security.Cryptography.SHA512", "System.Security.Cryptography.SHA512Managed"); CreateFromName ("RSA", "System.Security.Cryptography.RSACryptoServiceProvider"); CreateFromName ("System.Security.Cryptography.RSA", "System.Security.Cryptography.RSACryptoServiceProvider"); CreateFromName ("System.Security.Cryptography.AsymmetricAlgorithm", "System.Security.Cryptography.RSACryptoServiceProvider"); CreateFromName ("DSA", "System.Security.Cryptography.DSACryptoServiceProvider"); CreateFromName ("System.Security.Cryptography.DSA", "System.Security.Cryptography.DSACryptoServiceProvider"); CreateFromName ("DES", "System.Security.Cryptography.DESCryptoServiceProvider"); CreateFromName ("System.Security.Cryptography.DES", "System.Security.Cryptography.DESCryptoServiceProvider"); CreateFromName ("3DES", "System.Security.Cryptography.TripleDESCryptoServiceProvider"); CreateFromName ("TripleDES", "System.Security.Cryptography.TripleDESCryptoServiceProvider"); CreateFromName ("Triple DES", "System.Security.Cryptography.TripleDESCryptoServiceProvider"); CreateFromName ("System.Security.Cryptography.TripleDES", "System.Security.Cryptography.TripleDESCryptoServiceProvider"); // LAMESPEC SymmetricAlgorithm documented as TripleDESCryptoServiceProvider CreateFromName ("System.Security.Cryptography.SymmetricAlgorithm", "System.Security.Cryptography.RijndaelManaged"); CreateFromName ("RC2", "System.Security.Cryptography.RC2CryptoServiceProvider"); CreateFromName ("System.Security.Cryptography.RC2", "System.Security.Cryptography.RC2CryptoServiceProvider"); CreateFromName ("Rijndael", "System.Security.Cryptography.RijndaelManaged"); CreateFromName ("System.Security.Cryptography.Rijndael", "System.Security.Cryptography.RijndaelManaged"); // LAMESPEC Undocumented Names in CryptoConfig CreateFromName ("RandomNumberGenerator", "System.Security.Cryptography.RNGCryptoServiceProvider"); CreateFromName ("System.Security.Cryptography.RandomNumberGenerator", "System.Security.Cryptography.RNGCryptoServiceProvider"); CreateFromName ("System.Security.Cryptography.KeyedHashAlgorithm", "System.Security.Cryptography.HMACSHA1"); CreateFromName ("HMACSHA1", "System.Security.Cryptography.HMACSHA1"); CreateFromName ("System.Security.Cryptography.HMACSHA1", "System.Security.Cryptography.HMACSHA1"); CreateFromName ("MACTripleDES", "System.Security.Cryptography.MACTripleDES"); CreateFromName ("System.Security.Cryptography.MACTripleDES", "System.Security.Cryptography.MACTripleDES"); // non existing algo should return null (without exception) AssertNull ("NonExistingAlgorithm", CryptoConfig.CreateFromName("NonExistingAlgorithm")); } // Tests created using "A Layer Man Guide to ASN.1" from RSA, page 19-20 // Need to find an OID ? goto http://www.alvestrand.no/~hta/objectid/top.html static byte[] oidETSI = { 0x06, 0x03, 0x04, 0x00, 0x00 }; static byte[] oidSHA1 = { 0x06, 0x05, 0x2B, 0x0E, 0x03, 0x02, 0x1A }; static byte[] oidASN1CharacterModule = { 0x06, 0x04, 0x51, 0x00, 0x00, 0x00 }; static byte[] oidmd5withRSAEncryption = { 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x04 }; // LAMESPEC NullReferenceException is thrown (not ArgumentNullException) if parameter is NULL public void TestEncodeOID () { try { byte[] o = CryptoConfig.EncodeOID (null); } catch (NullReferenceException) { // do nothing, this is what we expect } catch (Exception e) { Fail ("NullReferenceException not thrown: " + e.ToString()); } // OID starts with 0, 1 or 2 AssertEquals ("OID starting with 0.", oidETSI, CryptoConfig.EncodeOID ("0.4.0.0")); AssertEquals ("OID starting with 1.", oidSHA1, CryptoConfig.EncodeOID ("1.3.14.3.2.26")); AssertEquals ("OID starting with 2.", oidASN1CharacterModule, CryptoConfig.EncodeOID ("2.1.0.0.0")); // OID numbers can span multiple bytes AssertEquals ("OID with numbers spanning multiple bytes", oidmd5withRSAEncryption, CryptoConfig.EncodeOID ("1.2.840.113549.1.1.4")); // "ms"-invalid OID - greater than 127 bytes (length encoding) // OID longer than 127 bytes (so length must be encoded on multiple bytes) // LAMESPEC: OID greater that 0x7F (127) bytes aren't supported by the MS Framework string baseOID = "1.3.6.1.4.1.11071.0."; string lastPart = "1111111111"; // must fit in int32 for (int i = 1; i < 30; i++) { baseOID += lastPart + "."; } baseOID += "0"; try { byte[] tooLongOID = CryptoConfig.EncodeOID (baseOID); } catch (CryptographicUnexpectedOperationException) { // do nothing, this is what we expect } catch (Exception e) { Fail ("CryptographicUnexpectedOperationException not thrown: " + e.ToString()); } // "ms"-invalid OID - where a number of the OID > Int32 // LAMESPEC: OID with numbers > Int32 aren't supported by the MS BCL try { byte[] tooLongOID = CryptoConfig.EncodeOID ("1.1.4294967295"); } catch (OverflowException) { // do nothing, this is what we expect } catch (Exception e) { Fail( "OverflowException not thrown: " + e.ToString ()); } // invalid OID - must start with 0, 1 or 2 // however it works with MS BCL byte[] oid3 = CryptoConfig.EncodeOID ("3.0"); byte[] res3 = { 0x06, 0x01, 0x78 }; AssertEquals ("OID: 3.0", res3, oid3); // invalid OID - must have at least 2 parts (according to X.208) try { byte[] tooShortOID = CryptoConfig.EncodeOID ("0"); } catch (CryptographicUnexpectedOperationException) { // do nothing, this is what we expect } catch (Exception e) { Fail("CryptographicUnexpectedOperationException not thrown: " + e.ToString()); } // invalid OID - second value < 40 for 0. and 1. (modulo 40) // however it works with MS BCL byte[] tooBigSecondPartOID = CryptoConfig.EncodeOID ("0.40"); byte[] tooBigSecondPartRes = { 0x06, 0x01, 0x28 }; AssertEquals ("OID: 0.40", tooBigSecondPartRes, tooBigSecondPartOID); } private void MapNameToOID (string name, string oid) { AssertEquals ("oid(" + name + ")", oid, CryptoConfig.MapNameToOID (name)); } // LAMESPEC doesn't support all names defined in CryptoConfig // non supported names (in MSFW) are commented or null-ed public void TestMapNameToOID() { try { CryptoConfig.MapNameToOID (null); } catch (ArgumentNullException) { // do nothing, this is what we expect } catch (Exception e) { Fail( "ArgumentNullException not thrown: " + e.ToString ()); } // MapNameToOID ("SHA", "1.3.14.3.2.26"); MapNameToOID ("SHA1", "1.3.14.3.2.26"); MapNameToOID ("System.Security.Cryptography.SHA1", "1.3.14.3.2.26"); // MapNameToOID ("System.Security.Cryptography.HashAlgorithm", "1.3.14.3.2.26"); MapNameToOID ("MD5", "1.2.840.113549.2.5"); MapNameToOID ("System.Security.Cryptography.MD5", "1.2.840.113549.2.5"); MapNameToOID ("SHA256", "2.16.840.1.101.3.4.1"); // MapNameToOID ("SHA-256", "2.16.840.1.101.3.4.1"); MapNameToOID ("System.Security.Cryptography.SHA256", "2.16.840.1.101.3.4.1"); MapNameToOID ("SHA384", "2.16.840.1.101.3.4.2"); // MapNameToOID ("SHA-384", "2.16.840.1.101.3.4.2"); MapNameToOID ("System.Security.Cryptography.SHA384", "2.16.840.1.101.3.4.2"); MapNameToOID ("SHA512", "2.16.840.1.101.3.4.3"); // MapNameToOID ("SHA-512", "2.16.840.1.101.3.4.3"); MapNameToOID ("System.Security.Cryptography.SHA512", "2.16.840.1.101.3.4.3"); // no OID defined ? MapNameToOID ("RSA", null); MapNameToOID ("System.Security.Cryptography.RSA", null); MapNameToOID ("System.Security.Cryptography.AsymmetricAlgorithm", null); MapNameToOID ("DSA", null); MapNameToOID ("System.Security.Cryptography.DSA", null); MapNameToOID ("DES", null); MapNameToOID ("System.Security.Cryptography.DES", null); MapNameToOID ("3DES", null); MapNameToOID ("TripleDES", null); MapNameToOID ("Triple DES", null); MapNameToOID ("System.Security.Cryptography.TripleDES", null); MapNameToOID ("RC2", null); MapNameToOID ("System.Security.Cryptography.RC2", null); MapNameToOID ("Rijndael", null); MapNameToOID ("System.Security.Cryptography.Rijndael", null); MapNameToOID ("System.Security.Cryptography.SymmetricAlgorithm", null); // LAMESPEC Undocumented Names in CryptoConfig MapNameToOID ("RandomNumberGenerator", null); MapNameToOID ("System.Security.Cryptography.RandomNumberGenerator", null); MapNameToOID ("System.Security.Cryptography.KeyedHashAlgorithm", null); MapNameToOID ("HMACSHA1", null); MapNameToOID ("System.Security.Cryptography.HMACSHA1", null); MapNameToOID ("MACTripleDES", null); MapNameToOID ("System.Security.Cryptography.MACTripleDES", null); // non existing algo should return null (without exception) MapNameToOID ("NonExistingAlgorithm", null); } public void TestToString() { // under normal circumstance there are no need to create a CryptoConfig object // because all interesting stuff are in static methods CryptoConfig cc = new CryptoConfig (); AssertEquals ("System.Security.Cryptography.CryptoConfig", cc.ToString ()); } } } --Boundary_(ID_qV/239Up6QeZ4r7Z7Sp/Qg) Content-type: text/plain; name=CryptoConfig.cs Content-transfer-encoding: 7BIT Content-disposition: attachment; filename=CryptoConfig.cs // // CryptoConfig.cs: Handles cryptographic implementations and OIDs. // // Author: // Sebastien Pouliot (spouliot@motus.com) // // (C) 2002 Motus Technologies Inc. (http://www.motus.com) // using System; using System.Collections; using System.Reflection; namespace System.Security.Cryptography { public class CryptoConfig { static private Hashtable algorithms; static private Hashtable oid; private const string defaultNamespace = "System.Security.Cryptography."; private const string defaultSHA1 = defaultNamespace + "SHA1CryptoServiceProvider"; private const string defaultMD5 = defaultNamespace + "MD5CryptoServiceProvider"; private const string defaultSHA256 = defaultNamespace + "SHA256Managed"; private const string defaultSHA384 = defaultNamespace + "SHA384Managed"; private const string defaultSHA512 = defaultNamespace + "SHA512Managed"; private const string defaultRSA = defaultNamespace + "RSACryptoServiceProvider"; private const string defaultDSA = defaultNamespace + "DSACryptoServiceProvider"; private const string defaultDES = defaultNamespace + "DESCryptoServiceProvider"; private const string default3DES = defaultNamespace + "TripleDESCryptoServiceProvider"; private const string defaultRC2 = defaultNamespace + "RC2CryptoServiceProvider"; private const string defaultAES = defaultNamespace + "RijndaelManaged"; // LAMESPEC: undocumented names in CryptoConfig private const string defaultRNG = defaultNamespace + "RNGCryptoServiceProvider"; private const string defaultHMAC = defaultNamespace + "HMACSHA1"; private const string defaultMAC3DES = defaultNamespace + "MACTripleDES"; // Oddly OID seems only available for hash algorithms private const string oidSHA1 = "1.3.14.3.2.26"; private const string oidMD5 = "1.2.840.113549.2.5"; private const string oidSHA256 = "2.16.840.1.101.3.4.1"; private const string oidSHA384 = "2.16.840.1.101.3.4.2"; private const string oidSHA512 = "2.16.840.1.101.3.4.3"; private const string nameSHA1a = "SHA"; private const string nameSHA1b = "SHA1"; private const string nameSHA1c = "System.Security.Cryptography.SHA1"; private const string nameSHA1d = "System.Security.Cryptography.HashAlgorithm"; private const string nameMD5a = "MD5"; private const string nameMD5b = "System.Security.Cryptography.MD5"; private const string nameSHA256a = "SHA256"; private const string nameSHA256b = "SHA-256"; private const string nameSHA256c = "System.Security.Cryptography.SHA256"; private const string nameSHA384a = "SHA384"; private const string nameSHA384b = "SHA-384"; private const string nameSHA384c = "System.Security.Cryptography.SHA384"; private const string nameSHA512a = "SHA512"; private const string nameSHA512b = "SHA-512"; private const string nameSHA512c = "System.Security.Cryptography.SHA512"; private const string nameRSAa = "RSA"; private const string nameRSAb = "System.Security.Cryptography.RSA"; private const string nameRSAc = "System.Security.Cryptography.AsymmetricAlgorithm"; private const string nameDSAa = "DSA"; private const string nameDSAb = "System.Security.Cryptography.DSA"; private const string nameDESa = "DES"; private const string nameDESb = "System.Security.Cryptography.DES"; private const string name3DESa = "3DES"; private const string name3DESb = "TripleDES"; private const string name3DESc = "Triple DES"; private const string name3DESd = "System.Security.Cryptography.TripleDES"; private const string nameRC2a = "RC2"; private const string nameRC2b = "System.Security.Cryptography.RC2"; private const string nameAESa = "Rijndael"; private const string nameAESb = "System.Security.Cryptography.Rijndael"; private const string nameAESc = "System.Security.Cryptography.SymmetricAlgorithm"; // LAMESPEC: undocumented names in CryptoConfig private const string nameRNGa = "RandomNumberGenerator"; private const string nameRNGb = "System.Security.Cryptography.RandomNumberGenerator"; private const string nameKeyHasha = "System.Security.Cryptography.KeyedHashAlgorithm"; private const string nameHMACa = "HMACSHA1"; private const string nameHMACb = "System.Security.Cryptography.HMACSHA1"; private const string nameMAC3DESa = "MACTripleDES"; private const string nameMAC3DESb = "System.Security.Cryptography.MACTripleDES"; // ??? must we read from the machine.config each time or just at startup ??? [MonoTODO ("support machine.config")] static CryptoConfig() { algorithms = new Hashtable (); // see list @ http://msdn.microsoft.com/library/en-us/cpref/html/ // frlrfSystemSecurityCryptographyCryptoConfigClassTopic.asp algorithms.Add (nameSHA1a, defaultSHA1); algorithms.Add (nameSHA1b, defaultSHA1); algorithms.Add (nameSHA1c, defaultSHA1); algorithms.Add (nameSHA1d, defaultSHA1); algorithms.Add (nameMD5a, defaultMD5); algorithms.Add (nameMD5b, defaultMD5); algorithms.Add (nameSHA256a, defaultSHA256); algorithms.Add (nameSHA256b, defaultSHA256); algorithms.Add (nameSHA256c, defaultSHA256); algorithms.Add (nameSHA384a, defaultSHA384); algorithms.Add (nameSHA384b, defaultSHA384); algorithms.Add (nameSHA384c, defaultSHA384); algorithms.Add (nameSHA512a, defaultSHA512); algorithms.Add (nameSHA512b, defaultSHA512); algorithms.Add (nameSHA512c, defaultSHA512); algorithms.Add (nameRSAa, defaultRSA); algorithms.Add (nameRSAb, defaultRSA); algorithms.Add (nameRSAc, defaultRSA); algorithms.Add (nameDSAa, defaultDSA); algorithms.Add (nameDSAb, defaultDSA); algorithms.Add (nameDESa, defaultDES); algorithms.Add (nameDESb, defaultDES); algorithms.Add (name3DESa, default3DES); algorithms.Add (name3DESb, default3DES); algorithms.Add (name3DESc, default3DES); algorithms.Add (name3DESd, default3DES); algorithms.Add (nameRC2a, defaultRC2); algorithms.Add (nameRC2b, defaultRC2); algorithms.Add (nameAESa, defaultAES); algorithms.Add (nameAESb, defaultAES); // LAMESPEC SymmetricAlgorithm documented as TripleDESCryptoServiceProvider algorithms.Add (nameAESc, defaultAES); // LAMESPEC These names aren't documented but (hint) the classes also have // static Create methods. So logically they should (and are) here. algorithms.Add (nameRNGa, defaultRNG); algorithms.Add (nameRNGb, defaultRNG); algorithms.Add (nameKeyHasha, defaultHMAC); algorithms.Add (nameHMACa, defaultHMAC); algorithms.Add (nameHMACb, defaultHMAC); algorithms.Add (nameMAC3DESa, defaultMAC3DES); algorithms.Add (nameMAC3DESb, defaultMAC3DES); oid = new Hashtable (); // comments here are to match with MS implementation (but not with doc) // LAMESPEC: only HashAlgorithm seems to have their OID included // oid.Add (nameSHA1a, oidSHA1); oid.Add (nameSHA1b, oidSHA1); oid.Add (nameSHA1c, oidSHA1); // oid.Add (nameSHA1d, oidSHA1); oid.Add (nameMD5a, oidMD5); oid.Add (nameMD5b, oidMD5); oid.Add (nameSHA256a, oidSHA256); // oid.Add (nameSHA256b, oidSHA256); oid.Add (nameSHA256c, oidSHA256); oid.Add (nameSHA384a, oidSHA384); // oid.Add (nameSHA384b, oidSHA384); oid.Add (nameSHA384c, oidSHA384); oid.Add (nameSHA512a, oidSHA512); // oid.Add (nameSHA512b, oidSHA512); oid.Add (nameSHA512c, oidSHA512); } public static object CreateFromName (string name) { return CreateFromName (name, null); } public static object CreateFromName (string name, object[] args) { if (name == null) throw new ArgumentNullException (); try { string algo = (string)algorithms [name]; Type algoClass = Type.GetType (algo); // call the constructor for the type return Activator.CreateInstance (algoClass, args); } catch { return null; } } // encode (7bits array) number greater than 127 private static byte[] EncodeLongNumber (long x) { // for MS BCL compatibility // comment next two lines to remove restriction if ((x > Int32.MaxValue) || (x < Int32.MinValue)) throw new OverflowException("part of OID doesn't fit in Int32"); long y = x; // number of bytes required to encode this number int n = 1; while (y > 0x7F) { y = y >> 7; n++; } byte[] num = new byte [n]; // encode all bytes for (int i = 0; i < n; i++) { y = x >> (7 * i); y = y & 0x7F; if (i != 0) y += 0x80; num[n-i-1] = Convert.ToByte (y); } return num; } public static byte[] EncodeOID (string str) { char[] delim = { '.' }; string[] parts = str.Split (delim); // according to X.208 n is always at least 2 if (parts.Length < 2) throw new CryptographicUnexpectedOperationException (); // we're sure that the encoded OID is shorter than its string representation byte[] oid = new byte [str.Length]; // now encoding value try { byte part0 = Convert.ToByte (parts [0]); // OID[0] > 2 is invalid but "supported" in MS BCL // uncomment next line to trap this error // if (part0 > 2) throw new CryptographicUnexpectedOperationException (); byte part1 = Convert.ToByte (parts [1]); // OID[1] >= 40 is illegal for OID[0] < 2 because of the % 40 // however the syntax is "supported" in MS BCL // uncomment next 2 lines to trap this error //if ((part0 < 2) && (part1 >= 40)) // throw new CryptographicUnexpectedOperationException (); oid[2] = Convert.ToByte (part0 * 40 + part1); } catch { throw new CryptographicUnexpectedOperationException (); } int j = 3; for (int i = 2; i < parts.Length; i++) { long x = Convert.ToInt64( parts [i]); if (x > 0x7F) { byte[] num = EncodeLongNumber (x); Array.Copy(num, 0, oid, j, num.Length); j += num.Length; } else oid[j++] = Convert.ToByte (x); } int k = 2; // copy the exact number of byte required byte[] oid2 = new byte [j]; oid2[0] = 0x06; // always - this tag means OID // Length (of value) if (j > 0x7F) { // for compatibility with MS BCL throw new CryptographicUnexpectedOperationException ("OID > 127 bytes"); // comment exception and uncomment next 3 lines to remove restriction //byte[] num = EncodeLongNumber (j); //Array.Copy (num, 0, oid, j, num.Length); //k = num.Length + 1; } else oid2 [1] = Convert.ToByte (j - 2); System.Array.Copy (oid, k, oid2, k, j - k); return oid2; } public static string MapNameToOID (string name) { if (name == null) throw new ArgumentNullException (); return (string)oid [name]; } } } --Boundary_(ID_qV/239Up6QeZ4r7Z7Sp/Qg)-- From Sebastien Pouliot Sat Oct 5 22:38:18 2002 From: Sebastien Pouliot (Sebastien Pouliot) Date: Sat, 05 Oct 2002 17:38:18 -0400 Subject: [Mono-list] RNG References: <004701c26c86$3c740890$0301a8c0@einstein> Message-ID: <006e01c26cb7$c3f08510$0301a8c0@einstein> The tests for RNG are described in FIPS PUB 140-2 from page 33 (section 4.9 Self-Tests). These are self-test that a FIPS 140 complant device (hardware or software) must (at least for Security Level 3+) pass on each startup (and on-demand for Security Level 4). It includes: a. The monobit test; b. The poker test; c. The runs test; and d. The long runs test, runned on a sample of 20,000 bits. Link: http://csrc.nist.gov/publications/fips/fips140-2/fips1402.pdf Sebastien Pouliot Security Architect, Motus Technologies, http://www.motus.com/ work: spouliot@motus.com home: spouliot@videotron.ca ----- Original Message ----- From: "Sebastien Pouliot" To: "mono-list" Cc: "Mark Crichton" Sent: Saturday, October 05, 2002 11:45 AM Subject: [Mono-list] RNG > Hi Mark, > > > The RNG code works on Linux, should work on BSDs, maybe Solaris, and > > won't work on Win32. I'm still a tad confused by the CryptAPI for > > windows. If you know how to use it to get strong random numbers, have > > at it... > > I have work many times with CryptoAPI, both low-level (developing a smart > card CSP, certificate revocation) and high-level (end-user application) so I > should have no problem implementing RNG on top of it. > > If I remember correctly there are some RNG tests specified in either FIPS > 140 or 186 (been some time). They would make great unit tests so I'll find a > link to that too. > > > Mark > > Sebastien Pouliot > Security Architect, Motus Technologies, http://www.motus.com/ > work: spouliot@motus.com > home: spouliot@videotron.ca From gonzalo@ximian.com Sun Oct 6 01:15:40 2002 From: gonzalo@ximian.com (Gonzalo Paniagua Javier) Date: 06 Oct 2002 02:15:40 +0200 Subject: [Mono-list] CryptoConfig and bug #30257 (repost) In-Reply-To: <006801c26cb2$7dbf4220$0301a8c0@einstein> References: <006801c26cb2$7dbf4220$0301a8c0@einstein> Message-ID: <1033863342.506.1.camel@lalo2.micasa> El sáb, 05-10-2002 a las 23:02, Sebastien Pouliot escribió: > Please note that the class isn't 100% complete because, under MS .NET > framework, it use the "machine.config" file to change default algorithm > implementation - and I couldn't find one in mono. Is there (yet) a > "machine.config" file in mono ? I'm working on it. Will be on CVS soon (< 24h). -Gonzalo From Sebastien Pouliot Sun Oct 6 03:11:51 2002 From: Sebastien Pouliot (Sebastien Pouliot) Date: Sat, 05 Oct 2002 22:11:51 -0400 Subject: [Mono-list] RNG, Cryptography and Philosophy References: <002501c26bfc$4fc50dc0$0301a8c0@einstein> <1033816433.25214.19.camel@localhost.localdomain> <20021005150018.GA2493@odo.ecs.umass.edu> Message-ID: <009c01c26cdf$02686ca0$0301a8c0@einstein> > The RNG code works on Linux, should work on BSDs, maybe Solaris, and > won't work on Win32. Question 1: Where the code for the RNG ? The source of both RandomNumberGenerator.cs and RNGCryptoServiceProvider doesn't return anything. Are the random function hidden somewhere in the runtime (an not yet called by the class library) ? > I'm still a tad confused by the CryptAPI for > windows. If you know how to use it to get strong random numbers, have > at it... I've done a quick helper class for CryptoAPI and I can generate chaotic random at will ;-). However this is Windows-specific code (as it calls advapi32.dll to access CryptoAPI). Question 2: How should this platform specific code be integrated in Mono ? The helper class (CryptoAPIHelper.cs) and the updated RNGCryptoServiceProvider.cs will ONLY work on Windows. I don't even have tried it with Mono (on Windows) - but I will before committing anything on the list. Note: There's no rush to make a final decision on this as the helper class will need to be updated to be used for other CryptoServiceProvider (like hash, symmetric and asymmetric algorithms). Doing this I realized that I was about to do something "unconventional" (for a lack of a better word) in the System.Security.Cryptography namespace. I was about to limit a class to a specific platform - something that the MS framework has, kind of, anticiped. Right now there seems to be a little confusion in the class library about Managed and CryptoServiceProvider. Mono seems to duplicate the binary classes present in MS Framework. This is a good thing for compatibility but by doing so we are breaking the philosophy about Managed and CryptoServiceProvider. MS philosophy is (or, from thousand miles east, at least seems to be): - Managed are classes implemented using 100% managed code (as all Mono classes seems t be right now - at least before today); - CryptoServiceProvider are classes that link to an external source for cryptography (ex: HSM, smartcards or other software library like CryptoAPI). IF (and this is an important if) we follow this philosophy this means that all current classes (which are all 100% managed classes - and I'm really happy about this) should all be named Managed. The CryptoConfig can then be modified to return the managed classes as default implementation (so every "good behavied" application won't see any difference). The problem is that many current applications (the "un-behavied" ones - which, by my count, looks like 98%) are directly binding to CryptoServiceProvider classes (bypassing the CryptoConfig class). In order to maintain compatibility with these applications (IMHO compatibility is MUCH more important for Mono than philosophy) we should: a. On Windows platform: - implement all *CryptoServiceProvider using CryptoAPI. This is REALLY important for RSA/DSA classes because they store their private key in CAPI containers (meaning that compatibility will required these classes to use CryptoAPI). b. On Linux (and other platforms): - create stubs for every CryptoServiceProvider classes and map them to the associated Managed. This solution is to ensure compatibility with software using CryptoServiceProvider classes directly. - later we could provide templates to implement external cryptographic algorithms. I've experience using PKCS#11 devices and libraries. So I could develop a PKCS#11 template. My only problem is that, right now, I dont have any PKCS#11 device to test such a template :-( The result of this "BIG IF" would be that Mono would have more cryptographic class than MS (but no more algorithms - unless we want so). However this wouldn't affect compatibility because: 1. All CryptoServiceProvider would be available (linked to *Managed) for existing compiled assemblies. 2. Normally "good" software (< 2% but, hopefully, improving) should use CryptoConfig (or an algorithm base class) to locate an algorithm - which would return the default implementation (*CryptoServiceProvider, *Managed). This way both compatibility and philosophy are preserved. ;-) Question 3: Any thoughts about this ? > Mark Sebastien Pouliot Security Architect, Motus Technologies, http://www.motus.com/ work: spouliot@motus.com home: spouliot@videotron.ca From andy@nobugs.org Sun Oct 6 12:13:48 2002 From: andy@nobugs.org (Andrew Birkett) Date: 06 Oct 2002 12:13:48 +0100 Subject: [Mono-list] RNG, Cryptography and Philosophy In-Reply-To: <009c01c26cdf$02686ca0$0301a8c0@einstein> References: <002501c26bfc$4fc50dc0$0301a8c0@einstein> <1033816433.25214.19.camel@localhost.localdomain> <20021005150018.GA2493@odo.ecs.umass.edu> <009c01c26cdf$02686ca0$0301a8c0@einstein> Message-ID: <1033902830.8947.39.camel@localhost.localdomain> On Sun, 2002-10-06 at 03:11, Sebastien Pouliot wrote: > Question 1: Where the code for the RNG ? Look in configure.in and mono/metadata/rand.c. There are implementations of S.S.C.RNGCryptoServiceProvider.GetBytes and GetNonZeroBytes. These get wired up in the runtime in metadata/icall.c. Finally, in mcs/class/.../RNGServiceProvider.cs, these two methods are marked as InternalCalls. The other methods aren't done, but GetBytes and GetNonZeroBytes should work. > Question 2: How should this platform specific code be integrated in Mono ? I think it's been suggested that in these cases we maintain a FooLinux.cs and FooWindows.cs, both of which contain an implementation of class Foo and pick the appropriate one at compile time. But if we start doing that, you won't be able to build corlib.dll/System.dll/etc on one platform and then copy it to another. > Right now there seems to be a little confusion in the class library about > Managed and CryptoServiceProvider. I think this was a bad design decision by MS. If it was only possible create crypto objects through a factory class (ie. CryptoConfig), then it wouldn't matter what these classes were called. However, in .net it is possible to directly instantiate the crypto classes, and so user code can contain references to these class names. Why should user code care if they are calling a managed implementation or a wrapped version of a system service? Currently, I have been implementing the algorithms as C# managed code regardless of whether they are named CryptoServiceProvider or Managed. This means they will work on all platforms supported by mono, and user code which directly instantiates (say, RC2CryptoServiceProvider) will still work as expected. > ... RSA/DSA classes because they store their private key in > CAPI containers (meaning that compatibility will required these classes to > use CryptoAPI). Ah, right ... RSACryptoServiceProvider.PersistKeyInCsp. That's a problem. Don't MS ship a version of Rotor which runs on BSD? How can they support methods like this under BSD? Andrew From Sebastien Pouliot Sun Oct 6 13:02:43 2002 From: Sebastien Pouliot (Sebastien Pouliot) Date: Sun, 06 Oct 2002 08:02:43 -0400 Subject: [Mono-list] RNG, Cryptography and Philosophy References: <002501c26bfc$4fc50dc0$0301a8c0@einstein> <1033816433.25214.19.camel@localhost.localdomain> <20021005150018.GA2493@odo.ecs.umass.edu> <009c01c26cdf$02686ca0$0301a8c0@einstein> <1033902830.8947.39.camel@localhost.localdomain> Message-ID: <00af01c26d30$473f8c40$0301a8c0@einstein> > > Question 1: Where the code for the RNG ? > > Look in configure.in and mono/metadata/rand.c. There are > implementations of S.S.C.RNGCryptoServiceProvider.GetBytes and > GetNonZeroBytes. These get wired up in the runtime in > metadata/icall.c. Finally, in mcs/class/.../RNGServiceProvider.cs, > these two methods are marked as InternalCalls. The other methods aren't > done, but GetBytes and GetNonZeroBytes should work. Thanks. I didn't look at the attributes. > > Question 2: How should this platform specific code be integrated in Mono ? > > I think it's been suggested that in these cases we maintain a > FooLinux.cs and FooWindows.cs, both of which contain an implementation > of class Foo and pick the appropriate one at compile time. > > But if we start doing that, you won't be able to build > corlib.dll/System.dll/etc on one platform and then copy it to another. We "could" (not a recommendation!) switch at runtime but this will get ugly as Mono support more, and hopefully much more, operating systems. But surely, we aren't the only one with this problem (I found something about the Registry in the archive). So maybe this decision is already made ? I never checked but is it possible that mscorlib.dll is the only one (or one of few) mixing managed/unmanaged code ? That would explain why the System.Security.Cryptography.X509Certificates is splitted between corlib.dll and system.dll. This would be good news as only (part of) a single dll would be system dependant. > > Right now there seems to be a little confusion in the class library about > > Managed and CryptoServiceProvider. > > I think this was a bad design decision by MS. If it was only possible > create crypto objects through a factory class (ie. CryptoConfig), then > it wouldn't matter what these classes were called. I completly agree. > However, in .net it > is possible to directly instantiate the crypto classes, and so user code > can contain references to these class names. Why should user code care > if they are calling a managed implementation or a wrapped version of a > system service? Well there are some reasons: like HSMs, smart cards, ... which can requires special activation steps (authentication with PIN, passwords, biometry, ...). This is possible today (on Windows) using CSP, as they can show their own user interface, unlike PKCS#11. So it's reasonable that some software want to deal directly with a specific class. Anyway that access could have been made through CryptoConfig. > Currently, I have been implementing the algorithms as C# managed code > regardless of whether they are named CryptoServiceProvider or > Managed. This means they will work on all platforms supported by > mono, and user code which directly instantiates (say, > RC2CryptoServiceProvider) will still work as expected. > > > ... RSA/DSA classes because they store their private key in > > CAPI containers (meaning that compatibility will required these classes to > > use CryptoAPI). > > Ah, right ... RSACryptoServiceProvider.PersistKeyInCsp. That's a > problem. > Don't MS ship a version of Rotor which runs on BSD? How can > they support methods like this under BSD? AFAIK there are no cryptographic classes in Rotor. Another problem may be the RNG. It's much easier to get a good RNG from the operating system than implementing one in a managed environment. Well the pseudo-random algorithm isn't the problem - it's more getting a good seed value to start it. Unless someone know a good seed source from the runtime ? > Andrew Sebastien Pouliot Security Architect, Motus Technologies, http://www.motus.com/ work: spouliot@motus.com home: spouliot@videotron.ca From vi64pa@koti.soon.fi Sun Oct 6 19:16:27 2002 From: vi64pa@koti.soon.fi (ville) Date: Sun, 6 Oct 2002 21:16:27 +0300 Subject: [Mono-list] Testclass for SqlInt16 Message-ID: <200210062116.27090.vi64pa@koti.soon.fi> --------------Boundary-00=_F3OK41ZAF03TLDZID3LV Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Here is another one to System.Data.SqlTypes. ville --------------Boundary-00=_F3OK41ZAF03TLDZID3LV Content-Type: text/x-c++src; charset="us-ascii"; name="SqlInt16Test.cs" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="SqlInt16Test.cs" // // SqlInt16Test.cs - NUnit Test Cases for System.Data.SqlTypes.SqlInt16 // // Ville Palo (vi64pa@koti.soon.fi) // // (C) Ville Palo 2002 // using NUnit.Framework; using System; using System.Data.SqlTypes; namespace MonoTests.System.Data.SqlTypes { public class SqlInt16Test : TestCase { public SqlInt16Test() : base ("System.Data.SqlTypes.SqlInt16") {} public SqlInt16Test(string name) : base(name) {} protected override void TearDown() {} protected override void SetUp() { } public static ITest Suite { get { return new TestSuite(typeof(SqlInt16)); } } // Test constructor public void TestCreate() { SqlInt16 TestShort = new SqlInt16 (29); AssertEquals ("A#1", (short)29, TestShort.Value); TestShort = new SqlInt16 (-9000); AssertEquals ("A#2", (short)-9000, TestShort.Value); } // Test public fields public void TestPublicFields() { AssertEquals ("Test#1", (SqlInt16)32767, SqlInt16.MaxValue); AssertEquals ("Test#2", (SqlInt16)(-32768), SqlInt16.MinValue); Assert ("Test#3", SqlInt16.Null.IsNull); AssertEquals ("Test#4", (short)0, SqlInt16.Zero.Value); } // Test properties public void TestProperties() { SqlInt16 Test5443 = new SqlInt16 (5443); SqlInt16 Test1 = new SqlInt16 (1); Assert ("Test#1", SqlInt16.Null.IsNull); AssertEquals ("Test#2", (short)5443, Test5443.Value); AssertEquals ("Test#3", (short)1, Test1.Value); } // PUBLIC METHODS public void TestArithmeticMethods() { SqlInt16 Test64 = new SqlInt16 (64); SqlInt16 Test0 = new SqlInt16 (0); SqlInt16 Test164 = new SqlInt16 (164); SqlInt16 TestMax = new SqlInt16 (SqlInt16.MaxValue.Value); // Add() AssertEquals ("Test#1", (short)64, SqlInt16.Add (Test64, Test0).Value); AssertEquals ("Test#2", (short)228, SqlInt16.Add (Test64, Test164).Value); AssertEquals ("Test#3", (short)164, SqlInt16.Add (Test0, Test164).Value); AssertEquals ("Test#4", (short)SqlInt16.MaxValue, SqlInt16.Add (TestMax, Test0).Value); try { SqlInt16.Add (TestMax, Test64); Fail ("Test#5"); } catch (Exception e) { AssertEquals ("Test#6", typeof (OverflowException), e.GetType ()); } // Divide() AssertEquals ("Test#7", (short)2, SqlInt16.Divide (Test164, Test64).Value); AssertEquals ("Test#8", (short)0, SqlInt16.Divide (Test64, Test164).Value); try { SqlInt16.Divide(Test64, Test0); Fail ("Test#9"); } catch(Exception e) { AssertEquals ("Test#10", typeof (DivideByZeroException), e.GetType ()); } // Mod() AssertEquals ("Test#11", (SqlInt16)36, SqlInt16.Mod (Test164, Test64)); AssertEquals ("Test#12", (SqlInt16)64, SqlInt16.Mod (Test64, Test164)); // Multiply() AssertEquals ("Test#13", (short)10496, SqlInt16.Multiply (Test64, Test164).Value); AssertEquals ("Test#14", (short)0, SqlInt16.Multiply (Test64, Test0).Value); try { SqlInt16.Multiply (TestMax, Test64); Fail ("Test#15"); } catch(Exception e) { AssertEquals ("Test#16", typeof (OverflowException), e.GetType ()); } // Subtract() AssertEquals ("Test#17", (short)100, SqlInt16.Subtract (Test164, Test64).Value); try { SqlInt16.Subtract (Test64, Test164); } catch(Exception e) { AssertEquals ("OverflowException", typeof (OverflowException), e.GetType ()); } } public void TestBitwiseMethods() { short MaxValue = SqlInt16.MaxValue.Value; SqlInt16 TestInt = new SqlInt16 (0); SqlInt16 TestIntMax = new SqlInt16 (MaxValue); SqlInt16 TestInt2 = new SqlInt16 (10922); SqlInt16 TestInt3 = new SqlInt16 (21845); // BitwiseAnd AssertEquals ("Test#1", (short)21845, SqlInt16.BitwiseAnd (TestInt3, TestIntMax).Value); AssertEquals ("Test#2", (short)0, SqlInt16.BitwiseAnd (TestInt2, TestInt3).Value); AssertEquals ("Test#3", (short)10922, SqlInt16.BitwiseAnd (TestInt2, TestIntMax).Value); //BitwiseOr AssertEquals ("Test#4", (short)MaxValue, SqlInt16.BitwiseOr (TestInt2, TestInt3).Value); AssertEquals ("Test#5", (short)21845, SqlInt16.BitwiseOr (TestInt, TestInt3).Value); AssertEquals ("Test#6", (short)MaxValue, SqlInt16.BitwiseOr (TestIntMax, TestInt2).Value); } public void TestCompareTo() { SqlInt16 TestInt4000 = new SqlInt16 (4000); SqlInt16 TestInt4000II = new SqlInt16 (4000); SqlInt16 TestInt10 = new SqlInt16 (10); SqlInt16 TestInt10000 = new SqlInt16 (10000); SqlString TestString = new SqlString ("This is a test"); Assert ("Test#1", TestInt4000.CompareTo (TestInt10) > 0); Assert ("Test#2", TestInt10.CompareTo (TestInt4000) < 0); Assert ("Test#3", TestInt4000II.CompareTo (TestInt4000) == 0); Assert ("Test#4", TestInt4000II.CompareTo (SqlInt16.Null) > 0); try { TestInt10.CompareTo (TestString); Fail("Test#5"); } catch(Exception e) { AssertEquals ("Test#6", typeof (ArgumentException), e.GetType ()); } } public void TestEqualsMethod() { SqlInt16 Test0 = new SqlInt16 (0); SqlInt16 Test158 = new SqlInt16 (158); SqlInt16 Test180 = new SqlInt16 (180); SqlInt16 Test180II = new SqlInt16 (180); Assert ("Test#1", !Test0.Equals (Test158)); Assert ("Test#2", !Test158.Equals (Test180)); Assert ("Test#3", !Test180.Equals (new SqlString ("TEST"))); Assert ("Test#4", Test180.Equals (Test180II)); } public void TestStaticEqualsMethod() { SqlInt16 Test34 = new SqlInt16 (34); SqlInt16 Test34II = new SqlInt16 (34); SqlInt16 Test15 = new SqlInt16 (15); Assert ("Test#1", SqlInt16.Equals (Test34, Test34II).Value); Assert ("Test#2", !SqlInt16.Equals (Test34, Test15).Value); Assert ("Test#3", !SqlInt16.Equals (Test15, Test34II).Value); } public void TestGetHashCode() { SqlInt16 Test15 = new SqlInt16 (15); SqlInt16 Test216 = new SqlInt16 (216); // FIXME: These values worked with w2k AssertEquals ("Test#1", 983055, Test15.GetHashCode ()); AssertEquals ("Test#2", 14155992, Test216.GetHashCode ()); } public void TestGetType() { SqlInt16 Test = new SqlInt16 (84); AssertEquals ("Test#1", "System.Data.SqlTypes.SqlInt16", Test.GetType ().ToString ()); } public void TestGreaters() { SqlInt16 Test10 = new SqlInt16 (10); SqlInt16 Test10II = new SqlInt16 (10); SqlInt16 Test110 = new SqlInt16 (110); // GreateThan () Assert ("Test#1", !SqlInt16.GreaterThan (Test10, Test110).Value); Assert ("Test#2", SqlInt16.GreaterThan (Test110, Test10).Value); Assert ("Test#3", !SqlInt16.GreaterThan (Test10II, Test10).Value); // GreaterTharOrEqual () Assert ("Test#1", !SqlInt16.GreaterThanOrEqual (Test10, Test110).Value); Assert ("Test#2", SqlInt16.GreaterThanOrEqual (Test110, Test10).Value); Assert ("Test#3", SqlInt16.GreaterThanOrEqual (Test10II, Test10).Value); } public void TestLessers() { SqlInt16 Test10 = new SqlInt16 (10); SqlInt16 Test10II = new SqlInt16 (10); SqlInt16 Test110 = new SqlInt16 (110); // LessThan() Assert ("Test#1", SqlInt16.LessThan (Test10, Test110).Value); Assert ("Test#2", !SqlInt16.LessThan (Test110, Test10).Value); Assert ("Test#3", !SqlInt16.LessThan (Test10II, Test10).Value); // LessThanOrEqual () Assert ("Test#4", SqlInt16.LessThanOrEqual (Test10, Test110).Value); Assert ("Test#5", !SqlInt16.LessThanOrEqual (Test110, Test10).Value); Assert ("Test#6", SqlInt16.LessThanOrEqual (Test10II, Test10).Value); Assert ("Test#7", SqlInt16.LessThanOrEqual (Test10II, SqlInt16.Null).IsNull); } public void TestNotEquals() { SqlInt16 Test12 = new SqlInt16 (12); SqlInt16 Test128 = new SqlInt16 (128); SqlInt16 Test128II = new SqlInt16 (128); Assert ("Test#1", SqlInt16.NotEquals (Test12, Test128).Value); Assert ("Test#2", SqlInt16.NotEquals (Test128, Test12).Value); Assert ("Test#3", SqlInt16.NotEquals (Test128II, Test12).Value); Assert ("Test#4", !SqlInt16.NotEquals (Test128II, Test128).Value); Assert ("Test#5", !SqlInt16.NotEquals (Test128, Test128II).Value); Assert ("Test#6", SqlInt16.NotEquals (SqlInt16.Null, Test128II).IsNull); Assert ("Test#7", SqlInt16.NotEquals (SqlInt16.Null, Test128II).IsNull); } public void TestOnesComplement() { SqlInt16 Test12 = new SqlInt16(12); SqlInt16 Test128 = new SqlInt16(128); AssertEquals ("Test#1", (SqlInt16)(-13), SqlInt16.OnesComplement (Test12)); AssertEquals ("Test#2", (SqlInt16)(-129), SqlInt16.OnesComplement (Test128)); } public void TestParse() { try { SqlInt16.Parse (null); Fail ("Test#1"); } catch (Exception e) { AssertEquals ("Test#2", typeof (ArgumentNullException), e.GetType ()); } try { SqlInt16.Parse ("not-a-number"); Fail ("Test#3"); } catch (Exception e) { AssertEquals ("Test#4", typeof (FormatException), e.GetType ()); } try { int OverInt = (int)SqlInt16.MaxValue + 1; SqlInt16.Parse (OverInt.ToString ()); Fail ("Test#5"); } catch (Exception e) { AssertEquals ("Test#6", typeof (OverflowException), e.GetType ()); } AssertEquals("Test#7", (short)150, SqlInt16.Parse ("150").Value); } public void TestConversions() { SqlInt16 Test12 = new SqlInt16 (12); SqlInt16 Test0 = new SqlInt16 (0); SqlInt16 TestNull = SqlInt16.Null; SqlInt16 Test1000 = new SqlInt16 (1000); SqlInt16 Test288 = new SqlInt16(288); // ToSqlBoolean () Assert ("TestA#1", Test12.ToSqlBoolean ().Value); Assert ("TestA#2", !Test0.ToSqlBoolean ().Value); Assert ("TestA#3", TestNull.ToSqlBoolean ().IsNull); // ToSqlByte () AssertEquals ("TestB#1", (byte)12, Test12.ToSqlByte ().Value); AssertEquals ("TestB#2", (byte)0, Test0.ToSqlByte ().Value); try { SqlByte b = (byte)Test1000.ToSqlByte (); Fail ("TestB#4"); } catch (Exception e) { AssertEquals ("TestB#5", typeof (OverflowException), e.GetType ()); } // ToSqlDecimal () AssertEquals ("TestC#1", (decimal)12, Test12.ToSqlDecimal ().Value); AssertEquals ("TestC#2", (decimal)0, Test0.ToSqlDecimal ().Value); AssertEquals ("TestC#3", (decimal)288, Test288.ToSqlDecimal ().Value); // ToSqlDouble () AssertEquals ("TestD#1", (double)12, Test12.ToSqlDouble ().Value); AssertEquals ("TestD#2", (double)0, Test0.ToSqlDouble ().Value); AssertEquals ("TestD#3", (double)1000, Test1000.ToSqlDouble ().Value); // ToSqlInt32 () AssertEquals ("TestE#1", (int)12, Test12.ToSqlInt32 ().Value); AssertEquals ("TestE#2", (int)0, Test0.ToSqlInt32 ().Value); AssertEquals ("TestE#3", (int)288, Test288.ToSqlInt32().Value); // ToSqlInt64 () AssertEquals ("TestF#1", (long)12, Test12.ToSqlInt64 ().Value); AssertEquals ("TestF#2", (long)0, Test0.ToSqlInt64 ().Value); AssertEquals ("TestF#3", (long)288, Test288.ToSqlInt64 ().Value); // ToSqlMoney () AssertEquals ("TestG#1", (decimal)12, Test12.ToSqlMoney ().Value); AssertEquals ("TestG#2", (decimal)0, Test0.ToSqlMoney ().Value); AssertEquals ("TestG#3", (decimal)288, Test288.ToSqlMoney ().Value); // ToSqlSingle () AssertEquals ("TestH#1", (float)12, Test12.ToSqlSingle ().Value); AssertEquals ("TestH#2", (float)0, Test0.ToSqlSingle ().Value); AssertEquals ("TestH#3", (float)288, Test288.ToSqlSingle().Value); // ToSqlString () AssertEquals ("TestI#1", "12", Test12.ToSqlString ().Value); AssertEquals ("TestI#2", "0", Test0.ToSqlString ().Value); AssertEquals ("TestI#3", "288", Test288.ToSqlString ().Value); // ToString () AssertEquals ("TestJ#1", "12", Test12.ToString ()); AssertEquals ("TestJ#2", "0", Test0.ToString ()); AssertEquals ("TestJ#3", "288", Test288.ToString ()); } public void TestXor() { SqlInt16 Test14 = new SqlInt16 (14); SqlInt16 Test58 = new SqlInt16 (58); SqlInt16 Test130 = new SqlInt16 (130); SqlInt16 TestMax = new SqlInt16 (SqlInt16.MaxValue.Value); SqlInt16 Test0 = new SqlInt16 (0); AssertEquals ("Test#1", (short)52, SqlInt16.Xor (Test14, Test58).Value); AssertEquals ("Test#2", (short)140, SqlInt16.Xor (Test14, Test130).Value); AssertEquals ("Test#3", (short)184, SqlInt16.Xor (Test58, Test130).Value); AssertEquals ("Test#4", (short)0, SqlInt16.Xor (TestMax, TestMax).Value); AssertEquals ("Test#5", TestMax.Value, SqlInt16.Xor (TestMax, Test0).Value); } // OPERATORS public void TestArithmeticOperators() { SqlInt16 Test24 = new SqlInt16 (24); SqlInt16 Test64 = new SqlInt16 (64); SqlInt16 Test2550 = new SqlInt16 (2550); SqlInt16 Test0 = new SqlInt16 (0); // "+"-operator AssertEquals ("TestA#1", (SqlInt16)2614,Test2550 + Test64); try { SqlInt16 result = Test64 + SqlInt16.MaxValue; Fail ("TestA#2"); } catch (Exception e) { AssertEquals ("TestA#3", typeof (OverflowException), e.GetType ()); } // "/"-operator AssertEquals ("TestB#1", (SqlInt16)39, Test2550 / Test64); AssertEquals ("TestB#2", (SqlInt16)0, Test24 / Test64); try { SqlInt16 result = Test2550 / Test0; Fail ("TestB#3"); } catch (Exception e) { AssertEquals ("TestB#4", typeof (DivideByZeroException), e.GetType ()); } // "*"-operator AssertEquals ("TestC#1", (SqlInt16)1536, Test64 * Test24); try { SqlInt16 test = (SqlInt16.MaxValue * Test64); Fail ("TestC#2"); } catch (Exception e) { AssertEquals ("TestC#3", typeof (OverflowException), e.GetType ()); } // "-"-operator AssertEquals ("TestD#1", (SqlInt16)2526, Test2550 - Test24); try { SqlInt16 test = SqlInt16.MinValue - Test64; Fail ("TestD#2"); } catch (Exception e) { AssertEquals ("OverflowException", typeof (OverflowException), e.GetType ()); } // "%"-operator AssertEquals ("TestE#1", (SqlInt16)54, Test2550 % Test64); AssertEquals ("TestE#2", (SqlInt16)24, Test24 % Test64); AssertEquals ("TestE#1", (SqlInt16)0, new SqlInt16 (100) % new SqlInt16 (10)); } public void TestBitwiseOperators() { SqlInt16 Test2 = new SqlInt16 (2); SqlInt16 Test4 = new SqlInt16 (4); SqlInt16 Test2550 = new SqlInt16 (2550); // & -operator AssertEquals ("TestA#1", (SqlInt16)0, Test2 & Test4); AssertEquals ("TestA#2", (SqlInt16)2, Test2 & Test2550); AssertEquals ("TestA#3", (SqlInt16)0, SqlInt16.MaxValue & SqlInt16.MinValue); // | -operator AssertEquals ("TestB#1", (SqlInt16)6,Test2 | Test4); AssertEquals ("TestB#2", (SqlInt16)2550, Test2 | Test2550); AssertEquals ("TestB#3", (SqlInt16)(-1), SqlInt16.MinValue | SqlInt16.MaxValue); // ^ -operator AssertEquals("TestC#1", (SqlInt16)2546, (Test2550 ^ Test4)); AssertEquals("TestC#2", (SqlInt16)6, (Test2 ^ Test4)); } public void TestThanOrEqualOperators() { SqlInt16 Test165 = new SqlInt16 (165); SqlInt16 Test100 = new SqlInt16 (100); SqlInt16 Test100II = new SqlInt16 (100); SqlInt16 Test255 = new SqlInt16 (2550); // == -operator Assert ("TestA#1", (Test100 == Test100II).Value); Assert ("TestA#2", !(Test165 == Test100).Value); Assert ("TestA#3", (Test165 == SqlInt16.Null).IsNull); // != -operator Assert ("TestB#1", !(Test100 != Test100II).Value); Assert ("TestB#2", (Test100 != Test255).Value); Assert ("TestB#3", (Test165 != Test255).Value); Assert ("TestB#4", (Test165 != SqlInt16.Null).IsNull); // > -operator Assert ("TestC#1", (Test165 > Test100).Value); Assert ("TestC#2", !(Test165 > Test255).Value); Assert ("TestC#3", !(Test100 > Test100II).Value); Assert ("TestC#4", (Test165 > SqlInt16.Null).IsNull); // >= -operator Assert ("TestD#1", !(Test165 >= Test255).Value); Assert ("TestD#2", (Test255 >= Test165).Value); Assert ("TestD#3", (Test100 >= Test100II).Value); Assert ("TestD#4", (Test165 >= SqlInt16.Null).IsNull); // < -operator Assert ("TestE#1", !(Test165 < Test100).Value); Assert ("TestE#2", (Test165 < Test255).Value); Assert ("TestE#3", !(Test100 < Test100II).Value); Assert ("TestE#4", (Test165 < SqlInt16.Null).IsNull); // <= -operator Assert ("TestF#1", (Test165 <= Test255).Value); Assert ("TestF#2", !(Test255 <= Test165).Value); Assert ("TestF#3", (Test100 <= Test100II).Value); Assert ("TestF#4", (Test165 <= SqlInt16.Null).IsNull); } public void TestOnesComplementOperator() { SqlInt16 Test12 = new SqlInt16 (12); SqlInt16 Test128 = new SqlInt16 (128); AssertEquals ("Test#1", (SqlInt16)(-13), ~Test12); AssertEquals ("Test#2", (SqlInt16)(-129), ~Test128); AssertEquals ("Test#3", SqlInt16.Null, ~SqlInt16.Null); } public void TestUnaryNegation() { SqlInt16 Test = new SqlInt16 (2000); SqlInt16 TestNeg = new SqlInt16 (-3000); SqlInt16 Result = -Test; AssertEquals ("Test#1", (short)(-2000), Result.Value); Result = -TestNeg; AssertEquals ("Test#2", (short)3000, Result.Value); } public void TestSqlBooleanToSqlInt16() { SqlBoolean TestBoolean = new SqlBoolean (true); SqlInt16 Result; Result = (SqlInt16)TestBoolean; AssertEquals ("Test#1", (short)1, Result.Value); Result = (SqlInt16)SqlBoolean.Null; Assert ("Test#2", Result.IsNull); } public void TestSqlDecimalToSqlInt16() { SqlDecimal TestDecimal64 = new SqlDecimal (64); SqlDecimal TestDecimal900 = new SqlDecimal (90000); AssertEquals("Test#1", (short)64, ((SqlInt16)TestDecimal64).Value); AssertEquals("Test#2", SqlInt16.Null, ((SqlInt16)SqlDecimal.Null)); try { SqlInt16 test = (SqlInt16)TestDecimal900; Fail("Test#3"); } catch (Exception e) { AssertEquals("Test#4", typeof(OverflowException), e.GetType()); } } public void TestSqlDoubleToSqlInt16() { SqlDouble TestDouble64 = new SqlDouble (64); SqlDouble TestDouble900 = new SqlDouble (90000); AssertEquals ("Test#1", (short)64, ((SqlInt16)TestDouble64).Value); AssertEquals ("Test#2", SqlInt16.Null, ((SqlInt16)SqlDouble.Null)); try { SqlInt16 test = (SqlInt16)TestDouble900; Fail ("Test#3"); } catch (Exception e) { AssertEquals("Test#4", typeof (OverflowException), e.GetType ()); } } public void TestSqlIntToInt16() { SqlInt16 Test = new SqlInt16(12); Int16 Result = (Int16)Test; AssertEquals("Test#1", (short)12, Result); } public void TestSqlInt32ToSqlInt16() { SqlInt32 Test64 = new SqlInt32 (64); SqlInt32 Test900 = new SqlInt32 (90000); AssertEquals ("Test#1", (short)64, ((SqlInt16)Test64).Value); try { SqlInt16 test = (SqlInt16)Test900; Fail("Test#2"); } catch (Exception e) { AssertEquals ("Test#3", typeof (OverflowException), e.GetType ()); } } public void TestSqlInt64ToSqlInt16() { SqlInt64 Test64 = new SqlInt64 (64); SqlInt64 Test900 = new SqlInt64 (90000); AssertEquals ("Test#1", (short)64, ((SqlInt16)Test64).Value); try { SqlInt16 test = (SqlInt16)Test900; Fail ("Test#2"); } catch (Exception e) { AssertEquals("Test#3", typeof (OverflowException), e.GetType ()); } } public void TestSqlMoneyToSqlInt16() { SqlMoney TestMoney64 = new SqlMoney(64); SqlMoney TestMoney900 = new SqlMoney(90000); AssertEquals ("Test#1", (short)64, ((SqlInt16)TestMoney64).Value); try { SqlInt16 test = (SqlInt16)TestMoney900; Fail ("Test#2"); } catch (Exception e) { AssertEquals("test#3", typeof (OverflowException), e.GetType ()); } } public void TestSqlSingleToSqlInt16() { SqlSingle TestSingle64 = new SqlSingle(64); SqlSingle TestSingle900 = new SqlSingle(90000); AssertEquals("Test#1", (short)64, ((SqlInt16)TestSingle64).Value); try { SqlInt16 test = (SqlInt16)TestSingle900; Fail ("Test#2"); } catch (Exception e) { AssertEquals ("Test#3", typeof (OverflowException), e.GetType ()); } } public void TestSqlStringToSqlInt16() { SqlString TestString = new SqlString("Test string"); SqlString TestString100 = new SqlString("100"); SqlString TestString1000 = new SqlString("100000"); AssertEquals ("Test#1", (short)100, ((SqlInt16)TestString100).Value); try { SqlInt16 test = (SqlInt16)TestString1000; Fail ("Test#2"); } catch(Exception e) { AssertEquals ("Test#3", typeof (OverflowException), e.GetType ()); } try { SqlInt16 test = (SqlInt16)TestString; Fail ("Test#3"); } catch(Exception e) { AssertEquals ("Test#4", typeof (FormatException), e.GetType ()); } } public void TestByteToSqlInt16() { short TestShort = 14; AssertEquals ("Test#1", (short)14, ((SqlInt16)TestShort).Value); } } } --------------Boundary-00=_F3OK41ZAF03TLDZID3LV-- From brianlritchie@hotmail.com Mon Oct 7 03:02:30 2002 From: brianlritchie@hotmail.com (Brian Ritchie) Date: Sun, 06 Oct 2002 22:02:30 -0400 Subject: [Mono-list] ODBC.NET Data Provider Message-ID: Is anyone working on a ODBC data provider? I've started one using unixodbc and I'd like to contribute it to the project. Brian _________________________________________________________________ Chat with friends online, try MSN Messenger: http://messenger.msn.com From danmorg@sc.rr.com Mon Oct 7 03:51:07 2002 From: danmorg@sc.rr.com (Daniel Morgan) Date: Sun, 6 Oct 2002 22:51:07 -0400 Subject: [Mono-list] ODBC.NET Data Provider In-Reply-To: Message-ID: Brian No one is working on the ODBC.NET Data Provider as far as i know. Just attach your diff in an email, and someone, such as (passing the buck - hehehe) Rodrigo Moya can do that for you. Rodrigo is the coordinator for the ADO.NET technology in Mono. What can you do witht he provider so far? Can you connect to a database yet? How about run any queries? Or is it just C# bindings to the unixODBC library(ies) right now? Daniel -----Original Message----- From: mono-list-admin@ximian.com [mailto:mono-list-admin@ximian.com]On Behalf Of Brian Ritchie Sent: Sunday, October 06, 2002 10:03 PM To: mono-list@ximian.com Subject: [Mono-list] ODBC.NET Data Provider Is anyone working on a ODBC data provider? I've started one using unixodbc and I'd like to contribute it to the project. Brian _________________________________________________________________ Chat with friends online, try MSN Messenger: http://messenger.msn.com _______________________________________________ Mono-list maillist - Mono-list@ximian.com http://lists.ximian.com/mailman/listinfo/mono-list From brianlritchie@hotmail.com Mon Oct 7 05:02:18 2002 From: brianlritchie@hotmail.com (Brian Ritchie) Date: Mon, 07 Oct 2002 00:02:18 -0400 Subject: [Mono-list] ODBC.NET Data Provider Message-ID: Daniel, Thanks for the quick response. I have basic implementations of OdbcConnection, OdbcCommand, OdbcDataReader, OdbcParameter, and OdbcParameterCollection. It can execute queries and display result sets (and ExecuteNonQuery too). I'm currently working on the Parameter & Transaction support. I've been doing my development on Debian against a DB2 7.2 UDB. Brian >From: "Daniel Morgan" >To: "Brian Ritchie" , >Subject: RE: [Mono-list] ODBC.NET Data Provider >Date: Sun, 6 Oct 2002 22:51:07 -0400 > >Brian > >No one is working on the ODBC.NET Data Provider as far as i know. Just >attach your diff in an email, and someone, such as (passing the buck - >hehehe) Rodrigo Moya can do that for you. Rodrigo is the coordinator for >the >ADO.NET technology in Mono. > >What can you do witht he provider so far? Can you connect to a database >yet? How about run any queries? Or is it just C# bindings to the unixODBC >library(ies) right now? > >Daniel > >-----Original Message----- >From: mono-list-admin@ximian.com [mailto:mono-list-admin@ximian.com]On >Behalf Of Brian Ritchie >Sent: Sunday, October 06, 2002 10:03 PM >To: mono-list@ximian.com >Subject: [Mono-list] ODBC.NET Data Provider > > >Is anyone working on a ODBC data provider? I've started one using unixodbc >and I'd like to contribute it to the project. > >Brian > > > >_________________________________________________________________ >Chat with friends online, try MSN Messenger: http://messenger.msn.com > > >_______________________________________________ >Mono-list maillist - Mono-list@ximian.com >http://lists.ximian.com/mailman/listinfo/mono-list > > >_______________________________________________ >Mono-list maillist - Mono-list@ximian.com >http://lists.ximian.com/mailman/listinfo/mono-list _________________________________________________________________ Send and receive Hotmail on your mobile device: http://mobile.msn.com From danmorg@sc.rr.com Mon Oct 7 06:08:32 2002 From: danmorg@sc.rr.com (Daniel Morgan) Date: Mon, 7 Oct 2002 01:08:32 -0400 Subject: [Mono-list] ODBC.NET Data Provider In-Reply-To: Message-ID: Brian, This is good news. Can provide us with a patch please in an email to the mono-list@ximian.com? If you don't know how to make a patch, you can look here on how: http://www.go-mono.com/ccvs.html This way people can get a preview of your work and be able to help contribute too. Since unixODBC supports so many databases, it will definitely be appreciated. Do you know if unixODBC works on Windows? Thanks, Daniel -----Original Message----- From: mono-list-admin@ximian.com [mailto:mono-list-admin@ximian.com]On Behalf Of Brian Ritchie Sent: Monday, October 07, 2002 12:02 AM To: danmorg@sc.rr.com; mono-list@ximian.com Subject: RE: [Mono-list] ODBC.NET Data Provider Daniel, Thanks for the quick response. I have basic implementations of OdbcConnection, OdbcCommand, OdbcDataReader, OdbcParameter, and OdbcParameterCollection. It can execute queries and display result sets (and ExecuteNonQuery too). I'm currently working on the Parameter & Transaction support. I've been doing my development on Debian against a DB2 7.2 UDB. Brian >From: "Daniel Morgan" >To: "Brian Ritchie" , >Subject: RE: [Mono-list] ODBC.NET Data Provider >Date: Sun, 6 Oct 2002 22:51:07 -0400 > >Brian > >No one is working on the ODBC.NET Data Provider as far as i know. Just >attach your diff in an email, and someone, such as (passing the buck - >hehehe) Rodrigo Moya can do that for you. Rodrigo is the coordinator for >the >ADO.NET technology in Mono. > >What can you do witht he provider so far? Can you connect to a database >yet? How about run any queries? Or is it just C# bindings to the unixODBC >library(ies) right now? > >Daniel > >-----Original Message----- >From: mono-list-admin@ximian.com [mailto:mono-list-admin@ximian.com]On >Behalf Of Brian Ritchie >Sent: Sunday, October 06, 2002 10:03 PM >To: mono-list@ximian.com >Subject: [Mono-list] ODBC.NET Data Provider > > >Is anyone working on a ODBC data provider? I've started one using unixodbc >and I'd like to contribute it to the project. > >Brian > > > >_________________________________________________________________ >Chat with friends online, try MSN Messenger: http://messenger.msn.com > > >_______________________________________________ >Mono-list maillist - Mono-list@ximian.com >http://lists.ximian.com/mailman/listinfo/mono-list > > >_______________________________________________ >Mono-list maillist - Mono-list@ximian.com >http://lists.ximian.com/mailman/listinfo/mono-list _________________________________________________________________ Send and receive Hotmail on your mobile device: http://mobile.msn.com _______________________________________________ Mono-list maillist - Mono-list@ximian.com http://lists.ximian.com/mailman/listinfo/mono-list From dietmar@ximian.com Mon Oct 7 09:27:26 2002 From: dietmar@ximian.com (Dietmar Maurer) Date: 07 Oct 2002 10:27:26 +0200 Subject: [Mono-list] Re: dynamic optimizations in Mono JIT In-Reply-To: <200210052329.ABY01532@express.cites.uiuc.edu> References: <200210052329.ABY01532@express.cites.uiuc.edu> Message-ID: <1033979246.17630.39.camel@tequila> Hi James, I will send the reply also to mono-list@ximian.com. There are many people with great ideas on that list ;-) On Sun, 2002-10-06 at 01:29, James Roberts wrote: > Hello, > > I have a few questions regarding the Mono JIT; From the > source code and the newsgroup activity, I gather that you are > the person to talk to. > > I am a graduate computer science student at the University of > Illinois, Urbana-Champain. My classmates and I interested in > doing some expermentation on the Mono JIT in relation to a > course that we are taking in dynamic translation and > optimization (http://www-courses.cs.uiuc.edu/~cs497cz/). > Specifically, I am interested using feedback-directed > optimizations to improve the performance of the Mono JIT. > > The ideal goal of the project would be to continuously > improve application performance using a lightweight profiler > in conjunction with on-line translator/optimizer. However, > since this is only a semester project, it would be sufficient > to persue only a subset of those goals (e.g. a novel > lightweight profiling technique, or simply an interesting > feedback directed optimization for byte code translation). > > I was wondering if you had any pending problems or project > ideas in the Mono JIT which fell into this category and which > would be feasible for a medium-sized class project. > Likewise, I would greatly appreciate any pointers that you > could give me regarding the high-level implementation of the > Mono JIT. We already have a profiler, its in mono/mono/metdata/profiler*, but i am unsure if that is suitable for feedback directed optimizations (i assume its too slow). I would start measuring simple things like usage count, and find some additional metrics from IL code analysis. Our plan is to implement a 2 phase jit, but so far we have no code. So we are also interested in gathering some statistics about usage count, time spent in those methods, ... AFAIK ORP (the intel java jit) uses a 2 phase compilation technique, maybe its interesting to look at there code. - Dietmar From ynop@beunited.org Mon Oct 7 03:55:34 2002 From: ynop@beunited.org (YNOP) Date: Mon, 07 Oct 2002 02:55:34 Local time zone must be set--see zic manual page Subject: [Mono-list] About the Home page Message-ID: <444518109678-BeMail@utopia> I have heard about mono a few times.. and finaly decided to drop by the web site (go-mono.com) ... well .. its nice and all .. however none of the web links on the side work. this is seemingly do to the fact that my web browser is a little more picky than some. And the fact that your page has some incorrect HTML in it: Contact A missing space between the "navi0" and the HREF causes the HREF to never get parsed out of the a tag, bummer, thus makeing the entire "navi0"HREF="contact.html" the actuall value of class. Which does't do much under my browser :P Well, hope you guys fix this. It seems to be a 'super' common mistake that people are makeing now days. Or it could be that someone is usieng one of those HTML editor thngys to do the work for them :( Either way, hope to see the update and you guys are doing some good work. See ya PS, the web browser is Net+ under BeOS :) would try it under something else but i don't own any other OS on any of my 5 boxes :P YNOP ynop@beunited.org ----------------------------------------- i wish they could see us now in leather bras and rubber shorts like some ridiculous team uniform for some ridiculous new sport quick someone call the girl police and file a report -Ani DiFranco From rodrigo@ximian.com Mon Oct 7 11:15:57 2002 From: rodrigo@ximian.com (Rodrigo Moya) Date: 07 Oct 2002 12:15:57 +0200 Subject: [Mono-list] ODBC.NET Data Provider In-Reply-To: References: Message-ID: <1033985757.2367.1.camel@localhost> On Mon, 2002-10-07 at 04:51, Daniel Morgan wrote: > Brian > > No one is working on the ODBC.NET Data Provider as far as i know. Just > attach your diff in an email, and someone, such as (passing the buck - > hehehe) Rodrigo Moya can do that for you. Rodrigo is the coordinator for the > ADO.NET technology in Mono. > yes please, send it to me and I'll put it on CVS. cheers -- Rodrigo Moya From rodrigo@ximian.com Mon Oct 7 11:18:13 2002 From: rodrigo@ximian.com (Rodrigo Moya) Date: 07 Oct 2002 12:18:13 +0200 Subject: [Mono-list] ODBC.NET Data Provider In-Reply-To: References: Message-ID: <1033985892.2354.4.camel@localhost> On Mon, 2002-10-07 at 07:08, Daniel Morgan wrote: > Brian, > > This is good news. > > Can provide us with a patch please in an email to the mono-list@ximian.com? > If you don't know how to make a patch, you can look here on how: > http://www.go-mono.com/ccvs.html > > This way people can get a preview of your work and be able to help > contribute too. Since unixODBC supports so many databases, it will > definitely be appreciated. > > Do you know if unixODBC works on Windows? > I'm not sure if it works or not, but it's not really needed at all on Windows. That is, unixODBC implements the ODBC API as found on windows, and is (or supposed to at least) source compatible with Windows' ODBC, so you don't need it at all, you just need an ODBC implementation, and Windows already includes one. cheers -- Rodrigo Moya From borzoi@caltanet.it Mon Oct 7 12:08:37 2002 From: borzoi@caltanet.it (borzoi@caltanet.it) Date: Mon, 07 Oct 2002 13:08:37 +0200 (CEST) Subject: [Mono-list] monodis for Mono 0.15 Windows version?\ Message-ID: <1033988917.3da16b35c396d@webmail.caltanet.it> Hello, I'm evaluating Mono 0.15 on my Windows 2000 machine; 0.15 version setup has not installed the monodis tool: could anyone send me it? Regards, Paolo De Nictolis, Eng. From Neale.Ferguson@SoftwareAG-USA.com Mon Oct 7 15:30:57 2002 From: Neale.Ferguson@SoftwareAG-USA.com (Ferguson, Neale) Date: Mon, 7 Oct 2002 10:30:57 -0400 Subject: [Mono-list] thread6 Message-ID: <9A4FC925410C024792B85198DF1E97E403F459EB@usmsg03.sagus.com> This message is in MIME format. Since your mail reader does not understand this format, some or all of this message may not be legible. ------_=_NextPart_001_01C26E0E.26CAFD30 Content-Type: text/plain; charset="iso-8859-1" Would someone send me the output of mint --trace thread6.exe so I can see why the test is failing for me? Neale Ferguson ------_=_NextPart_001_01C26E0E.26CAFD30 Content-Type: text/html; charset="iso-8859-1"
Would someone send me the output of mint --trace thread6.exe so I can see why the test is failing for me?

Neale Ferguson

 
------_=_NextPart_001_01C26E0E.26CAFD30-- From mathieu_lacage@realmagic.fr Mon Oct 7 13:50:41 2002 From: mathieu_lacage@realmagic.fr (Mathieu Lacage) Date: 07 Oct 2002 14:50:41 +0200 Subject: [Mono-list] Re: GUADEC-III conferences In-Reply-To: <1026343292.570.32.camel@frodo> References: <1026343292.570.32.camel@frodo> Message-ID: <1033995043.21939.36.camel@mathieu.france.sdesigns.com> Are these Divx 3, 4 or 5 files ? Divx 4 would be great. I can probably re-encode in low bitrate should you need it and output in Divx 4 or mpeg4. Mathieu On Thu, 2002-07-11 at 01:21, Carlos Perelló Marín wrote: > Hi. I have some of the GUADEC-III conferences as DV video (thanks to > Alvaro del Castillo). > > I need a place to store them so people can download it. > > I can create DVD-Video images and DivX files and the files are big, > really big because they have a DVD resolution. > > For example, I have finished with the Miguel's conference: > -rw-r--r-- 1 0 root 2036184110 Jul 10 22:59 > The_Common_Language_Runtime.avi > > It's about 2 hours and 20 minutes. > > > Perhaps we could use the GNOME's FTP servers... > > > Cheers. > > > -- > Carlos Perelló Marín > mailto:carlos@gnome-db.org > mailto:carlos.perello@hispalinux.es > http://www.gnome-db.org > http://www.Hispalinux.es > Valencia - Spain -- Mathieu Lacage #p: +33 1 69 19 61 97 From pokey@linuxmail.org Mon Oct 7 18:53:50 2002 From: pokey@linuxmail.org (Pokey the Penguin) Date: 07 Oct 2002 18:53:50 +0100 Subject: [Mono-list] About the Home page In-Reply-To: <444518109678-BeMail@utopia> References: <444518109678-BeMail@utopia> Message-ID: <1034013233.1181.23.camel@star> On Mon, 2002-10-07 at 03:55, YNOP wrote: The YNOP from AtheOS? Wow. Welcome on board :-) > Either way, hope to see the update and you guys are doing some good > work. The site could indeed do with some XHTML / CSS compliance work. I'll see what I can do for the particular problem you cite. -- .---. | o_o | | \_/ | // \ \ penguins (| mono | ) do it best /'\_ _/`\ \___)==(___/ From vi64pa@koti.soon.fi Mon Oct 7 18:58:21 2002 From: vi64pa@koti.soon.fi (ville) Date: Mon, 7 Oct 2002 20:58:21 +0300 Subject: [Mono-list] Testclass for SqlInt16 In-Reply-To: <200210062116.27090.vi64pa@koti.soon.fi> References: <200210062116.27090.vi64pa@koti.soon.fi> Message-ID: <200210072058.21367.vi64pa@koti.soon.fi> --------------Boundary-00=_9XHMQMWTR4MWNE6NYNKM Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable There was litle bug. This one is better. And another thing: Has anyone invented a appropriate way to test GetHashValue()-methods? On Sunday 06 October 2002 21:16, ville wrote: > Here is another one to System.Data.SqlTypes. > --------------Boundary-00=_9XHMQMWTR4MWNE6NYNKM Content-Type: text/x-c++src; charset="iso-8859-1"; name="SqlInt16Test.cs" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="SqlInt16Test.cs" // // SqlInt64Test.cs - NUnit Test Cases for System.Data.SqlTypes.SqlInt64 // // Ville Palo (vi64pa@koti.soon.fi) // // (C) Ville Palo 2002 // using NUnit.Framework; using System; using System.Data.SqlTypes; namespace MonoTests.System.Data.SqlTypes { public class SqlInt32Test : TestCase { public SqlInt16Test() : base ("System.Data.SqlTypes.SqlInt64") {} public SqlInt16Test(string name) : base(name) {} protected override void TearDown() {} protected override void SetUp() { } public static ITest Suite { get { return new TestSuite(typeof(SqlInt32; } } // Test constructor public void TestCreate() { SqlInt32 TestShort = new SqlInt32 (29); AssertEquals ("Test#1", (short)29, TestShort.Value); TestShort = new SqlInt32 (-9000); AssertEquals ("Test#2", (short)-9000, TestShort.Value); } // Test public fields public void TestPublicFields() { AssertEquals ("Test#1", (SqlInt32)32767, SqlInt32.MaxValue); AssertEquals ("Test#2", (SqlInt32)(-32768), SqlInt32.MinValue); Assert ("Test#3", SqlInt32.Null.IsNull); AssertEquals ("Test#4", (short)0, SqlInt32.Zero.Value); } // Test properties public void TestProperties() { SqlInt16 Test5443 = new SqlInt16 (5443); SqlInt16 Test1 = new SqlInt16 (1); Assert ("Test#1", SqlInt16.Null.IsNull); AssertEquals ("Test#2", (short)5443, Test5443.Value); AssertEquals ("Test#3", (short)1, Test1.Value); } // PUBLIC METHODS public void TestArithmeticMethods() { SqlInt16 Test64 = new SqlInt16 (64); SqlInt16 Test0 = new SqlInt16 (0); SqlInt16 Test164 = new SqlInt16 (164); SqlInt16 TestMax = new SqlInt16 (SqlInt16.MaxValue.Value); // Add() AssertEquals ("Test#1", (short)64, SqlInt16.Add (Test64, Test0).Value); AssertEquals ("Test#2", (short)228, SqlInt16.Add (Test64, Test164).Value); AssertEquals ("Test#3", (short)164, SqlInt16.Add (Test0, Test164).Value); AssertEquals ("Test#4", (short)SqlInt16.MaxValue, SqlInt16.Add (TestMax, Test0).Value); try { SqlInt16.Add (TestMax, Test64); Fail ("Test#5"); } catch (Exception e) { AssertEquals ("Test#6", typeof (OverflowException), e.GetType ()); } // Divide() AssertEquals ("Test#7", (short)2, SqlInt16.Divide (Test164, Test64).Value); AssertEquals ("Test#8", (short)0, SqlInt16.Divide (Test64, Test164).Value); try { SqlInt16.Divide(Test64, Test0); Fail ("Test#9"); } catch(Exception e) { AssertEquals ("Test#10", typeof (DivideByZeroException), e.GetType ()); } // Mod() AssertEquals ("Test#11", (SqlInt16)36, SqlInt16.Mod (Test164, Test64)); AssertEquals ("Test#12", (SqlInt16)64, SqlInt16.Mod (Test64, Test164)); // Multiply() AssertEquals ("Test#13", (short)10496, SqlInt16.Multiply (Test64, Test164).Value); AssertEquals ("Test#14", (short)0, SqlInt16.Multiply (Test64, Test0).Value); try { SqlInt16.Multiply (TestMax, Test64); Fail ("Test#15"); } catch(Exception e) { AssertEquals ("Test#16", typeof (OverflowException), e.GetType ()); } // Subtract() AssertEquals ("Test#17", (short)100, SqlInt16.Subtract (Test164, Test64).Value); try { SqlInt16.Subtract (SqlInt16.MinValue, Test164); Fail("Test#18"); } catch(Exception e) { AssertEquals ("Test#19", typeof (OverflowException), e.GetType ()); } } public void TestBitwiseMethods() { short MaxValue = SqlInt16.MaxValue.Value; SqlInt16 TestInt = new SqlInt16 (0); SqlInt16 TestIntMax = new SqlInt16 (MaxValue); SqlInt16 TestInt2 = new SqlInt16 (10922); SqlInt16 TestInt3 = new SqlInt16 (21845); // BitwiseAnd AssertEquals ("Test#1", (short)21845, SqlInt16.BitwiseAnd (TestInt3, TestIntMax).Value); AssertEquals ("Test#2", (short)0, SqlInt16.BitwiseAnd (TestInt2, TestInt3).Value); AssertEquals ("Test#3", (short)10922, SqlInt16.BitwiseAnd (TestInt2, TestIntMax).Value); //BitwiseOr AssertEquals ("Test#4", (short)MaxValue, SqlInt16.BitwiseOr (TestInt2, TestInt3).Value); AssertEquals ("Test#5", (short)21845, SqlInt16.BitwiseOr (TestInt, TestInt3).Value); AssertEquals ("Test#6", (short)MaxValue, SqlInt16.BitwiseOr (TestIntMax, TestInt2).Value); } public void TestCompareTo() { SqlInt16 TestInt4000 = new SqlInt16 (4000); SqlInt16 TestInt4000II = new SqlInt16 (4000); SqlInt16 TestInt10 = new SqlInt16 (10); SqlInt16 TestInt10000 = new SqlInt16 (10000); SqlString TestString = new SqlString ("This is a test"); Assert ("Test#1", TestInt4000.CompareTo (TestInt10) > 0); Assert ("Test#2", TestInt10.CompareTo (TestInt4000) < 0); Assert ("Test#3", TestInt4000II.CompareTo (TestInt4000) == 0); Assert ("Test#4", TestInt4000II.CompareTo (SqlInt16.Null) > 0); try { TestInt10.CompareTo (TestString); Fail("Test#5"); } catch(Exception e) { AssertEquals ("Test#6", typeof (ArgumentException), e.GetType ()); } } public void TestEqualsMethod() { SqlInt16 Test0 = new SqlInt16 (0); SqlInt16 Test158 = new SqlInt16 (158); SqlInt16 Test180 = new SqlInt16 (180); SqlInt16 Test180II = new SqlInt16 (180); Assert ("Test#1", !Test0.Equals (Test158)); Assert ("Test#2", !Test158.Equals (Test180)); Assert ("Test#3", !Test180.Equals (new SqlString ("TEST"))); Assert ("Test#4", Test180.Equals (Test180II)); } public void TestStaticEqualsMethod() { SqlInt16 Test34 = new SqlInt16 (34); SqlInt16 Test34II = new SqlInt16 (34); SqlInt16 Test15 = new SqlInt16 (15); Assert ("Test#1", SqlInt16.Equals (Test34, Test34II).Value); Assert ("Test#2", !SqlInt16.Equals (Test34, Test15).Value); Assert ("Test#3", !SqlInt16.Equals (Test15, Test34II).Value); } public void TestGetHashCode() { SqlInt16 Test15 = new SqlInt16 (15); // FIXME: Better way to test GetHashCode()-methods AssertEquals ("Test#1", Test15.GetHashCode (), Test15.GetHashCode ()); } public void TestGetType() { SqlInt16 Test = new SqlInt16 (84); AssertEquals ("Test#1", "System.Data.SqlTypes.SqlInt16", Test.GetType ().ToString ()); } public void TestGreaters() { SqlInt16 Test10 = new SqlInt16 (10); SqlInt16 Test10II = new SqlInt16 (10); SqlInt16 Test110 = new SqlInt16 (110); // GreateThan () Assert ("Test#1", !SqlInt16.GreaterThan (Test10, Test110).Value); Assert ("Test#2", SqlInt16.GreaterThan (Test110, Test10).Value); Assert ("Test#3", !SqlInt16.GreaterThan (Test10II, Test10).Value); // GreaterTharOrEqual () Assert ("Test#1", !SqlInt16.GreaterThanOrEqual (Test10, Test110).Value); Assert ("Test#2", SqlInt16.GreaterThanOrEqual (Test110, Test10).Value); Assert ("Test#3", SqlInt16.GreaterThanOrEqual (Test10II, Test10).Value); } public void TestLessers() { SqlInt16 Test10 = new SqlInt16 (10); SqlInt16 Test10II = new SqlInt16 (10); SqlInt16 Test110 = new SqlInt16 (110); // LessThan() Assert ("Test#1", SqlInt16.LessThan (Test10, Test110).Value); Assert ("Test#2", !SqlInt16.LessThan (Test110, Test10).Value); Assert ("Test#3", !SqlInt16.LessThan (Test10II, Test10).Value); // LessThanOrEqual () Assert ("Test#4", SqlInt16.LessThanOrEqual (Test10, Test110).Value); Assert ("Test#5", !SqlInt16.LessThanOrEqual (Test110, Test10).Value); Assert ("Test#6", SqlInt16.LessThanOrEqual (Test10II, Test10).Value); Assert ("Test#7", SqlInt16.LessThanOrEqual (Test10II, SqlInt16.Null).IsNull); } public void TestNotEquals() { SqlInt16 Test12 = new SqlInt16 (12); SqlInt16 Test128 = new SqlInt16 (128); SqlInt16 Test128II = new SqlInt16 (128); Assert ("Test#1", SqlInt16.NotEquals (Test12, Test128).Value); Assert ("Test#2", SqlInt16.NotEquals (Test128, Test12).Value); Assert ("Test#3", SqlInt16.NotEquals (Test128II, Test12).Value); Assert ("Test#4", !SqlInt16.NotEquals (Test128II, Test128).Value); Assert ("Test#5", !SqlInt16.NotEquals (Test128, Test128II).Value); Assert ("Test#6", SqlInt16.NotEquals (SqlInt16.Null, Test128II).IsNull); Assert ("Test#7", SqlInt16.NotEquals (SqlInt16.Null, Test128II).IsNull); } public void TestOnesComplement() { SqlInt16 Test12 = new SqlInt16(12); SqlInt16 Test128 = new SqlInt16(128); AssertEquals ("Test#1", (SqlInt16)(-13), SqlInt16.OnesComplement (Test12)); AssertEquals ("Test#2", (SqlInt16)(-129), SqlInt16.OnesComplement (Test128)); } public void TestParse() { try { SqlInt16.Parse (null); Fail ("Test#1"); } catch (Exception e) { AssertEquals ("Test#2", typeof (ArgumentNullException), e.GetType ()); } try { SqlInt16.Parse ("not-a-number"); Fail ("Test#3"); } catch (Exception e) { AssertEquals ("Test#4", typeof (FormatException), e.GetType ()); } try { int OverInt = (int)SqlInt16.MaxValue + 1; SqlInt16.Parse (OverInt.ToString ()); Fail ("Test#5"); } catch (Exception e) { AssertEquals ("Test#6", typeof (OverflowException), e.GetType ()); } AssertEquals("Test#7", (short)150, SqlInt16.Parse ("150").Value); } public void TestConversions() { SqlInt16 Test12 = new SqlInt16 (12); SqlInt16 Test0 = new SqlInt16 (0); SqlInt16 TestNull = SqlInt16.Null; SqlInt16 Test1000 = new SqlInt16 (1000); SqlInt16 Test288 = new SqlInt16(288); // ToSqlBoolean () Assert ("TestA#1", Test12.ToSqlBoolean ().Value); Assert ("TestA#2", !Test0.ToSqlBoolean ().Value); Assert ("TestA#3", TestNull.ToSqlBoolean ().IsNull); // ToSqlByte () AssertEquals ("TestB#1", (byte)12, Test12.ToSqlByte ().Value); AssertEquals ("TestB#2", (byte)0, Test0.ToSqlByte ().Value); try { SqlByte b = (byte)Test1000.ToSqlByte (); Fail ("TestB#4"); } catch (Exception e) { AssertEquals ("TestB#5", typeof (OverflowException), e.GetType ()); } // ToSqlDecimal () AssertEquals ("TestC#1", (decimal)12, Test12.ToSqlDecimal ().Value); AssertEquals ("TestC#2", (decimal)0, Test0.ToSqlDecimal ().Value); AssertEquals ("TestC#3", (decimal)288, Test288.ToSqlDecimal ().Value); // ToSqlDouble () AssertEquals ("TestD#1", (double)12, Test12.ToSqlDouble ().Value); AssertEquals ("TestD#2", (double)0, Test0.ToSqlDouble ().Value); AssertEquals ("TestD#3", (double)1000, Test1000.ToSqlDouble ().Value); // ToSqlInt32 () AssertEquals ("TestE#1", (int)12, Test12.ToSqlInt32 ().Value); AssertEquals ("TestE#2", (int)0, Test0.ToSqlInt32 ().Value); AssertEquals ("TestE#3", (int)288, Test288.ToSqlInt32().Value); // ToSqlInt64 () AssertEquals ("TestF#1", (long)12, Test12.ToSqlInt64 ().Value); AssertEquals ("TestF#2", (long)0, Test0.ToSqlInt64 ().Value); AssertEquals ("TestF#3", (long)288, Test288.ToSqlInt64 ().Value); // ToSqlMoney () AssertEquals ("TestG#1", (decimal)12, Test12.ToSqlMoney ().Value); AssertEquals ("TestG#2", (decimal)0, Test0.ToSqlMoney ().Value); AssertEquals ("TestG#3", (decimal)288, Test288.ToSqlMoney ().Value); // ToSqlSingle () AssertEquals ("TestH#1", (float)12, Test12.ToSqlSingle ().Value); AssertEquals ("TestH#2", (float)0, Test0.ToSqlSingle ().Value); AssertEquals ("TestH#3", (float)288, Test288.ToSqlSingle().Value); // ToSqlString () AssertEquals ("TestI#1", "12", Test12.ToSqlString ().Value); AssertEquals ("TestI#2", "0", Test0.ToSqlString ().Value); AssertEquals ("TestI#3", "288", Test288.ToSqlString ().Value); // ToString () AssertEquals ("TestJ#1", "12", Test12.ToString ()); AssertEquals ("TestJ#2", "0", Test0.ToString ()); AssertEquals ("TestJ#3", "288", Test288.ToString ()); } public void TestXor() { SqlInt16 Test14 = new SqlInt16 (14); SqlInt16 Test58 = new SqlInt16 (58); SqlInt16 Test130 = new SqlInt16 (130); SqlInt16 TestMax = new SqlInt16 (SqlInt16.MaxValue.Value); SqlInt16 Test0 = new SqlInt16 (0); AssertEquals ("Test#1", (short)52, SqlInt16.Xor (Test14, Test58).Value); AssertEquals ("Test#2", (short)140, SqlInt16.Xor (Test14, Test130).Value); AssertEquals ("Test#3", (short)184, SqlInt16.Xor (Test58, Test130).Value); AssertEquals ("Test#4", (short)0, SqlInt16.Xor (TestMax, TestMax).Value); AssertEquals ("Test#5", TestMax.Value, SqlInt16.Xor (TestMax, Test0).Value); } // OPERATORS public void TestArithmeticOperators() { SqlInt16 Test24 = new SqlInt16 (24); SqlInt16 Test64 = new SqlInt16 (64); SqlInt16 Test2550 = new SqlInt16 (2550); SqlInt16 Test0 = new SqlInt16 (0); // "+"-operator AssertEquals ("TestA#1", (SqlInt16)2614,Test2550 + Test64); try { SqlInt16 result = Test64 + SqlInt16.MaxValue; Fail ("TestA#2"); } catch (Exception e) { AssertEquals ("TestA#3", typeof (OverflowException), e.GetType ()); } // "/"-operator AssertEquals ("TestB#1", (SqlInt16)39, Test2550 / Test64); AssertEquals ("TestB#2", (SqlInt16)0, Test24 / Test64); try { SqlInt16 result = Test2550 / Test0; Fail ("TestB#3"); } catch (Exception e) { AssertEquals ("TestB#4", typeof (DivideByZeroException), e.GetType ()); } // "*"-operator AssertEquals ("TestC#1", (SqlInt16)1536, Test64 * Test24); try { SqlInt16 test = (SqlInt16.MaxValue * Test64); Fail ("TestC#2"); } catch (Exception e) { AssertEquals ("TestC#3", typeof (OverflowException), e.GetType ()); } // "-"-operator AssertEquals ("TestD#1", (SqlInt16)2526, Test2550 - Test24); try { SqlInt16 test = SqlInt16.MinValue - Test64; Fail ("TestD#2"); } catch (Exception e) { AssertEquals ("OverflowException", typeof (OverflowException), e.GetType ()); } // "%"-operator AssertEquals ("TestE#1", (SqlInt16)54, Test2550 % Test64); AssertEquals ("TestE#2", (SqlInt16)24, Test24 % Test64); AssertEquals ("TestE#1", (SqlInt16)0, new SqlInt16 (100) % new SqlInt16 (10)); } public void TestBitwiseOperators() { SqlInt16 Test2 = new SqlInt16 (2); SqlInt16 Test4 = new SqlInt16 (4); SqlInt16 Test2550 = new SqlInt16 (2550); // & -operator AssertEquals ("TestA#1", (SqlInt16)0, Test2 & Test4); AssertEquals ("TestA#2", (SqlInt16)2, Test2 & Test2550); AssertEquals ("TestA#3", (SqlInt16)0, SqlInt16.MaxValue & SqlInt16.MinValue); // | -operator AssertEquals ("TestB#1", (SqlInt16)6,Test2 | Test4); AssertEquals ("TestB#2", (SqlInt16)2550, Test2 | Test2550); AssertEquals ("TestB#3", (SqlInt16)(-1), SqlInt16.MinValue | SqlInt16.MaxValue); // ^ -operator AssertEquals("TestC#1", (SqlInt16)2546, (Test2550 ^ Test4)); AssertEquals("TestC#2", (SqlInt16)6, (Test2 ^ Test4)); } public void TestThanOrEqualOperators() { SqlInt16 Test165 = new SqlInt16 (165); SqlInt16 Test100 = new SqlInt16 (100); SqlInt16 Test100II = new SqlInt16 (100); SqlInt16 Test255 = new SqlInt16 (2550); // == -operator Assert ("TestA#1", (Test100 == Test100II).Value); Assert ("TestA#2", !(Test165 == Test100).Value); Assert ("TestA#3", (Test165 == SqlInt16.Null).IsNull); // != -operator Assert ("TestB#1", !(Test100 != Test100II).Value); Assert ("TestB#2", (Test100 != Test255).Value); Assert ("TestB#3", (Test165 != Test255).Value); Assert ("TestB#4", (Test165 != SqlInt16.Null).IsNull); // > -operator Assert ("TestC#1", (Test165 > Test100).Value); Assert ("TestC#2", !(Test165 > Test255).Value); Assert ("TestC#3", !(Test100 > Test100II).Value); Assert ("TestC#4", (Test165 > SqlInt16.Null).IsNull); // >= -operator Assert ("TestD#1", !(Test165 >= Test255).Value); Assert ("TestD#2", (Test255 >= Test165).Value); Assert ("TestD#3", (Test100 >= Test100II).Value); Assert ("TestD#4", (Test165 >= SqlInt16.Null).IsNull); // < -operator Assert ("TestE#1", !(Test165 < Test100).Value); Assert ("TestE#2", (Test165 < Test255).Value); Assert ("TestE#3", !(Test100 < Test100II).Value); Assert ("TestE#4", (Test165 < SqlInt16.Null).IsNull); // <= -operator Assert ("TestF#1", (Test165 <= Test255).Value); Assert ("TestF#2", !(Test255 <= Test165).Value); Assert ("TestF#3", (Test100 <= Test100II).Value); Assert ("TestF#4", (Test165 <= SqlInt16.Null).IsNull); } public void TestOnesComplementOperator() { SqlInt16 Test12 = new SqlInt16 (12); SqlInt16 Test128 = new SqlInt16 (128); AssertEquals ("Test#1", (SqlInt16)(-13), ~Test12); AssertEquals ("Test#2", (SqlInt16)(-129), ~Test128); AssertEquals ("Test#3", SqlInt16.Null, ~SqlInt16.Null); } public void TestUnaryNegation() { SqlInt16 Test = new SqlInt16 (2000); SqlInt16 TestNeg = new SqlInt16 (-3000); SqlInt16 Result = -Test; AssertEquals ("Test#1", (short)(-2000), Result.Value); Result = -TestNeg; AssertEquals ("Test#2", (short)3000, Result.Value); } public void TestSqlBooleanToSqlInt16() { SqlBoolean TestBoolean = new SqlBoolean (true); SqlInt16 Result; Result = (SqlInt16)TestBoolean; AssertEquals ("Test#1", (short)1, Result.Value); Result = (SqlInt16)SqlBoolean.Null; Assert ("Test#2", Result.IsNull); } public void TestSqlDecimalToSqlInt16() { SqlDecimal TestDecimal64 = new SqlDecimal (64); SqlDecimal TestDecimal900 = new SqlDecimal (90000); AssertEquals("Test#1", (short)64, ((SqlInt16)TestDecimal64).Value); AssertEquals("Test#2", SqlInt16.Null, ((SqlInt16)SqlDecimal.Null)); try { SqlInt16 test = (SqlInt16)TestDecimal900; Fail("Test#3"); } catch (Exception e) { AssertEquals("Test#4", typeof(OverflowException), e.GetType()); } } public void TestSqlDoubleToSqlInt16() { SqlDouble TestDouble64 = new SqlDouble (64); SqlDouble TestDouble900 = new SqlDouble (90000); AssertEquals ("Test#1", (short)64, ((SqlInt16)TestDouble64).Value); AssertEquals ("Test#2", SqlInt16.Null, ((SqlInt16)SqlDouble.Null)); try { SqlInt16 test = (SqlInt16)TestDouble900; Fail ("Test#3"); } catch (Exception e) { AssertEquals("Test#4", typeof (OverflowException), e.GetType ()); } } public void TestSqlIntToInt16() { SqlInt16 Test = new SqlInt16(12); Int16 Result = (Int16)Test; AssertEquals("Test#1", (short)12, Result); } public void TestSqlInt32ToSqlInt16() { SqlInt32 Test64 = new SqlInt32 (64); SqlInt32 Test900 = new SqlInt32 (90000); AssertEquals ("Test#1", (short)64, ((SqlInt16)Test64).Value); try { SqlInt16 test = (SqlInt16)Test900; Fail("Test#2"); } catch (Exception e) { AssertEquals ("Test#3", typeof (OverflowException), e.GetType ()); } } public void TestSqlInt64ToSqlInt16() { SqlInt64 Test64 = new SqlInt64 (64); SqlInt64 Test900 = new SqlInt64 (90000); AssertEquals ("Test#1", (short)64, ((SqlInt16)Test64).Value); try { SqlInt16 test = (SqlInt16)Test900; Fail ("Test#2"); } catch (Exception e) { AssertEquals("Test#3", typeof (OverflowException), e.GetType ()); } } public void TestSqlMoneyToSqlInt16() { SqlMoney TestMoney64 = new SqlMoney(64); SqlMoney TestMoney900 = new SqlMoney(90000); AssertEquals ("Test#1", (short)64, ((SqlInt16)TestMoney64).Value); try { SqlInt16 test = (SqlInt16)TestMoney900; Fail ("Test#2"); } catch (Exception e) { AssertEquals("test#3", typeof (OverflowException), e.GetType ()); } } public void TestSqlSingleToSqlInt16() { SqlSingle TestSingle64 = new SqlSingle(64); SqlSingle TestSingle900 = new SqlSingle(90000); AssertEquals("Test#1", (short)64, ((SqlInt16)TestSingle64).Value); try { SqlInt16 test = (SqlInt16)TestSingle900; Fail ("Test#2"); } catch (Exception e) { AssertEquals ("Test#3", typeof (OverflowException), e.GetType ()); } } public void TestSqlStringToSqlInt16() { SqlString TestString = new SqlString("Test string"); SqlString TestString100 = new SqlString("100"); SqlString TestString1000 = new SqlString("100000"); AssertEquals ("Test#1", (short)100, ((SqlInt16)TestString100).Value); try { SqlInt16 test = (SqlInt16)TestString1000; Fail ("Test#2"); } catch(Exception e) { AssertEquals ("Test#3", typeof (OverflowException), e.GetType ()); } try { SqlInt16 test = (SqlInt16)TestString; Fail ("Test#3"); } catch(Exception e) { AssertEquals ("Test#4", typeof (FormatException), e.GetType ()); } } public void TestByteToSqlInt16() { short TestShort = 14; AssertEquals ("Test#1", (short)14, ((SqlInt16)TestShort).Value); } } } --------------Boundary-00=_9XHMQMWTR4MWNE6NYNKM-- From DENNISH@Raytek.com Mon Oct 7 20:04:41 2002 From: DENNISH@Raytek.com (Dennis Hayes) Date: Mon, 7 Oct 2002 12:04:41 -0700 Subject: [Mono-list] using the vb.net dll from C# Message-ID: >Some think that Microsoft.VisualBasic.DLL only contains support for >OLD-STYLE VB.NET code, but that is not true, many useful features of the >language depend, "behind-the-curtains", on code that resides in that DLL. Actually I include the vb.net.dll in my C# code. I need the ms.VB.interaction.beep function. Is there a beep function in C# or .net (outside of the VB.net dll)? any problem using functions from the vb.net dll in C#? I have tested it some and have seen on problems. Dennis From miguel@ximian.com Tue Oct 8 04:55:31 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 07 Oct 2002 23:55:31 -0400 Subject: [Mono-list] Introduction In-Reply-To: <004601c26c86$349913e0$0301a8c0@einstein> References: <002501c26bfc$4fc50dc0$0301a8c0@einstein> <1033816433.25214.19.camel@localhost.localdomain> <004601c26c86$349913e0$0301a8c0@einstein> Message-ID: <1034049331.25134.85.camel@erandi.boston.ximian.com> Hello! > I was the one posting the link to the BigNum. However I didn't have much > news abut the author. I think that Miguel talked to him (or at least tried > to). These classes would bea great benefit to Mono. I indeed tried to, but the only way to get in touch with him is through the web-based forum system, and I have failed to give it the attention it requires. I do not know where it even was anymore ;-( Miguel From martin_aliger@email.cz Tue Oct 8 08:57:38 2002 From: martin_aliger@email.cz (Martin Aliger) Date: Tue, 8 Oct 2002 09:57:38 +0200 (CEST) Subject: [Mono-list] Re: mcs paramaters [formerly mcs question] Message-ID: <3DA28FF2.000001.27049@email1.atc.cz> Hi all, 1/ > What means this message? : > error CS-0018: Cannot find any symbol writer > > MS docs wittily skips it... Seems I must answer myself: it is thrown when --debug parameter is used. Why? Am I missing something? 2/ Try this: type "mcs --unsafe @unix.args" in "class/corlib" directory. It throws unhandled NullRefEx for me (mcs bug?) Martin ______________________________________________________________________________ Nej¹ir¹í nabídka PC komponent v ÈR - http://www.levi.cz Neváhejte a srovnejte mo¾nosti dne¹ního hardware. From kgeorge@plovdiv.techno-link.com Tue Oct 8 08:55:13 2002 From: kgeorge@plovdiv.techno-link.com (George Kodinov) Date: Tue, 08 Oct 2002 10:55:13 +0300 Subject: [Mono-list] Mono embedding and threads Message-ID: <3DA28F61.5050700@plovdiv.techno-link.com> Hi, I'm trying to embed the Mono runtime into a Linux pthreads application (so it can execute multiple managed code instances independantly). What is the correct way of going about it ? Can I for example create multiple instances of the Mono runtime (mono_jit_init) ? Or should I go about having one Mono instance and use some form of serialization ? Are there any special considerations/function wrappers re. Boehm GC usage ? Best Regards, George Kodinov From paulo.pinto@altitude.com Tue Oct 8 15:35:01 2002 From: paulo.pinto@altitude.com (Paulo Pinto) Date: Tue, 8 Oct 2002 15:35:01 +0100 Subject: [Mono-list] M$ is forbiding developers from running .Net programs in Non-Windows systems Message-ID: <006201c26ed8$d07ab850$3a00050a@nagasaki> It appears that Micro$oft is forbiding .Net developers to deploy .Net applications in non-Windows systems. They have changed the .Net SDK Eula. Now they have a section that says "...(ii) that the Redistributables only operate in conjunction with Microsoft Windows platforms;..." You can read for yourself at http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnnetdep/ht ml/addendeula.asp Paulo Pinto From manyoso@yahoo.com Tue Oct 8 15:45:27 2002 From: manyoso@yahoo.com (Adam Treat) Date: Tue, 8 Oct 2002 10:45:27 -0400 Subject: [Mono-list] M$ is forbiding developers from running .Net programs in Non-Windows systems In-Reply-To: <006201c26ed8$d07ab850$3a00050a@nagasaki> References: <006201c26ed8$d07ab850$3a00050a@nagasaki> Message-ID: <200210081045.27418.manyoso@yahoo.com> Please reread your link. This is only concerning the .NET 'Redistributable'. The redistributable is one version of the .NET Framework SDK that Microsoft allows to be redistributed in binary form under a certain set of licensing conditions. This is analogous to Microsoft allowing the .NET runtime to be bundled as a static library with .NET applications, but only under some specific license terms. *This _does not_ say that .NET applications produced with the .NET SDK are forbidden from distribution or deployment on other platforms.* Adam On Tuesday 08 October 2002 10:35 am, Paulo Pinto wrote: > It appears that Micro$oft is forbiding .Net > developers to deploy .Net applications in > non-Windows systems. > > They have changed the .Net SDK Eula. > > Now they have a section that says > "...(ii) that the Redistributables only > operate in conjunction with Microsoft > Windows platforms;..." > > > You can read for yourself at > > http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnnetdep/h >t ml/addendeula.asp > > > Paulo Pinto > > > _______________________________________________ > Mono-list maillist - Mono-list@ximian.com > http://lists.ximian.com/mailman/listinfo/mono-list From lupus@ximian.com Tue Oct 8 15:47:47 2002 From: lupus@ximian.com (Paolo Molaro) Date: Tue, 8 Oct 2002 16:47:47 +0200 Subject: [Mono-list] Mono embedding and threads In-Reply-To: <3DA28F61.5050700@plovdiv.techno-link.com> References: <3DA28F61.5050700@plovdiv.techno-link.com> Message-ID: <20021008144747.GW19193@debian.org> On 10/08/02 George Kodinov wrote: > I'm trying to embed the Mono runtime into a Linux pthreads application > (so it can execute multiple managed code instances independantly). > What is the correct way of going about it ? > Can I for example create multiple instances of the Mono runtime > (mono_jit_init) ? No. mono_jit_init() should be called only once. You should be able to create separate domains if needed and execute code in them. It's probably easier to initiate this from within C# code, since I don't think there's an easy to use API to do it from C, yet. If you need multiple managed threads, I suggest starting them from C# code, too. > Are there any special considerations/function wrappers re. Boehm GC usage ? The Boehm GC needs to intercept a few pthread calls: you just need to include the gc.h header file in every C file that uses the pthread calls and then you need to compile your program with an additional #define (according to the OS, it's -DGC_LINUX_THREADS on linux). lupus -- ----------------------------------------------------------------- lupus@debian.org debian/rules lupus@ximian.com Monkeys do it better From lupus@ximian.com Tue Oct 8 16:28:14 2002 From: lupus@ximian.com (Paolo Molaro) Date: Tue, 8 Oct 2002 17:28:14 +0200 Subject: [Mono-list] Re: dynamic optimizations in Mono JIT In-Reply-To: <1033979246.17630.39.camel@tequila> References: <200210052329.ABY01532@express.cites.uiuc.edu> <1033979246.17630.39.camel@tequila> Message-ID: <20021008152814.GX19193@debian.org> On 10/07/02 Dietmar Maurer wrote: > On Sun, 2002-10-06 at 01:29, James Roberts wrote: > > The ideal goal of the project would be to continuously > > improve application performance using a lightweight profiler > > in conjunction with on-line translator/optimizer. However, > > since this is only a semester project, it would be sufficient > > to persue only a subset of those goals (e.g. a novel > > lightweight profiling technique, or simply an interesting > > feedback directed optimization for byte code translation). > > > > I was wondering if you had any pending problems or project > > ideas in the Mono JIT which fell into this category and which > > would be feasible for a medium-sized class project. > > Likewise, I would greatly appreciate any pointers that you > > could give me regarding the high-level implementation of the > > Mono JIT. As dietmar told you, we have a profiling interface, but that is more directed at profiling applications that run in mono rather than to instrument the code to recompile or optimize the generated code. We're very interested in feedback directed optimizations (either online, like, when running the program) or offline (run the programs a few times collecting profile information and save them somewhere: the next time the JIT runs it knows what methods it should fully optimize from the start). This kind of profiling will be very valuable for us, since we're writing a new JIT compiler that has more optimizations than the current one and some of them may be too slow to enable by default for all the methods. I guess you can still experiment with the current JIT, by disabling gloabl register allocation by default and using it only when recompiling methods that profiling shows to be hotspots. Are you interested more in collecting profile data or in optimizing the code? In the first case you can either use simple counters or (more interesting) use something like oprofile to collect info (oprofile uses the hw cpu counters). I'm personally more interested in seeing profile data collected for jitted programs with oprofile. If you're interested in optimiing the code once hotspots have been identified, you can: 1) tune the jit knobs to produce better code (global reg allocation) 2) write more optimizations for the jit. 3) enhance the binary code directly (interesting but less useful) For item 2 I suggest waiting a few weeks for the new jit to come into existance since that will be more easily improved (and I guess you need time to design and collect profile data first anyway...). lupus -- ----------------------------------------------------------------- lupus@debian.org debian/rules lupus@ximian.com Monkeys do it better From lupus@ximian.com Tue Oct 8 16:31:45 2002 From: lupus@ximian.com (Paolo Molaro) Date: Tue, 8 Oct 2002 17:31:45 +0200 Subject: [Mono-list] mcs question In-Reply-To: <3D9DBADF.000001.20409@email1.atc.cz> References: <3D9DBADF.000001.20409@email1.atc.cz> Message-ID: <20021008153145.GY19193@debian.org> On 10/04/02 Martin Aliger wrote: > This time I come with question [finally] :) > > What means this message? : > error CS-0018: Cannot find any symbol writer To get debugging output with mcs you need to compile the assembly in mcs/class/Mono.CSharp.Debugger and install it. lupus -- ----------------------------------------------------------------- lupus@debian.org debian/rules lupus@ximian.com Monkeys do it better From lupus@ximian.com Tue Oct 8 16:48:16 2002 From: lupus@ximian.com (Paolo Molaro) Date: Tue, 8 Oct 2002 17:48:16 +0200 Subject: [Mono-list] Quick Question... In-Reply-To: <20021003195532.A4632@md3.vsnl.net.in> References: <002a01c26ac3$e2520bf0$010aa8c0@roithw2k> <20021003195532.A4632@md3.vsnl.net.in> Message-ID: <20021008154816.GZ19193@debian.org> On 10/03/02 Zaphod wrote: > Hmm... after that , I still can't understand why mono is yet another > dependency hellhole ... I've tried compiling gcc before and understand > bootstrapping , but this is insane !!! .. There are a few things you can do if you don't know how to fix a boostrap issue yourself: 1) use the snapshots: they contain up to date binaries 2) use the script that someone recently posted to mono-list that tries to build the runtime and classes a few times in possibly different orders 3) wait for a release 4) ask someone to send you an updated binary 5) do the build in the order documented in the FAQ Take your pick. > I've tried DotGNU and found that CVS compiled out of the box , can I There's a simple reason for that: since DotGNU can't yet bootstrap itself, it uses libraries precompiled with csc on MS windows, so it doesn't actually compile the core classes. > use that to compile mcs Or is there a vendor conflict there as well ? There is no vendor conflict: if their compiler can compile the C# code used in our source, you can use it just fine (but, AFAIK there are still several missing features in it that prevent that). lupus -- ----------------------------------------------------------------- lupus@debian.org debian/rules lupus@ximian.com Monkeys do it better From ndrochak@gol.com Tue Oct 8 17:25:28 2002 From: ndrochak@gol.com (Nick Drochak) Date: Wed, 9 Oct 2002 01:25:28 +0900 Subject: [Mono-list] Contributing to Mono: Unit Tests Message-ID: <000201c26ee7$697f3400$0100a8c0@screamii> All, If you want to help out with the unit tests on Linux, but have been reluctant because of the need for a Windows box, your time has come. Actually the time came a while ago, but I never really noticed it and probably others missed it as well. Thanks to the fine efforts of the build-meisters (especially Gonzalo) we can build and run the unit tests all on Linux. Of course you need a working mono installed on your system, but that's another well tread topic... For those who would like to try it yourself, in the mcs directory from cvs do: make -f makefile.gnu make -f makefile.gnu test It's only running the tests for corlib right now, but there's plenty of errors and failures to work on there to keep us busy. Plus, it's probably a simple matter to copy-paste some makefile magic and get more tests to run if you like. In any case, please give it a try and if you need any help with this or fixing/making more unit tests, please post your questions here to the list. Go mono! Nick D. From ndrochak@gol.com Tue Oct 8 17:27:37 2002 From: ndrochak@gol.com (Nick Drochak) Date: Wed, 9 Oct 2002 01:27:37 +0900 Subject: [Mono-list] Nunit 2.0 on mono Message-ID: <000301c26ee7$a08819d0$0100a8c0@screamii> Has anyone else tried to get Nunit 2.0 to build and/or work on mono/linux? I spent some time on it, but failed to get any tests to run. I wondered if anyone else has gotten further than I before I put in more effort. Thanks, Nick D. From is118149@mail.udlap.mx Tue Oct 8 19:49:34 2002 From: is118149@mail.udlap.mx (Carlos Alberto Cortez) Date: Tue, 8 Oct 2002 13:49:34 -0500 (CDT) Subject: [Mono-list] Differences mono/mint Message-ID: Hello there: I'm looking for a text for undertanding the differenes between the mono comand and the mint comand ( yes, I know some about it, but not enough ). So, where do you think I can find a paper about it ? Regards, Carlos. ----------------------------------- "Quienes se esfuerzan en vivir, no son mas que cobardes que son incapaces de dar la cara ante la verdad fundamental de la vida: el desconocernos a nosotros mismos . " From groith@tcrz.net Tue Oct 8 21:17:49 2002 From: groith@tcrz.net (Guenther Roith) Date: Tue, 8 Oct 2002 22:17:49 +0200 Subject: [Mono-list] public beta of MS Framework 1.1 Message-ID: <001101c26f07$c68c68a0$010aa8c0@roithw2k> Hello, everbody! FYI, MS has just made the private 1.1 beta public. http://msdn.microsoft.com/downloads/default.asp?url=/downloads/sample.asp?ur l=/MSDN-FILES/027/002/056/msdncompositedoc.xml Johannes From martin@gnome.org Tue Oct 8 22:55:27 2002 From: martin@gnome.org (Martin Baulig) Date: 08 Oct 2002 23:55:27 +0200 Subject: [Mono-list] mcs question In-Reply-To: <3D9DBADF.000001.20409@email1.atc.cz> References: <3D9DBADF.000001.20409@email1.atc.cz> Message-ID: <86vg4c4muo.fsf@einstein.home-of-linux.org> Martin Aliger writes: > What means this message? : > error CS-0018: Cannot find any symbol writer Hi, it means that you don't have any symbol writer installed. If you're on GNU/Linux, make sure you compiled and installed mcs/class/Mono.CSharp.Debugger. If you're on Windows, don't use --debug, you can't use debugging there. -- Martin Baulig martin@gnome.org From martin@gnome.org Tue Oct 8 22:58:46 2002 From: martin@gnome.org (Martin Baulig) Date: 08 Oct 2002 23:58:46 +0200 Subject: [Mono-list] Re: mcs paramaters [formerly mcs question] In-Reply-To: <3DA28FF2.000001.27049@email1.atc.cz> References: <3DA28FF2.000001.27049@email1.atc.cz> Message-ID: <86r8f04mp5.fsf@einstein.home-of-linux.org> Martin Aliger writes: > 2/ Try this: > type "mcs --unsafe @unix.args" in "class/corlib" directory. It throws unhandled NullRefEx for me (mcs bug?) Hi, I can't reproduce this problem, it works fine for me. Can you please file a detailed bug report in Bugzilla and include a full backtrace ? Please do also mention which version of corlib you're trying to compile (an exact date/time would be very helpful) so I can get the same corlib and try to compile it myself. -- Martin Baulig martin@gnome.org From brianlritchie@hotmail.com Wed Oct 9 02:39:09 2002 From: brianlritchie@hotmail.com (Brian Ritchie) Date: Tue, 08 Oct 2002 21:39:09 -0400 Subject: [Mono-list] ODBC.NET Data Provider Message-ID: Sounds good, I've got a little more work before I send in the patch. I don't want to send in anything that is too raw :) Has anyone looked at .NET 1.1 yet? I'm assuming they are moving the Odbc stuff under the System.Data namespace...so that is how my stuff is setup. (System.Data.Odbc) Have you guys talked about providing any basic db tools with the mono framework? Like a isql-style command line tool? This might be a good way for people to test their database connections, etc. Keep up the good work guys...the framework is looking good. Brian >From: "Daniel Morgan" >To: "Brian Ritchie" , >Subject: RE: [Mono-list] ODBC.NET Data Provider >Date: Mon, 7 Oct 2002 01:08:32 -0400 > >Brian, > >This is good news. > >Can provide us with a patch please in an email to the mono-list@ximian.com? >If you don't know how to make a patch, you can look here on how: >http://www.go-mono.com/ccvs.html > >This way people can get a preview of your work and be able to help >contribute too. Since unixODBC supports so many databases, it will >definitely be appreciated. > >Do you know if unixODBC works on Windows? > >Thanks, >Daniel > >-----Original Message----- >From: mono-list-admin@ximian.com [mailto:mono-list-admin@ximian.com]On >Behalf Of Brian Ritchie >Sent: Monday, October 07, 2002 12:02 AM >To: danmorg@sc.rr.com; mono-list@ximian.com >Subject: RE: [Mono-list] ODBC.NET Data Provider > > >Daniel, > >Thanks for the quick response. I have basic implementations of >OdbcConnection, OdbcCommand, OdbcDataReader, OdbcParameter, and >OdbcParameterCollection. It can execute queries and display result sets >(and ExecuteNonQuery too). I'm currently working on the Parameter & >Transaction support. I've been doing my development on Debian against a >DB2 >7.2 UDB. > >Brian > > > >From: "Daniel Morgan" > >To: "Brian Ritchie" , > >Subject: RE: [Mono-list] ODBC.NET Data Provider > >Date: Sun, 6 Oct 2002 22:51:07 -0400 > > > >Brian > > > >No one is working on the ODBC.NET Data Provider as far as i know. Just > >attach your diff in an email, and someone, such as (passing the buck - > >hehehe) Rodrigo Moya can do that for you. Rodrigo is the coordinator for > >the > >ADO.NET technology in Mono. > > > >What can you do witht he provider so far? Can you connect to a database > >yet? How about run any queries? Or is it just C# bindings to the >unixODBC > >library(ies) right now? > > > >Daniel > > > >-----Original Message----- > >From: mono-list-admin@ximian.com [mailto:mono-list-admin@ximian.com]On > >Behalf Of Brian Ritchie > >Sent: Sunday, October 06, 2002 10:03 PM > >To: mono-list@ximian.com > >Subject: [Mono-list] ODBC.NET Data Provider > > > > > >Is anyone working on a ODBC data provider? I've started one using >unixodbc > >and I'd like to contribute it to the project. > > > >Brian > > > > > > > >_________________________________________________________________ > >Chat with friends online, try MSN Messenger: http://messenger.msn.com > > > > > >_______________________________________________ > >Mono-list maillist - Mono-list@ximian.com > >http://lists.ximian.com/mailman/listinfo/mono-list > > > > > >_______________________________________________ > >Mono-list maillist - Mono-list@ximian.com > >http://lists.ximian.com/mailman/listinfo/mono-list > > > > >_________________________________________________________________ >Send and receive Hotmail on your mobile device: http://mobile.msn.com > > >_______________________________________________ >Mono-list maillist - Mono-list@ximian.com >http://lists.ximian.com/mailman/listinfo/mono-list > > >_______________________________________________ >Mono-list maillist - Mono-list@ximian.com >http://lists.ximian.com/mailman/listinfo/mono-list _________________________________________________________________ Send and receive Hotmail on your mobile device: http://mobile.msn.com From danmorg@sc.rr.com Wed Oct 9 04:11:06 2002 From: danmorg@sc.rr.com (Daniel Morgan) Date: Tue, 8 Oct 2002 23:11:06 -0400 Subject: [Mono-list] ODBC.NET Data Provider In-Reply-To: Message-ID: Brian, Being able to connet to a database and do queries is a milestone in itself. It wouldn't hurt to go ahead and check it into cvs. Besides, I feel safer anything I have worked on has been put into cvs because I know Ximian guys keep things backed up unlike my computer. :-) I don't know what the namespace or assembly for the ODBC provider in .NET 1.1, but the MSDN download of the ODBC provider for .NET 1.0 uses Microsoft.Data.Odbc as the namespace and Microsoft.Data.Odbc.dll as the assembly name. We have SQL# which is a command-line SQL query tool written in C# that can connect to various databases using the various ADO.NET providers. It can be found at mcs/class/System.Data/Test/SqlSharpCli.cs However, don't be to disappointed in the tool, it was mainly meant for testing Mono's System.Data. What would be nice is to have a MS SQL Server 2000 Enterprise Manager, Query Analyzer, or TOAD like tool for Mono System.Data written in C# and using GTK#. Daniel -----Original Message----- From: mono-list-admin@ximian.com [mailto:mono-list-admin@ximian.com]On Behalf Of Brian Ritchie Sent: Tuesday, October 08, 2002 9:39 PM To: danmorg@sc.rr.com; mono-list@ximian.com Subject: RE: [Mono-list] ODBC.NET Data Provider Sounds good, I've got a little more work before I send in the patch. I don't want to send in anything that is too raw :) Has anyone looked at .NET 1.1 yet? I'm assuming they are moving the Odbc stuff under the System.Data namespace...so that is how my stuff is setup. (System.Data.Odbc) Have you guys talked about providing any basic db tools with the mono framework? Like a isql-style command line tool? This might be a good way for people to test their database connections, etc. Keep up the good work guys...the framework is looking good. Brian >From: "Daniel Morgan" >To: "Brian Ritchie" , >Subject: RE: [Mono-list] ODBC.NET Data Provider >Date: Mon, 7 Oct 2002 01:08:32 -0400 > >Brian, > >This is good news. > >Can provide us with a patch please in an email to the mono-list@ximian.com? >If you don't know how to make a patch, you can look here on how: >http://www.go-mono.com/ccvs.html > >This way people can get a preview of your work and be able to help >contribute too. Since unixODBC supports so many databases, it will >definitely be appreciated. > >Do you know if unixODBC works on Windows? > >Thanks, >Daniel > >-----Original Message----- >From: mono-list-admin@ximian.com [mailto:mono-list-admin@ximian.com]On >Behalf Of Brian Ritchie >Sent: Monday, October 07, 2002 12:02 AM >To: danmorg@sc.rr.com; mono-list@ximian.com >Subject: RE: [Mono-list] ODBC.NET Data Provider > > >Daniel, > >Thanks for the quick response. I have basic implementations of >OdbcConnection, OdbcCommand, OdbcDataReader, OdbcParameter, and >OdbcParameterCollection. It can execute queries and display result sets >(and ExecuteNonQuery too). I'm currently working on the Parameter & >Transaction support. I've been doing my development on Debian against a >DB2 >7.2 UDB. > >Brian > > > >From: "Daniel Morgan" > >To: "Brian Ritchie" , > >Subject: RE: [Mono-list] ODBC.NET Data Provider > >Date: Sun, 6 Oct 2002 22:51:07 -0400 > > > >Brian > > > >No one is working on the ODBC.NET Data Provider as far as i know. Just > >attach your diff in an email, and someone, such as (passing the buck - > >hehehe) Rodrigo Moya can do that for you. Rodrigo is the coordinator for > >the > >ADO.NET technology in Mono. > > > >What can you do witht he provider so far? Can you connect to a database > >yet? How about run any queries? Or is it just C# bindings to the >unixODBC > >library(ies) right now? > > > >Daniel > > > >-----Original Message----- > >From: mono-list-admin@ximian.com [mailto:mono-list-admin@ximian.com]On > >Behalf Of Brian Ritchie > >Sent: Sunday, October 06, 2002 10:03 PM > >To: mono-list@ximian.com > >Subject: [Mono-list] ODBC.NET Data Provider > > > > > >Is anyone working on a ODBC data provider? I've started one using >unixodbc > >and I'd like to contribute it to the project. > > > >Brian From brianlritchie@hotmail.com Wed Oct 9 05:33:52 2002 From: brianlritchie@hotmail.com (Brian Ritchie) Date: Wed, 09 Oct 2002 00:33:52 -0400 Subject: [Mono-list] ODBC.NET Data Provider Message-ID: Daniel, Do I need to get setup with CVS access first? Brian >From: "Daniel Morgan" >To: "Brian Ritchie" , >Subject: RE: [Mono-list] ODBC.NET Data Provider >Date: Tue, 8 Oct 2002 23:11:06 -0400 > >Brian, > >Being able to connet to a database and do queries is a milestone in itself. >It wouldn't hurt to go ahead and check it into cvs. Besides, I feel safer >anything I have worked on has been put into cvs because I know Ximian guys >keep things backed up unlike my computer. :-) > >I don't know what the namespace or assembly for the ODBC provider in .NET >1.1, but the MSDN download of the ODBC provider for .NET 1.0 uses >Microsoft.Data.Odbc as the namespace and Microsoft.Data.Odbc.dll as the >assembly name. > >We have SQL# which is a command-line SQL query tool written in C# that can >connect to various databases using the various ADO.NET providers. It can >be >found >at mcs/class/System.Data/Test/SqlSharpCli.cs However, don't be to >disappointed in the tool, it was mainly meant for testing Mono's >System.Data. > >What would be nice is to have a MS SQL Server 2000 Enterprise Manager, >Query >Analyzer, or TOAD like tool for Mono System.Data written in C# and using >GTK#. > >Daniel > >-----Original Message----- >From: mono-list-admin@ximian.com [mailto:mono-list-admin@ximian.com]On >Behalf Of Brian Ritchie >Sent: Tuesday, October 08, 2002 9:39 PM >To: danmorg@sc.rr.com; mono-list@ximian.com >Subject: RE: [Mono-list] ODBC.NET Data Provider > > >Sounds good, I've got a little more work before I send in the patch. I >don't want to send in anything that is too raw :) > >Has anyone looked at .NET 1.1 yet? I'm assuming they are moving the Odbc >stuff under the System.Data namespace...so that is how my stuff is setup. >(System.Data.Odbc) > >Have you guys talked about providing any basic db tools with the mono >framework? Like a isql-style command line tool? This might be a good way >for people to test their database connections, etc. > >Keep up the good work guys...the framework is looking good. > >Brian > > > >From: "Daniel Morgan" > >To: "Brian Ritchie" , > >Subject: RE: [Mono-list] ODBC.NET Data Provider > >Date: Mon, 7 Oct 2002 01:08:32 -0400 > > > >Brian, > > > >This is good news. > > > >Can provide us with a patch please in an email to the >mono-list@ximian.com? > >If you don't know how to make a patch, you can look here on how: > >http://www.go-mono.com/ccvs.html > > > >This way people can get a preview of your work and be able to help > >contribute too. Since unixODBC supports so many databases, it will > >definitely be appreciated. > > > >Do you know if unixODBC works on Windows? > > > >Thanks, > >Daniel > > > >-----Original Message----- > >From: mono-list-admin@ximian.com [mailto:mono-list-admin@ximian.com]On > >Behalf Of Brian Ritchie > >Sent: Monday, October 07, 2002 12:02 AM > >To: danmorg@sc.rr.com; mono-list@ximian.com > >Subject: RE: [Mono-list] ODBC.NET Data Provider > > > > > >Daniel, > > > >Thanks for the quick response. I have basic implementations of > >OdbcConnection, OdbcCommand, OdbcDataReader, OdbcParameter, and > >OdbcParameterCollection. It can execute queries and display result sets > >(and ExecuteNonQuery too). I'm currently working on the Parameter & > >Transaction support. I've been doing my development on Debian against a > >DB2 > >7.2 UDB. > > > >Brian > > > > > > >From: "Daniel Morgan" > > >To: "Brian Ritchie" , > > >Subject: RE: [Mono-list] ODBC.NET Data Provider > > >Date: Sun, 6 Oct 2002 22:51:07 -0400 > > > > > >Brian > > > > > >No one is working on the ODBC.NET Data Provider as far as i know. Just > > >attach your diff in an email, and someone, such as (passing the buck - > > >hehehe) Rodrigo Moya can do that for you. Rodrigo is the coordinator >for > > >the > > >ADO.NET technology in Mono. > > > > > >What can you do witht he provider so far? Can you connect to a >database > > >yet? How about run any queries? Or is it just C# bindings to the > >unixODBC > > >library(ies) right now? > > > > > >Daniel > > > > > >-----Original Message----- > > >From: mono-list-admin@ximian.com [mailto:mono-list-admin@ximian.com]On > > >Behalf Of Brian Ritchie > > >Sent: Sunday, October 06, 2002 10:03 PM > > >To: mono-list@ximian.com > > >Subject: [Mono-list] ODBC.NET Data Provider > > > > > > > > >Is anyone working on a ODBC data provider? I've started one using > >unixodbc > > >and I'd like to contribute it to the project. > > > > > >Brian _________________________________________________________________ Send and receive Hotmail on your mobile device: http://mobile.msn.com From martin_aliger@email.cz Wed Oct 9 06:29:41 2002 From: martin_aliger@email.cz (Martin Aliger) Date: Wed, 9 Oct 2002 07:29:41 +0200 (CEST) Subject: [Mono-list] NAnt Message-ID: <3DA3BEC5.000001.29071@email1.atc.cz> Hi all, I finally completed all issues to compile mono class library with new NAnt. I will be pleased when someone with CVS access look into it and maybe even merge it into CVS. This is little longer due to need to change .build and some of @list files. Next step should be review of makefiles system, but I leave it to someone more competent... Hope this helps mono library building process a little bit Martin Attachment is here [http://maliger.webpark.cz/mono-nant.tar.gz] (mail attach must be <50kB) PS: attached mono sources is based on 0.7.9 version and are modified by me. All changes are submited to nant developer team as well. ______________________________________________________________________________ Nová vùnì HUGO BOSS a dal¹í svìtové kosmetické znaèky v nejvìt¹í èeské internetové parfumerii. http://www.email.cz/fann From danmorg@sc.rr.com Wed Oct 9 06:40:07 2002 From: danmorg@sc.rr.com (Daniel Morgan) Date: Wed, 9 Oct 2002 01:40:07 -0400 Subject: [Mono-list] ODBC.NET Data Provider In-Reply-To: Message-ID: Hey Brian, Once you contribute something, you can get a cvs account. You can attach your patch or files in an email to this list. Someone like Rodrigo, me, or someone else would be happy to commit it for you. Rodrigo is real good at this because he does a code review and let's you know what improvements can be done to it. Once something of yours has been contributed, you need to go to http://www.go-mono.com/ccvs.html and follow those directions on getting your own cvs account. Happy hacking, Daniel -----Original Message----- From: mono-list-admin@ximian.com [mailto:mono-list-admin@ximian.com]On Behalf Of Brian Ritchie Sent: Wednesday, October 09, 2002 12:34 AM To: danmorg@sc.rr.com; mono-list@ximian.com Subject: RE: [Mono-list] ODBC.NET Data Provider Daniel, Do I need to get setup with CVS access first? Brian >From: "Daniel Morgan" >To: "Brian Ritchie" , >Subject: RE: [Mono-list] ODBC.NET Data Provider >Date: Tue, 8 Oct 2002 23:11:06 -0400 > >Brian, > >Being able to connet to a database and do queries is a milestone in itself. >It wouldn't hurt to go ahead and check it into cvs. Besides, I feel safer >anything I have worked on has been put into cvs because I know Ximian guys >keep things backed up unlike my computer. :-) > >I don't know what the namespace or assembly for the ODBC provider in .NET >1.1, but the MSDN download of the ODBC provider for .NET 1.0 uses >Microsoft.Data.Odbc as the namespace and Microsoft.Data.Odbc.dll as the >assembly name. > >We have SQL# which is a command-line SQL query tool written in C# that can >connect to various databases using the various ADO.NET providers. It can >be >found >at mcs/class/System.Data/Test/SqlSharpCli.cs However, don't be to >disappointed in the tool, it was mainly meant for testing Mono's >System.Data. > >What would be nice is to have a MS SQL Server 2000 Enterprise Manager, >Query >Analyzer, or TOAD like tool for Mono System.Data written in C# and using >GTK#. > >Daniel > >-----Original Message----- >From: mono-list-admin@ximian.com [mailto:mono-list-admin@ximian.com]On >Behalf Of Brian Ritchie >Sent: Tuesday, October 08, 2002 9:39 PM >To: danmorg@sc.rr.com; mono-list@ximian.com >Subject: RE: [Mono-list] ODBC.NET Data Provider > > >Sounds good, I've got a little more work before I send in the patch. I >don't want to send in anything that is too raw :) > >Has anyone looked at .NET 1.1 yet? I'm assuming they are moving the Odbc >stuff under the System.Data namespace...so that is how my stuff is setup. >(System.Data.Odbc) > >Have you guys talked about providing any basic db tools with the mono >framework? Like a isql-style command line tool? This might be a good way >for people to test their database connections, etc. > >Keep up the good work guys...the framework is looking good. > >Brian > > > >From: "Daniel Morgan" > >To: "Brian Ritchie" , > >Subject: RE: [Mono-list] ODBC.NET Data Provider > >Date: Mon, 7 Oct 2002 01:08:32 -0400 > > > >Brian, > > > >This is good news. > > > >Can provide us with a patch please in an email to the >mono-list@ximian.com? > >If you don't know how to make a patch, you can look here on how: > >http://www.go-mono.com/ccvs.html > > > >This way people can get a preview of your work and be able to help > >contribute too. Since unixODBC supports so many databases, it will > >definitely be appreciated. > > > >Do you know if unixODBC works on Windows? > > > >Thanks, > >Daniel > > > >-----Original Message----- > >From: mono-list-admin@ximian.com [mailto:mono-list-admin@ximian.com]On > >Behalf Of Brian Ritchie > >Sent: Monday, October 07, 2002 12:02 AM > >To: danmorg@sc.rr.com; mono-list@ximian.com > >Subject: RE: [Mono-list] ODBC.NET Data Provider > > > > > >Daniel, > > > >Thanks for the quick response. I have basic implementations of > >OdbcConnection, OdbcCommand, OdbcDataReader, OdbcParameter, and > >OdbcParameterCollection. It can execute queries and display result sets > >(and ExecuteNonQuery too). I'm currently working on the Parameter & > >Transaction support. I've been doing my development on Debian against a > >DB2 > >7.2 UDB. > > > >Brian > > > > > > >From: "Daniel Morgan" > > >To: "Brian Ritchie" , > > >Subject: RE: [Mono-list] ODBC.NET Data Provider > > >Date: Sun, 6 Oct 2002 22:51:07 -0400 > > > > > >Brian > > > > > >No one is working on the ODBC.NET Data Provider as far as i know. Just > > >attach your diff in an email, and someone, such as (passing the buck - > > >hehehe) Rodrigo Moya can do that for you. Rodrigo is the coordinator >for > > >the > > >ADO.NET technology in Mono. > > > > > >What can you do witht he provider so far? Can you connect to a >database > > >yet? How about run any queries? Or is it just C# bindings to the > >unixODBC > > >library(ies) right now? > > > > > >Daniel > > > > > >-----Original Message----- > > >From: mono-list-admin@ximian.com [mailto:mono-list-admin@ximian.com]On > > >Behalf Of Brian Ritchie > > >Sent: Sunday, October 06, 2002 10:03 PM > > >To: mono-list@ximian.com > > >Subject: [Mono-list] ODBC.NET Data Provider > > > > > > > > >Is anyone working on a ODBC data provider? I've started one using > >unixodbc > > >and I'd like to contribute it to the project. > > > > > >Brian _________________________________________________________________ Send and receive Hotmail on your mobile device: http://mobile.msn.com _______________________________________________ Mono-list maillist - Mono-list@ximian.com http://lists.ximian.com/mailman/listinfo/mono-list From noelpaz@sprynet.com Wed Oct 9 04:10:06 2002 From: noelpaz@sprynet.com (Noel Paz) Date: Tue, 8 Oct 2002 21:10:06 -0600 Subject: [Mono-list] I would like to contribute Message-ID: <004401c26f41$61652090$0200a8c0@santana> This is a multi-part message in MIME format. ------=_NextPart_000_0041_01C26F0F.1366C510 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable My name is Noel Paz. I work for Intel and am in the process of joining = the sourceforge project on Open CLI Library project -- starting with = testing. I am currently working on an internal project designing an API = using the .NET framework. I wrote test code for the APIs and some = encryption and load testing routines. We mainly used VB.NET but I can = easily jump to C#. I've written the load testing routines in C# and did = some Web Applications and WebService projects using C#. I also wrote a C = program that did XML parsing I have a strong Windows and Linux OS background and would like to = contribute to this project maybe as a tester or writing some classes = that are not so critical. Thanks You can also write me at work noel.f.paz@intel.com Noel ------=_NextPart_000_0041_01C26F0F.1366C510 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
My name is Noel Paz. I work for Intel = and am in the=20 process of joining the sourceforge project on Open CLI Library project = --=20 starting with testing. I am currently working on an internal project = designing=20 an API using the .NET framework.  I wrote test code for the APIs = and some=20 encryption and load testing routines. We mainly used VB.NET but I can = easily=20 jump to C#. I've written the load testing routines in C# and did some = Web=20 Applications and WebService projects using C#. I also wrote a C program = that did=20 XML parsing
 
I have a strong Windows and Linux OS = background and=20 would like to contribute to this project maybe as a tester or writing = some=20 classes that are not so critical.
 
Thanks
 
You can also write me at work noel.f.paz@intel.com
 
Noel
------=_NextPart_000_0041_01C26F0F.1366C510-- From erik.brakkee@planet.nl Wed Oct 9 08:24:56 2002 From: erik.brakkee@planet.nl (erik) Date: Wed, 9 Oct 2002 09:24:56 +0200 (CEST) Subject: [Mono-list] VB.NET, perl, python, ... Message-ID: <387569.1034148296312.JavaMail.java@localhost> ------=_Part_5_26469.1034148296305 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Hi, I am just interested to know whether or not other languages will be support= ed by the mono project in the future. Would it be possible already to gener= ate byte code for these languages on windows and subsequently run the code = on linux?=20 Cheers Erik ------=_Part_5_26469.1034148296305-- From harnold@gmx.de Wed Oct 9 10:15:38 2002 From: harnold@gmx.de (Holger Arnold) Date: Wed, 9 Oct 2002 11:15:38 +0200 Subject: [Mono-list] Loading multiple versions of the same assembly Message-ID: <200210090830.g998Uco12945@trna.ximian.com> Hello, the current Mono runtime seems to identify assemblies only by their name. What had to be modified to include the version number of an assembly in the identification? My goal is to have multiple versions of the same assembly loaded at one time. Do you think this is possible? Holger From rodrigo@ximian.com Wed Oct 9 12:19:20 2002 From: rodrigo@ximian.com (Rodrigo Moya) Date: 09 Oct 2002 13:19:20 +0200 Subject: [Mono-list] Testclass for SqlInt16 In-Reply-To: <200210072058.21367.vi64pa@koti.soon.fi> References: <200210062116.27090.vi64pa@koti.soon.fi> <200210072058.21367.vi64pa@koti.soon.fi> Message-ID: <1034162360.3731.18.camel@localhost> On Mon, 2002-10-07 at 19:58, ville wrote: > There was litle bug. This one is better. > yes, looks ok, except for the coding style, as I told you last time. That is, please use Mono's coding style, which uses 8-space tabs instead of 2-spaces you are using. Please change it and resend your patch and I'll apply it. cheers -- Rodrigo Moya From rodrigo@ximian.com Wed Oct 9 12:22:21 2002 From: rodrigo@ximian.com (Rodrigo Moya) Date: 09 Oct 2002 13:22:21 +0200 Subject: [Mono-list] ODBC.NET Data Provider In-Reply-To: References: Message-ID: <1034162541.3731.21.camel@localhost> On Wed, 2002-10-09 at 03:39, Brian Ritchie wrote: > Sounds good, I've got a little more work before I send in the patch. I > don't want to send in anything that is too raw :) > > Has anyone looked at .NET 1.1 yet? I'm assuming they are moving the Odbc > stuff under the System.Data namespace...so that is how my stuff is setup. > (System.Data.Odbc) > > Have you guys talked about providing any basic db tools with the mono > framework? Like a isql-style command line tool? This might be a good way > for people to test their database connections, etc. > Daniel wrote SqlSharpCli which is a command line tool for using your databases via System.Data. AFAIK, Dan intends to convert it to a GUI app using GTK# cheers -- Rodrigo Moya From rodrigo@ximian.com Wed Oct 9 12:24:09 2002 From: rodrigo@ximian.com (Rodrigo Moya) Date: 09 Oct 2002 13:24:09 +0200 Subject: [Mono-list] ODBC.NET Data Provider In-Reply-To: References: Message-ID: <1034162649.3731.23.camel@localhost> On Wed, 2002-10-09 at 06:33, Brian Ritchie wrote: > Daniel, > > Do I need to get setup with CVS access first? > usually people send first patches and then they get CVS write access. So please send first your patches, and if they're good, we'll ask for a CVS account for you. cheers -- Rodrigo Moya From ccesario@isic.com.br Wed Oct 9 12:45:25 2002 From: ccesario@isic.com.br (Carlos Cesario) Date: Wed, 09 Oct 2002 08:45:25 -0300 Subject: [Mono-list] Jit error.. Message-ID: <3DA416D5.1090402@isic.com.br> Hi,.. I am with small problem... After to update mono/mcs/xsp (cvs, date 09/october ), I do not obtain more to make server XSP ro run..... All time that access a page appears the following message: ------------------------------------------------------------------- [root@tec14ccesario rundir]# mono server.exe 8000 Remember that you should rerun the server if you change the aspx file! Server started. Accepted connection. Started processing... mono xsp.exe index.aspx Output goes to output/xsp_index.cs Script file is output/xsp_index.aspx.sh mcs --target library -L . -r corlib -r System -r System.Data -r System.Web -r System.Drawing -o output/771656349index.dll output/xsp_index.cs Output goes to output/output_from_compilation_xsp_index.txt Script file is output/last_compilation_xsp_index.bat ** ERROR **: file jit.c: line 541 (mono_cfg_add_successor): assertion failed: (cfg->bcinfo [target].is_block_start) aborting... Aborted ------------------------------------------------------------------ Somebody can help me with this? Greets Carlos Cesario From harnold@gmx.de Wed Oct 9 13:25:57 2002 From: harnold@gmx.de (Holger Arnold) Date: Wed, 9 Oct 2002 14:25:57 +0200 Subject: [Mono-list] Garbage collector in incremental mode? Message-ID: <200210091147.g99Bl4o28887@trna.ximian.com> Does Mono still work with the Boehm garbage collector switched to incremental mode? Is there a particular reason why this is not done by default? Holger From jayaprakash.s@itreya.com Wed Oct 9 14:04:17 2002 From: jayaprakash.s@itreya.com (Jayaprakash S) Date: Wed, 9 Oct 2002 18:34:17 +0530 Subject: [Mono-list] Help Required Message-ID: This is a multi-part message in MIME format. ------=_NextPart_000_0009_01C26FC2.79C6B780 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Dear Friends, I am a novice to .Net, and my company is working on Microsoft .net. we are web solution providers and have done the same in one of a .net product using Microsoft. myself and my company are interested in porting the same application to Linux. we don't know how to proceed. I'll be very thankful if you could help. let me know is it possible and if yes how. please consider that I am a novice to .net Thanking you, Yours Faithfully, Jaya Prakash S, Developer, Itreya Technologies Pvt. Ltd. 3, Sangeetha Towers, 80 Feet Road, Indiranagar, Bangalore 560 038. Phone (Office) +91-80-5200179 ext - 29 Email: jayaprakash.s@itreya.com ------=_NextPart_000_0009_01C26FC2.79C6B780 Content-Type: application/ms-tnef; name="winmail.dat" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="winmail.dat" eJ8+IhENAQaQCAAEAAAAAAABAAEAAQeQBgAIAAAA5AQAAAAAAADoAAEIgAcAGAAAAElQTS5NaWNy b3NvZnQgTWFpbC5Ob3RlADEIAQ2ABAACAAAAAgACAAEGgAMADgAAANIHCgAJABIAIgAAAAMAIwEB A5AGAFwHAAAlAAAACwACAAEAAAALACMAAAAAAAMAJgAAAAAACwApAAAAAAADADYAAAAAAB4AcAAB AAAADgAAAEhlbHAgUmVxdWlyZWQAAAACAXEAAQAAABYAAAABwm+UW6GuwbKGxP5Ch7Zne9qJzW3/ AAACAR0MAQAAAB4AAABTTVRQOkpBWUFQUkFLQVNILlNASVRSRVlBLkNPTQAAAAsAAQ4AAAAAQAAG DgCgflWUb8IBAgEKDgEAAAAYAAAAAAAAADDEFwFsZttIq5+t2Noeo1bCgAAACwAfDgEAAAACAQkQ AQAAAOoCAADmAgAA4wMAAExaRnUsb+rHAwAKAHJjcGcxMjUWMgD4C2BuDhAwMzNPAfcCpARkAgBj aArAc/BldDAgCFUHsgKDAFBvA9QQ2QcTAoB9CoAIyCD2OwliDiA4CbQVUgoyFVFLAoAKgXYIkHdr C4BkOjQMYGMAUAsDC7UgRJplCsFGCIEXQHMsCqIHCoEMkhl3IEkgYW0RGsAgbm8W4GNlIJB0byAu B8B0LBrAoRdAIG15IAWgbQqwZm4ccAQAIHcFsBchZ54gAiAF0A3gA2BzbwGA9RuwbhFALh0wG3AK wBtwTx7wGpAeQApAdGkdwXC/A2AW4ASBBCAcIhEAdhtw1mQCIBtxaBtwcxrQG3B/C4AdsRtwHlAa 8R6SICJk+xeABUB1AJAdkR33HtAcYL0RMGwiwRw8HyILgHQEkO8HkCagHEAiQXAJER2CIbdsYXAL UA3gYR/jG5FMWQuAdXge0yFhJwVAa/sbIAfgaCqBG5EgMRtgCYDRHtBJJ2wDIGIbcCEwjnIccCGw AHBrZnUDIPkGkCB5CGAcgSzgIPElEHpwHtBsIyEiESpjHRFp/yMxHjAAkAJgHwEcMS0SB5H/KrEe 0AtQGKARMByBAIEEgf8scgVAGr8ekhllGXQAQRlzvlQskh2CLUEZVhlzWQhhnQQgRgtwIbAs0Wx5 NashCiAgSmF5GwBQcrRhazEgaAYAGVZjAEC3GIEhMAkAcASQGVBiAUBZGXNJdAlwOJFUBZBomxsg CQBnCJAEIFB2HsFsTHQrgBlkMxwABhFnvwngLIE7oCqAIJEZVTgRYKZGPeEH8WFkHABJF0BiaTjQ bmFnCsAZVULPDxEHQAWwG3A1NhFgD1CaOD0FUCqwIYEoTwEggRtRKSArOTEtPxACLQ5AMDAxNzkg hGV4BUAtIDI5N+fGRQDAAxA6IGo4gSAwsTjjLnNALzA7Yi4ckU8DMDrGOcE61TxoAkBwUDovL3dJ MC5G2D4LM5oUIQBLIAAACwABgAggBgAAAAAAwAAAAAAAAEYAAAAAA4UAAAAAAAADAAOACCAGAAAA AADAAAAAAAAARgAAAAAQhQAAAAAAAAMAB4AIIAYAAAAAAMAAAAAAAABGAAAAAFKFAAAnagEAHgAJ gAggBgAAAAAAwAAAAAAAAEYAAAAAVIUAAAEAAAAEAAAAOS4wAB4ACoAIIAYAAAAAAMAAAAAAAABG AAAAADaFAAABAAAAAQAAAAAAAAAeAAuACCAGAAAAAADAAAAAAAAARgAAAAA3hQAAAQAAAAEAAAAA AAAAHgAMgAggBgAAAAAAwAAAAAAAAEYAAAAAOIUAAAEAAAABAAAAAAAAAAsADYAIIAYAAAAAAMAA AAAAAABGAAAAAIKFAAABAAAACwA6gAggBgAAAAAAwAAAAAAAAEYAAAAADoUAAAAAAAADADyACCAG AAAAAADAAAAAAAAARgAAAAARhQAAAAAAAAMAPYAIIAYAAAAAAMAAAAAAAABGAAAAABiFAAAAAAAA CwBSgAggBgAAAAAAwAAAAAAAAEYAAAAABoUAAAAAAAADAFOACCAGAAAAAADAAAAAAAAARgAAAAAB hQAAAAAAAAIB+A8BAAAAEAAAADDEFwFsZttIq5+t2Noeo1YCAfoPAQAAABAAAAAwxBcBbGbbSKuf rdjaHqNWAgH7DwEAAACfAAAAAAAAADihuxAF5RAaobsIACsqVsIAAFBTVFBSWC5ETEwAAAAAAAAA AE5JVEH5v7gBAKoAN9luAAAAQzpcRG9jdW1lbnRzIGFuZCBTZXR0aW5nc1xqYXlhcHJha2FzaC5z XExvY2FsIFNldHRpbmdzXEFwcGxpY2F0aW9uIERhdGFcTWljcm9zb2Z0XE91dGxvb2tcb3V0bG9v ay5wc3QAAAMA/g8FAAAAAwANNP03AAACAX8AAQAAADgAAAA8TkxFSUtMSlBKTkJNTU5CUE1QREFH RUNBQ0FBQS5qYXlhcHJha2FzaC5zQGl0cmV5YS5jb20+AAMABhBR2vkTAwAHEBUCAAADABAQAAAA AAMAERABAAAAHgAIEAEAAABlAAAAREVBUkZSSUVORFMsSUFNQU5PVklDRVRPTkVULEFORE1ZQ09N UEFOWUlTV09SS0lOR09OTUlDUk9TT0ZUTkVUV0VBUkVXRUJTT0xVVElPTlBST1ZJREVSU0FOREhB VkVET05FVAAAAADBrA== ------=_NextPart_000_0009_01C26FC2.79C6B780-- From groith@tcrz.net Wed Oct 9 14:09:20 2002 From: groith@tcrz.net (Guenther Roith) Date: Wed, 9 Oct 2002 15:09:20 +0200 Subject: [Mono-list] VB.NET, perl, python, ... References: <387569.1034148296312.JavaMail.java@localhost> Message-ID: <001d01c26f95$153ee990$010aa8c0@roithw2k> Hi! Yes, you can run that byte code. Johannes ----- Original Message ----- From: "erik" To: Sent: Wednesday, October 09, 2002 9:24 AM Subject: [Mono-list] VB.NET, perl, python, ... Hi, I am just interested to know whether or not other languages will be supported by the mono project in the future. Would it be possible already to generate byte code for these languages on windows and subsequently run the code on linux? Cheers Erik From brianlritchie@hotmail.com Wed Oct 9 14:48:29 2002 From: brianlritchie@hotmail.com (Brian Ritchie) Date: Wed, 09 Oct 2002 09:48:29 -0400 Subject: [Mono-list] ODBC.NET Data Provider Message-ID: This is a multi-part message in MIME format. ------=_NextPart_000_1137_7ffa_3c09 Content-Type: text/plain; format=flowed Ok...I've attached the ODBC.NET files. Could someone put them in CVS for me? Thanks :) Just a couple of notes: - The code is still in the works...but I've performed selects and inserts with it (including parameterized queries). - Requires unixODBC to be installed and configured - I've tested it on Debian with DB2 Known Issues: - Only works with DSN connections (no DSN-less yet) - It has transaction support, but not through the Transaction object - Parameters only support integer types - DBNull is not handled correctly - Currently most errors are printed to the console instead of throwing exceptions...this wil change as I tighten things up. Any feedback is appreciated... Brian >From: "Daniel Morgan" >To: "Brian Ritchie" , >Subject: RE: [Mono-list] ODBC.NET Data Provider >Date: Wed, 9 Oct 2002 01:40:07 -0400 > >Hey Brian, > >Once you contribute something, you can get a cvs account. You can attach >your patch or files in an email to this list. Someone like Rodrigo, me, or >someone else would be happy to commit it for you. Rodrigo is real good at >this because he does a code review and let's you know what improvements can >be done to it. > >Once something of yours has been contributed, you need to go >to http://www.go-mono.com/ccvs.html >and follow those directions on getting your own cvs account. > >Happy hacking, >Daniel > >-----Original Message----- >From: mono-list-admin@ximian.com [mailto:mono-list-admin@ximian.com]On >Behalf Of Brian Ritchie >Sent: Wednesday, October 09, 2002 12:34 AM >To: danmorg@sc.rr.com; mono-list@ximian.com >Subject: RE: [Mono-list] ODBC.NET Data Provider > > >Daniel, > >Do I need to get setup with CVS access first? > >Brian > > > >From: "Daniel Morgan" > >To: "Brian Ritchie" , > >Subject: RE: [Mono-list] ODBC.NET Data Provider > >Date: Tue, 8 Oct 2002 23:11:06 -0400 > > > >Brian, > > > >Being able to connet to a database and do queries is a milestone in >itself. > >It wouldn't hurt to go ahead and check it into cvs. Besides, I feel >safer > >anything I have worked on has been put into cvs because I know Ximian >guys > >keep things backed up unlike my computer. :-) > > > >I don't know what the namespace or assembly for the ODBC provider in .NET > >1.1, but the MSDN download of the ODBC provider for .NET 1.0 uses > >Microsoft.Data.Odbc as the namespace and Microsoft.Data.Odbc.dll as the > >assembly name. > > > >We have SQL# which is a command-line SQL query tool written in C# that >can > >connect to various databases using the various ADO.NET providers. It can > >be > >found > >at mcs/class/System.Data/Test/SqlSharpCli.cs However, don't be to > >disappointed in the tool, it was mainly meant for testing Mono's > >System.Data. > > > >What would be nice is to have a MS SQL Server 2000 Enterprise Manager, > >Query > >Analyzer, or TOAD like tool for Mono System.Data written in C# and using > >GTK#. > > > >Daniel > > > >-----Original Message----- > >From: mono-list-admin@ximian.com [mailto:mono-list-admin@ximian.com]On > >Behalf Of Brian Ritchie > >Sent: Tuesday, October 08, 2002 9:39 PM > >To: danmorg@sc.rr.com; mono-list@ximian.com > >Subject: RE: [Mono-list] ODBC.NET Data Provider > > > > > >Sounds good, I've got a little more work before I send in the patch. I > >don't want to send in anything that is too raw :) > > > >Has anyone looked at .NET 1.1 yet? I'm assuming they are moving the Odbc > >stuff under the System.Data namespace...so that is how my stuff is setup. > >(System.Data.Odbc) > > > >Have you guys talked about providing any basic db tools with the mono > >framework? Like a isql-style command line tool? This might be a good >way > >for people to test their database connections, etc. > > > >Keep up the good work guys...the framework is looking good. > > > >Brian > > > > > > >From: "Daniel Morgan" > > >To: "Brian Ritchie" , > > >Subject: RE: [Mono-list] ODBC.NET Data Provider > > >Date: Mon, 7 Oct 2002 01:08:32 -0400 > > > > > >Brian, > > > > > >This is good news. > > > > > >Can provide us with a patch please in an email to the > >mono-list@ximian.com? > > >If you don't know how to make a patch, you can look here on how: > > >http://www.go-mono.com/ccvs.html > > > > > >This way people can get a preview of your work and be able to help > > >contribute too. Since unixODBC supports so many databases, it will > > >definitely be appreciated. > > > > > >Do you know if unixODBC works on Windows? > > > > > >Thanks, > > >Daniel > > > > > >-----Original Message----- > > >From: mono-list-admin@ximian.com [mailto:mono-list-admin@ximian.com]On > > >Behalf Of Brian Ritchie > > >Sent: Monday, October 07, 2002 12:02 AM > > >To: danmorg@sc.rr.com; mono-list@ximian.com > > >Subject: RE: [Mono-list] ODBC.NET Data Provider > > > > > > > > >Daniel, > > > > > >Thanks for the quick response. I have basic implementations of > > >OdbcConnection, OdbcCommand, OdbcDataReader, OdbcParameter, and > > >OdbcParameterCollection. It can execute queries and display result >sets > > >(and ExecuteNonQuery too). I'm currently working on the Parameter & > > >Transaction support. I've been doing my development on Debian against >a > > >DB2 > > >7.2 UDB. > > > > > >Brian > > > > > > > > > >From: "Daniel Morgan" > > > >To: "Brian Ritchie" , > > > > >Subject: RE: [Mono-list] ODBC.NET Data Provider > > > >Date: Sun, 6 Oct 2002 22:51:07 -0400 > > > > > > > >Brian > > > > > > > >No one is working on the ODBC.NET Data Provider as far as i know. >Just > > > >attach your diff in an email, and someone, such as (passing the buck >- > > > >hehehe) Rodrigo Moya can do that for you. Rodrigo is the coordinator > >for > > > >the > > > >ADO.NET technology in Mono. > > > > > > > >What can you do witht he provider so far? Can you connect to a > >database > > > >yet? How about run any queries? Or is it just C# bindings to the > > >unixODBC > > > >library(ies) right now? > > > > > > > >Daniel > > > > > > > >-----Original Message----- > > > >From: mono-list-admin@ximian.com >[mailto:mono-list-admin@ximian.com]On > > > >Behalf Of Brian Ritchie > > > >Sent: Sunday, October 06, 2002 10:03 PM > > > >To: mono-list@ximian.com > > > >Subject: [Mono-list] ODBC.NET Data Provider > > > > > > > > > > > >Is anyone working on a ODBC data provider? I've started one using > > >unixodbc > > > >and I'd like to contribute it to the project. > > > > > > > >Brian > > > > >_________________________________________________________________ >Send and receive Hotmail on your mobile device: http://mobile.msn.com > > >_______________________________________________ >Mono-list maillist - Mono-list@ximian.com >http://lists.ximian.com/mailman/listinfo/mono-list > > >_______________________________________________ >Mono-list maillist - Mono-list@ximian.com >http://lists.ximian.com/mailman/listinfo/mono-list _________________________________________________________________ Send and receive Hotmail on your mobile device: http://mobile.msn.com ------=_NextPart_000_1137_7ffa_3c09 Content-Type: text/plain; name="libodbc.cs"; format=flowed Content-Transfer-Encoding: 8bit Content-Disposition: attachment; filename="libodbc.cs" // // System.Data.Odbc.libodbc // // Authors: // Brian Ritchie (brianlritchie@hotmail.com) // // // Copyright (C) Brian Ritchie, 2002 // // using System.Data; using System.Data.Common; using System.Runtime.InteropServices; namespace System.Data.Odbc { internal enum OdbcHandleType { Env = 1, Dbc = 2, Stmt = 3, Desc = 4 }; internal enum OdbcReturn { Error = -1, InvalidHandle = -2, StillExecuting = 2, NeedData = 99, Success = 0, SuccessWithInfo = 1 } internal enum OdbcEnv { OdbcVersion = 200, ConnectionPooling = 201, CPMatch = 202 } [StructLayout(LayoutKind.Sequential)] public struct OdbcTimestamp { public short year; public ushort month; public ushort day; public ushort hour; public ushort minute; public ushort second; public ulong fraction; } sealed internal class libodbc { public static void DisplayError(string Msg, OdbcReturn Ret) { if ((Ret!=OdbcReturn.Success) && (Ret!=OdbcReturn.SuccessWithInfo)) { Console.WriteLine("ERROR: {0}: <{1}>",Msg,Ret); } } [DllImport("libodbc")] public static extern OdbcReturn SQLAllocHandle (ushort HandleType, int InputHandle, ref int OutputHandlePtr); [DllImport("libodbc")] public static extern OdbcReturn SQLSetEnvAttr (int EnvHandle, ushort Attribute, IntPtr Value, int StringLength); [DllImport("libodbc")] public static extern OdbcReturn SQLConnect (int ConnectionHandle, string ServerName, short NameLength1, string UserName, short NameLength2, string Authentication, short NameLength3); [DllImport("libodbc")] public static extern OdbcReturn SQLExecDirect (int StatementHandle, string StatementText, int TextLength); [DllImport("libodbc")] public static extern OdbcReturn SQLRowCount (int StatementHandle, ref int RowCount); [DllImport("libodbc")] public static extern OdbcReturn SQLNumResultCols (int StatementHandle, ref short ColumnCount); [DllImport("libodbc")] public static extern OdbcReturn SQLFetch (int StatementHandle); [DllImport("libodbc")] public static extern OdbcReturn SQLGetData (int StatementHandle, ushort ColumnNumber, short TargetType, ref int TargetPtr, int BufferLen, ref int Len); [DllImport("libodbc")] public static extern OdbcReturn SQLGetData (int StatementHandle, ushort ColumnNumber, short TargetType, byte[] TargetPtr, int BufferLen, ref int Len); [DllImport("libodbc")] public static extern OdbcReturn SQLGetData (int StatementHandle, ushort ColumnNumber, short TargetType, ref float TargetPtr, int BufferLen, ref int Len); [DllImport("libodbc")] public static extern OdbcReturn SQLGetData (int StatementHandle, ushort ColumnNumber, short TargetType, ref OdbcTimestamp TargetPtr, int BufferLen, ref int Len); [DllImport("libodbc")] public static extern OdbcReturn SQLDescribeCol(int StatmentHandle, ushort ColumnNumber, byte[] ColumnName, short BufferLength, ref short NameLength, ref short DataType, ref short ColumnSize, ref short DecimalDigits, ref short Nullable); [DllImport("libodbc")] public static extern OdbcReturn SQLFreeHandle(ushort HandleType, int SqlHandle); [DllImport("libodbc")] public static extern OdbcReturn SQLDisconnect(int ConnectionHandle); [DllImport("libodbc")] public static extern OdbcReturn SQLPrepare(int StatementHandle, string Statement, int TextLength); [DllImport("libodbc")] public static extern OdbcReturn SQLExecute(int StatementHandle); [DllImport("libodbc")] public static extern OdbcReturn SQLSetConnectAttr(int ConnectionHandle, int Attribute, uint Value, int Length); [DllImport("libodbc")] public static extern OdbcReturn SQLEndTran(int HandleType, int Handle, short CompletionType); [DllImport("libodbc")] public static extern OdbcReturn SQLBindParam(int StatementHandle, short ParamNum, short ValueType, short ParamType, int LenPrecision, short ParamScale, ref int ParamValue, int StrLen); [DllImport("libodbc")] public static extern OdbcReturn SQLBindParam(int StatementHandle, short ParamNum, short ValueType, short ParamType, int LenPrecision, short ParamScale, byte[] ParamValue, int StrLen); [DllImport("libodbc")] public static extern OdbcReturn SQLCancel(int StatementHandle); [DllImport("libodbc")] public static extern OdbcReturn SQLCloseCursor(int StatementHandle); } } ------=_NextPart_000_1137_7ffa_3c09 Content-Type: text/plain; name="OdbcCommand.cs"; format=flowed Content-Transfer-Encoding: 8bit Content-Disposition: attachment; filename="OdbcCommand.cs" // // System.Data.Odbc.OdbcCommand // // Authors: // Brian Ritchie (brianlritchie@hotmail.com) // // Copyright (C) Brian Ritchie, 2002 // using System.ComponentModel; using System.Data; using System.Data.Common; using System.Collections; using System.Runtime.InteropServices; namespace System.Data.Odbc { /// /// Represents an SQL statement or stored procedure to execute against a data source. /// public sealed class OdbcCommand : Component, ICloneable, IDbCommand { #region Fields string commandText; int timeout; CommandType commandType; OdbcConnection connection; OdbcParameterCollection parameters; //OdbcTransaction transaction; bool designTimeVisible; bool prepared=false; OdbcDataReader dataReader; CommandBehavior behavior; public int hstmt; #endregion // Fields #region Constructors public OdbcCommand () { commandText = String.Empty; timeout = 30; // default timeout commandType = CommandType.Text; connection = null; parameters = new OdbcParameterCollection (); //transaction = null; designTimeVisible = false; dataReader = null; behavior = CommandBehavior.Default; } public OdbcCommand (string cmdText) : this () { CommandText = cmdText; } public OdbcCommand (string cmdText, OdbcConnection connection) : this (cmdText) { Connection = connection; } // public OdbcCommand (string cmdText, // OdbcConnection connection, // OdbcTransaction transaction) : this (cmdText, connection) // { // this.transaction = transaction; // } #endregion // Constructors #region Properties public int hStmt { get { return hstmt; } } public string CommandText { get { return commandText; } set { prepared=false; commandText = value; } } public int CommandTimeout { get { return timeout; } set { timeout = value; } } public CommandType CommandType { get { return commandType; } set { commandType = value; } } public OdbcConnection Connection { get { return connection; } set { connection = value; } } public bool DesignTimeVisible { get { return designTimeVisible; } set { designTimeVisible = value; } } public OdbcParameterCollection Parameters { get { return parameters; } set { parameters = value; } } // public OdbcTransaction Transaction { // get { // return transaction; // } // set { // transaction = value; // } // } public UpdateRowSource UpdatedRowSource { [MonoTODO] get { throw new NotImplementedException (); } [MonoTODO] set { throw new NotImplementedException (); } } IDbConnection IDbCommand.Connection { get { return Connection; } set { Connection = (OdbcConnection) value; } } IDataParameterCollection IDbCommand.Parameters { get { throw new NotImplementedException (); //return Parameters; } } IDbTransaction IDbCommand.Transaction { get { throw new NotImplementedException (); //return Transaction; } set { throw new NotImplementedException (); } } #endregion // Properties #region Methods [MonoTODO] public void Cancel () { throw new NotImplementedException (); } public OdbcParameter CreateParameter () { return new OdbcParameter (); } IDbDataParameter IDbCommand.CreateParameter () { return CreateParameter (); } [MonoTODO] protected override void Dispose (bool disposing) { throw new NotImplementedException (); } protected void ExecSQL(string sql) { OdbcReturn ret; if (!prepared) { Prepare(); if (Parameters.Count>0) Parameters.Bind(hstmt); } if (prepared) { ret=libodbc.SQLExecute(hstmt); libodbc.DisplayError("SQLExecute",ret); } else { ret=libodbc.SQLAllocHandle((ushort) OdbcHandleType.Stmt, Connection.hDbc, ref hstmt); libodbc.DisplayError("SQLAllocHandle(hstmt)",ret); ret=libodbc.SQLExecDirect(hstmt, sql, sql.Length); libodbc.DisplayError("SQLExecDirect",ret); } } public int ExecuteNonQuery () { if (connection == null) throw new InvalidOperationException (); if (connection.State == ConnectionState.Closed) throw new InvalidOperationException (); // FIXME: a third check is mentioned in .NET docs if (connection.DataReader != null) throw new InvalidOperationException (); ExecSQL(CommandText); if (!prepared) libodbc.SQLFreeHandle( (ushort) OdbcHandleType.Stmt, hstmt); return 0; } public void Prepare() { OdbcReturn ret; ret=libodbc.SQLAllocHandle((ushort) OdbcHandleType.Stmt, Connection.hDbc, ref hstmt); libodbc.DisplayError("SQLAlloc(Prepare)",ret); ret=libodbc.SQLPrepare(hstmt, CommandText, CommandText.Length); libodbc.DisplayError("SQLPrepare",ret); prepared=true; } public OdbcDataReader ExecuteReader () { return ExecuteReader (CommandBehavior.Default); } IDataReader IDbCommand.ExecuteReader () { return ExecuteReader (); } public OdbcDataReader ExecuteReader (CommandBehavior behavior) { ExecuteNonQuery(); dataReader=new OdbcDataReader(this); return dataReader; } IDataReader IDbCommand.ExecuteReader (CommandBehavior behavior) { return ExecuteReader (behavior); } public object ExecuteScalar () { throw new NotImplementedException (); // if (connection.DataReader != null) // throw new InvalidOperationException (); // } [MonoTODO] object ICloneable.Clone () { throw new NotImplementedException (); } public void ResetCommandTimeout () { timeout = 30; } #endregion } } ------=_NextPart_000_1137_7ffa_3c09 Content-Type: text/plain; name="OdbcConnection.cs"; format=flowed Content-Transfer-Encoding: 8bit Content-Disposition: attachment; filename="OdbcConnection.cs" // // System.Data.Odbc.OdbcConnection // // Authors: // Brian Ritchie (brianlritchie@hotmail.com) // // Copyright (C) Brian Ritchie, 2002 // using System.ComponentModel; using System.Data; using System.Data.Common; namespace System.Data.Odbc { public sealed class OdbcConnection : Component, ICloneable, IDbConnection { #region Fields string connectionString; int connectionTimeout; OdbcDataReader dataReader; int henv=0, hdbc=0; private string _uid, _pwd, _dsn; #endregion #region Constructors public OdbcConnection () { OdbcReturn ret; // allocate Environment handle ret=libodbc.SQLAllocHandle((ushort) OdbcHandleType.Env, 0, ref henv); libodbc.DisplayError("SQLAllocHandle", ret); ret=libodbc.SQLSetEnvAttr(henv, (ushort) OdbcEnv.OdbcVersion, (IntPtr) 3 , 0); libodbc.DisplayError("SQLSetEnvAttr", ret); Console.WriteLine("ODBCInit Complete."); connectionTimeout = 15; connectionString = null; dataReader = null; } public OdbcConnection (string connectionString) : this () { ConnectionString = connectionString; } #endregion // Constructors #region Properties public int hDbc { get { return hdbc; } } public string ConnectionString { get { return connectionString; } set { connectionString = value; string[] items=connectionString.Split(new char[1]{';'}); foreach (string item in items) { string[] parts=item.Split(new char[1] {'='}); switch (parts[0].Trim().ToLower()) { case "dsn": _dsn=parts[1].Trim(); break; case "uid": _uid=parts[1].Trim(); break; case "pwd": _pwd=parts[1].Trim(); break; } } } } public int ConnectionTimeout { get { return connectionTimeout; } } public string DataSource { get { if (State==ConnectionState.Open) return _dsn; else return null; } } public string Database { get { return ""; } } public ConnectionState State { get { if (hdbc!=0) { return ConnectionState.Open; } else return ConnectionState.Closed; } } internal OdbcDataReader DataReader { get { return dataReader; } set { dataReader = value; } } #endregion // Properties #region Methods public void BeginTransaction() { OdbcReturn ret; // Set Auto-commit to false ret=libodbc.SQLSetConnectAttr(hdbc, 102, 0, 0); libodbc.DisplayError("SQLSetConnectAttr(NoAutoCommit)", ret); } public void CommitTransaction() { OdbcReturn ret; ret=libodbc.SQLEndTran((short) OdbcHandleType.Dbc, hdbc, 0); libodbc.DisplayError("SQLEndTran(commit)", ret); } public void RollbackTransaction() { OdbcReturn ret; ret=libodbc.SQLEndTran((short) OdbcHandleType.Dbc, hdbc, 1); libodbc.DisplayError("SQLEndTran(rollback)", ret); } // public OdbcTransaction BeginTransaction () // { // } IDbTransaction IDbConnection.BeginTransaction () { throw new NotImplementedException (); // return BeginTransaction (); } // public OdbcTransaction BeginTransaction (IsolationLevel level) // { // // } IDbTransaction IDbConnection.BeginTransaction (IsolationLevel level) { throw new NotImplementedException (); // return BeginTransaction (level); } public void Close () { if (State == ConnectionState.Open) { hdbc = 0; } dataReader = null; } public OdbcCommand CreateCommand () { throw new NotImplementedException (); } [MonoTODO] public void ChangeDatabase(string Database) { throw new NotImplementedException (); } [MonoTODO] protected override void Dispose (bool disposing) { throw new NotImplementedException (); } [MonoTODO] object ICloneable.Clone () { throw new NotImplementedException(); } IDbCommand IDbConnection.CreateCommand () { throw new NotImplementedException(); // return CreateCommand (); } public void Open () { if (State == ConnectionState.Open) throw new InvalidOperationException (); OdbcReturn ret; // allocate connection handle ret=libodbc.SQLAllocHandle((ushort) OdbcHandleType.Dbc, henv, ref hdbc); libodbc.DisplayError("SQLAllocHandle(hdbc)", ret); // Connect to data source ret=libodbc.SQLConnect(hdbc, _dsn, -3, _uid, -3, _pwd, -3); libodbc.DisplayError("SQLConnect",ret); } [MonoTODO] public static void ReleaseObjectPool () { throw new NotImplementedException (); } #endregion #region Events and Delegates public event StateChangeEventHandler StateChange; #endregion } } ------=_NextPart_000_1137_7ffa_3c09 Content-Type: text/plain; name="OdbcDataReader.cs"; format=flowed Content-Transfer-Encoding: 8bit Content-Disposition: attachment; filename="OdbcDataReader.cs" // // System.Data.Odbc.OdbcDataReader // // Author: // Brian Ritchie (brianlritchie@hotmail.com) // // Copyright (C) Brian Ritchie, 2002 // using System.Collections; using System.ComponentModel; using System.Data; using System.Data.Common; using System.Runtime.InteropServices; namespace System.Data.Odbc { public sealed class OdbcDataReader : MarshalByRefObject, IDataReader, IDisposable, IDataRecord, IEnumerable { #region Fields private OdbcCommand command; private bool open; private int currentRow; private DataColumn[] cols; private int hstmt; #endregion #region Constructors internal OdbcDataReader (OdbcCommand command) { this.command = command; this.command.Connection.DataReader = this; open = true; currentRow = -1; hstmt=command.hStmt; LoadColumns(); } #endregion #region Properties public int Depth { get { return 0; // no nested selects supported } } public int FieldCount { get { return cols.Length; } } public bool IsClosed { get { return !open; } } public DataColumn[] Columns { get { return cols; } } public object this[string name] { get { ushort pos; if (currentRow == -1) throw new InvalidOperationException (); pos = ColIndex(name); if (pos == -1) throw new IndexOutOfRangeException (); return this[pos]; } } public object this[int index] { get { return (object) GetODBCData (index); } } public int RecordsAffected { get { return -1; } } #endregion #region Methods private Type SQLTypeToCILType(short DataType) { switch (DataType) { case 12: case 1: return typeof(string); case 4: return typeof(int); case 5: return typeof(short); case 2: case 3: case 6: case 7: case 8: return typeof(float); case 90: case 91: case 92: case 9: return typeof(DateTime); default: Console.WriteLine("WARNING: Unknown type {0}", DataType); return typeof(string); } } private short CILTypeToSQLType(Type type) { if (type==typeof(int)) return 4; else if (type==typeof(string)) return 12; else return 12; } private void LoadColumns() { ArrayList colsArray=new ArrayList(); short colcount=0; short bufsize=255; byte[] colname_buffer=new byte[bufsize]; string colname; short colname_size=0; short DataType=0, ColSize=0, DecDigits=0, Nullable=0; libodbc.SQLNumResultCols(hstmt, ref colcount); for (ushort i=1;i<=colcount;i++) { libodbc.SQLDescribeCol(hstmt, i, colname_buffer, bufsize, ref colname_size, ref DataType, ref ColSize, ref DecDigits, ref Nullable); colname=System.Text.Encoding.Default.GetString(colname_buffer); DataColumn c=new DataColumn(colname, SQLTypeToCILType(DataType)); c.AllowDBNull=(Nullable!=0); if (c.DataType==typeof(string)) c.MaxLength=ColSize; colsArray.Add(c); } cols=(DataColumn[]) colsArray.ToArray(typeof(DataColumn)); } private ushort ColIndex(string colname) { ushort i=0; foreach (DataColumn col in cols) { if (col.ColumnName==colname) return i; i++; } return 0; } private object GetODBCData(int colindex) { return GetODBCData(Convert.ToUInt16(colindex)); } private object GetODBCData(ushort colindex) { OdbcReturn ret; int outsize=0; DataColumn col=cols[colindex]; colindex+=1; if (col.DataType==typeof(int)) { int data=0; ret=libodbc.SQLGetData(hstmt, colindex, 4, ref data, 0, ref outsize); libodbc.DisplayError("SQLGetData(int)",ret); return data; } else if (col.DataType==typeof(string)) { byte[] strbuffer=new byte[255]; ret=libodbc.SQLGetData(hstmt, colindex, 1, strbuffer, 255, ref outsize); libodbc.DisplayError("SQLGetData("+col.ColumnName+","+colindex.ToString()+")",ret); return System.Text.Encoding.Default.GetString(strbuffer); } else if (col.DataType==typeof(float)) { float data=0; ret=libodbc.SQLGetData(hstmt, colindex, 7, ref data, 0, ref outsize); return data; } else if (col.DataType==typeof(DateTime)) { OdbcTimestamp data=new OdbcTimestamp(); ret=libodbc.SQLGetData(hstmt, colindex, 91, ref data, 0, ref outsize); return new DateTime(data.year,data.month,data.day,data.hour,data.minute,data.second,Convert.ToInt32(data.fraction)); } else return ""; } public void Close () { // libodbc.SQLFreeHandle((ushort) OdbcHandleType.Stmt, hstmt); OdbcReturn ret=libodbc.SQLCloseCursor(hstmt); libodbc.DisplayError("SQLCancel",ret); open = false; currentRow = -1; this.command.Connection.DataReader = null; } ~OdbcDataReader () { if (open) Close (); } public bool GetBoolean (int ordinal) { throw new NotImplementedException (); } public byte GetByte (int ordinal) { throw new NotImplementedException (); } [MonoTODO] public long GetBytes (int ordinal, long dataIndex, byte[] buffer, int bufferIndex, int length) { throw new NotImplementedException (); } public char GetChar (int ordinal) { throw new NotImplementedException (); } [MonoTODO] public long GetChars (int ordinal, long dataIndex, char[] buffer, int bufferIndex, int length) { throw new NotImplementedException (); } [MonoTODO] public OdbcDataReader GetData (int ordinal) { throw new NotImplementedException (); } public string GetDataTypeName (int index) { return ""; } public DateTime GetDateTime (int ordinal) { throw new NotImplementedException (); } [MonoTODO] public decimal GetDecimal (int ordinal) { throw new NotImplementedException (); } public double GetDouble (int ordinal) { throw new NotImplementedException (); } [MonoTODO] public Type GetFieldType (int index) { throw new NotImplementedException (); } public float GetFloat (int ordinal) { throw new NotImplementedException (); } [MonoTODO] public Guid GetGuid (int ordinal) { throw new NotImplementedException (); } public short GetInt16 (int ordinal) { throw new NotImplementedException (); } public int GetInt32 (int ordinal) { throw new NotImplementedException (); } public long GetInt64 (int ordinal) { throw new NotImplementedException (); } public string GetName (int index) { if (currentRow == -1) return null; return cols[index].ColumnName; } public int GetOrdinal (string name) { if (currentRow == -1) throw new IndexOutOfRangeException (); int i=ColIndex(name); if (i==-1) throw new IndexOutOfRangeException (); else return i; } public DataTable GetSchemaTable () { DataTable table = new DataTable (); // FIXME: implement return table; } public string GetString (int ordinal) { throw new NotImplementedException (); } [MonoTODO] public TimeSpan GetTimeSpan (int ordinal) { throw new NotImplementedException (); } public object GetValue (int ordinal) { if (currentRow == -1) throw new IndexOutOfRangeException (); if (ordinal>cols.Length-1 || ordinal<0) throw new IndexOutOfRangeException (); return (object) GetODBCData(ordinal); } [MonoTODO] public int GetValues (object[] values) { throw new NotImplementedException (); } [MonoTODO] IDataReader IDataRecord.GetData (int ordinal) { throw new NotImplementedException (); } [MonoTODO] void IDisposable.Dispose () { throw new NotImplementedException (); } [MonoTODO] IEnumerator IEnumerable.GetEnumerator () { throw new NotImplementedException (); } public bool IsDBNull (int ordinal) { throw new NotImplementedException (); } public bool NextResult () { OdbcReturn ret=libodbc.SQLFetch(hstmt); return (ret==OdbcReturn.Success); } public bool Read () { return NextResult(); } #endregion } } ------=_NextPart_000_1137_7ffa_3c09 Content-Type: text/plain; name="OdbcParameter.cs"; format=flowed Content-Transfer-Encoding: 8bit Content-Disposition: attachment; filename="OdbcParameter.cs" // // System.Data.Odbc.OdbcParameter // // Authors: // Brian Ritchie (brianlritchie@hotmail.com) // // Copyright (C) Brian Ritchie, 2002 // using System; using System.Data; using System.Data.Common; namespace System.Data.Odbc { public sealed class OdbcParameter : MarshalByRefObject, IDbDataParameter, IDataParameter, ICloneable { #region Fields string name; object value; int size; bool isNullable; byte precision; byte scale; DataRowVersion sourceVersion; string sourceColumn; ParameterDirection direction; OdbcType odbcType; DbType dbType; int IntValue; #endregion #region Constructors public OdbcParameter () { name = String.Empty; value = null; size = 0; isNullable = true; precision = 0; scale = 0; sourceColumn = String.Empty; } public OdbcParameter (string name, object value) : this () { this.name = name; this.value = value; } public OdbcParameter (string name, OdbcType dataType) : this () { this.name = name; OdbcType = dataType; } public OdbcParameter (string name, OdbcType dataType, int size) : this (name, dataType) { this.size = size; } public OdbcParameter (string name, OdbcType dataType, int size, string srcColumn) : this (name, dataType, size) { this.sourceColumn = srcColumn; } public OdbcParameter(string name, OdbcType dataType, int size, ParameterDirection direction, bool isNullable, byte precision, byte scale, string srcColumn, DataRowVersion srcVersion, object value) : this (name, dataType, size, srcColumn) { this.direction = direction; this.isNullable = isNullable; this.precision = precision; this.scale = scale; this.sourceVersion = srcVersion; this.value = value; } #endregion #region Properties public DbType DbType { get { return dbType; } set { dbType = value; } } public ParameterDirection Direction { get { return direction; } set { direction = value; } } public bool IsNullable { get { return isNullable; } } public OdbcType OdbcType { get { return odbcType; } set { odbcType = value; } } public string ParameterName { get { return name; } set { name = value; } } public byte Precision { get { return precision; } set { precision = value; } } public byte Scale { get { return scale; } set { scale = value; } } public int Size { get { return size; } set { size = value; } } public string SourceColumn { get { return sourceColumn; } set { sourceColumn = value; } } public DataRowVersion SourceVersion { get { return sourceVersion; } set { sourceVersion = value; } } public object Value { get { return IntValue; } set { this.IntValue =(int) value; } } #endregion // Properties #region Internal Properties internal void Bind(int hstmt,int ParamNum) { if (OdbcType==OdbcType.Integer) { OdbcReturn ret=libodbc.SQLBindParam(hstmt, Convert.ToInt16(ParamNum), 4, 4, 0,0,ref IntValue, 0); libodbc.DisplayError("SQLBindParam",ret); } else Console.WriteLine("Unknown Paramter Type"); } #endregion // Internal Properties #region Methods [MonoTODO] object ICloneable.Clone () { throw new NotImplementedException (); } public override string ToString () { return ParameterName; } #endregion } } ------=_NextPart_000_1137_7ffa_3c09 Content-Type: text/plain; name="OdbcParameterCollection.cs"; format=flowed Content-Transfer-Encoding: 8bit Content-Disposition: attachment; filename="OdbcParameterCollection.cs" // // System.Data.Odbc.OdbcParameterCollection // // Author: // Brian Ritchie (brianlritchie@hotmail.com) // // Copyright (C) Brian Ritchie, 2002 // using System.Collections; using System.Data; using System.Data.Common; namespace System.Data.Odbc { public sealed class OdbcParameterCollection : MarshalByRefObject, IDataParameterCollection, IList, ICollection, IEnumerable { #region Fields ArrayList list = new ArrayList (); #endregion // Fields #region Properties public int Count { get { return list.Count; } } public OdbcParameter this[int index] { get { return (OdbcParameter) list[index]; } set { list[index] = value; } } public OdbcParameter this[string parameterName] { [MonoTODO] get { throw new NotImplementedException (); } [MonoTODO] set { throw new NotImplementedException (); } } int ICollection.Count { get { return list.Count; } } bool IList.IsFixedSize { get { return false; } } bool IList.IsReadOnly { get { return false; } } bool ICollection.IsSynchronized { get { return list.IsSynchronized; } } object ICollection.SyncRoot { get { return list.SyncRoot; } } object IList.this[int index] { get { return list[index]; } set { list[index] = value; } } object IDataParameterCollection.this[string name] { [MonoTODO] get { throw new NotImplementedException (); } [MonoTODO] set { throw new NotImplementedException (); } } #endregion // Properties #region Methods public OdbcParameter Add (OdbcParameter parameter) { list.Add (parameter); return parameter; } public OdbcParameter Add (string name, object value) { OdbcParameter parameter = new OdbcParameter (name, value); list.Add (parameter); return parameter; } public OdbcParameter Add (string name, OdbcType type) { OdbcParameter parameter = new OdbcParameter (name, type); list.Add (parameter); return parameter; } public OdbcParameter Add (string name, OdbcType type, int width) { OdbcParameter parameter = new OdbcParameter (name, type, width); list.Add (parameter); return parameter; } public OdbcParameter Add (string name, OdbcType type, int width, string src_col) { OdbcParameter parameter = new OdbcParameter (name, type, width, src_col); list.Add (parameter); return parameter; } internal void Bind(int hstmt) { for (int i=0;i References: Message-ID: <1034176378.10835.5.camel@localhost> On Wed, 2002-10-09 at 15:48, Brian Ritchie wrote: > Ok...I've attached the ODBC.NET files. Could someone put them in CVS for > me? Thanks :) > done. It's no on mcs/class/System.Data.Odbc I think, given the size of your contribution, and the need to continue development on it, that you should ask for a CVS account. Look at the web site to see how you can do that. cheers -- Rodrigo Moya From brianlritchie@hotmail.com Wed Oct 9 16:22:41 2002 From: brianlritchie@hotmail.com (Brian Ritchie) Date: Wed, 9 Oct 2002 11:22:41 -0400 Subject: [Mono-list] ODBC.NET Data Provider References: <1034176378.10835.5.camel@localhost> Message-ID: Thanks Rodrigo, I'll put in a request. ----- Original Message ----- From: "Rodrigo Moya" To: "Brian Ritchie" Cc: ; "Mono List" Sent: Wednesday, October 09, 2002 11:12 AM Subject: RE: [Mono-list] ODBC.NET Data Provider > On Wed, 2002-10-09 at 15:48, Brian Ritchie wrote: > > Ok...I've attached the ODBC.NET files. Could someone put them in CVS for > > me? Thanks :) > > > done. It's no on mcs/class/System.Data.Odbc > > I think, given the size of your contribution, and the need to continue > development on it, that you should ask for a CVS account. Look at the > web site to see how you can do that. > > cheers > -- > Rodrigo Moya > From vi64pa@koti.soon.fi Wed Oct 9 16:50:23 2002 From: vi64pa@koti.soon.fi (ville) Date: Wed, 9 Oct 2002 18:50:23 +0300 Subject: [Mono-list] Testclass for SqlInt16 In-Reply-To: <1034162360.3731.18.camel@localhost> References: <200210062116.27090.vi64pa@koti.soon.fi> <200210072058.21367.vi64pa@koti.soon.fi> <1034162360.3731.18.camel@localhost> Message-ID: <200210091850.23637.vi64pa@koti.soon.fi> --------------Boundary-00=_ZB1QZAV80GEXSHVQSAAB Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Uh, I'm sorry, I missed that tab-thing. But here are testsuites for SqlIn= t16=20 and SqlInt64. On Wednesday 09 October 2002 14:19, Rodrigo Moya wrote: > On Mon, 2002-10-07 at 19:58, ville wrote: > > There was litle bug. This one is better. > > yes, looks ok, except for the coding style, as I told you last time. > That is, please use Mono's coding style, which uses 8-space tabs instea= d > of 2-spaces you are using. Please change it and resend your patch and > I'll apply it. > --------------Boundary-00=_ZB1QZAV80GEXSHVQSAAB Content-Type: text/x-c++src; charset="utf-8"; name="SqlInt16Test.cs" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="SqlInt16Test.cs" // // SqlInt16Test.cs - NUnit Test Cases for System.Data.SqlTypes.SqlInt16 // // Ville Palo (vi64pa@koti.soon.fi) // // (C) Ville Palo 2002 // using NUnit.Framework; using System; using System.Data.SqlTypes; namespace MonoTests.System.Data.SqlTypes { public class SqlInt16Test : TestCase { public SqlInt16Test() : base ("System.Data.SqlTypes.SqlInt64") {} public SqlInt16Test(string name) : base(name) {} protected override void TearDown() {} protected override void SetUp() {} public static ITest Suite { get { return new TestSuite(typeof(SqlInt32)); } } // Test constructor public void TestCreate() { SqlInt16 TestShort = new SqlInt16 (29); AssertEquals ("Test#1", (short)29, TestShort.Value); TestShort = new SqlInt16 (-9000); AssertEquals ("Test#2", (short)-9000, TestShort.Value); } // Test public fields public void TestPublicFields() { AssertEquals ("Test#1", (SqlInt16)32767, SqlInt16.MaxValue); AssertEquals ("Test#2", (SqlInt16)(-32768), SqlInt16.MinValue); Assert ("Test#3", SqlInt16.Null.IsNull); AssertEquals ("Test#4", (short)0, SqlInt16.Zero.Value); } // Test properties public void TestProperties() { SqlInt16 Test5443 = new SqlInt16 (5443); SqlInt16 Test1 = new SqlInt16 (1); Assert ("Test#1", SqlInt16.Null.IsNull); AssertEquals ("Test#2", (short)5443, Test5443.Value); AssertEquals ("Test#3", (short)1, Test1.Value); } // PUBLIC METHODS public void TestArithmeticMethods() { SqlInt16 Test64 = new SqlInt16 (64); SqlInt16 Test0 = new SqlInt16 (0); SqlInt16 Test164 = new SqlInt16 (164); SqlInt16 TestMax = new SqlInt16 (SqlInt16.MaxValue.Value); // Add() AssertEquals ("Test#1", (short)64, SqlInt16.Add (Test64, Test0).Value); AssertEquals ("Test#2", (short)228, SqlInt16.Add (Test64, Test164).Value); AssertEquals ("Test#3", (short)164, SqlInt16.Add (Test0, Test164).Value); AssertEquals ("Test#4", (short)SqlInt16.MaxValue, SqlInt16.Add (TestMax, Test0).Value); try { SqlInt16.Add (TestMax, Test64); Fail ("Test#5"); } catch (Exception e) { AssertEquals ("Test#6", typeof (OverflowException), e.GetType ()); } // Divide() AssertEquals ("Test#7", (short)2, SqlInt16.Divide (Test164, Test64).Value); AssertEquals ("Test#8", (short)0, SqlInt16.Divide (Test64, Test164).Value); try { SqlInt16.Divide(Test64, Test0); Fail ("Test#9"); } catch(Exception e) { AssertEquals ("Test#10", typeof (DivideByZeroException), e.GetType ()); } // Mod() AssertEquals ("Test#11", (SqlInt16)36, SqlInt16.Mod (Test164, Test64)); AssertEquals ("Test#12", (SqlInt16)64, SqlInt16.Mod (Test64, Test164)); // Multiply() AssertEquals ("Test#13", (short)10496, SqlInt16.Multiply (Test64, Test164).Value); AssertEquals ("Test#14", (short)0, SqlInt16.Multiply (Test64, Test0).Value); try { SqlInt16.Multiply (TestMax, Test64); Fail ("Test#15"); } catch(Exception e) { AssertEquals ("Test#16", typeof (OverflowException), e.GetType ()); } // Subtract() AssertEquals ("Test#17", (short)100, SqlInt16.Subtract (Test164, Test64).Value); try { SqlInt16.Subtract (SqlInt16.MinValue, Test164); Fail("Test#18"); } catch(Exception e) { AssertEquals ("Test#19", typeof (OverflowException), e.GetType ()); } } public void TestBitwiseMethods() { short MaxValue = SqlInt16.MaxValue.Value; SqlInt16 TestInt = new SqlInt16 (0); SqlInt16 TestIntMax = new SqlInt16 (MaxValue); SqlInt16 TestInt2 = new SqlInt16 (10922); SqlInt16 TestInt3 = new SqlInt16 (21845); // BitwiseAnd AssertEquals ("Test#1", (short)21845, SqlInt16.BitwiseAnd (TestInt3, TestIntMax).Value); AssertEquals ("Test#2", (short)0, SqlInt16.BitwiseAnd (TestInt2, TestInt3).Value); AssertEquals ("Test#3", (short)10922, SqlInt16.BitwiseAnd (TestInt2, TestIntMax).Value); //BitwiseOr AssertEquals ("Test#4", (short)MaxValue, SqlInt16.BitwiseOr (TestInt2, TestInt3).Value); AssertEquals ("Test#5", (short)21845, SqlInt16.BitwiseOr (TestInt, TestInt3).Value); AssertEquals ("Test#6", (short)MaxValue, SqlInt16.BitwiseOr (TestIntMax, TestInt2).Value); } public void TestCompareTo() { SqlInt16 TestInt4000 = new SqlInt16 (4000); SqlInt16 TestInt4000II = new SqlInt16 (4000); SqlInt16 TestInt10 = new SqlInt16 (10); SqlInt16 TestInt10000 = new SqlInt16 (10000); SqlString TestString = new SqlString ("This is a test"); Assert ("Test#1", TestInt4000.CompareTo (TestInt10) > 0); Assert ("Test#2", TestInt10.CompareTo (TestInt4000) < 0); Assert ("Test#3", TestInt4000II.CompareTo (TestInt4000) == 0); Assert ("Test#4", TestInt4000II.CompareTo (SqlInt16.Null) > 0); try { TestInt10.CompareTo (TestString); Fail ("Test#5"); } catch(Exception e) { AssertEquals ("Test#6", typeof (ArgumentException), e.GetType ()); } } public void TestEqualsMethod() { SqlInt16 Test0 = new SqlInt16 (0); SqlInt16 Test158 = new SqlInt16 (158); SqlInt16 Test180 = new SqlInt16 (180); SqlInt16 Test180II = new SqlInt16 (180); Assert ("Test#1", !Test0.Equals (Test158)); Assert ("Test#2", !Test158.Equals (Test180)); Assert ("Test#3", !Test180.Equals (new SqlString ("TEST"))); Assert ("Test#4", Test180.Equals (Test180II)); } public void TestStaticEqualsMethod() { SqlInt16 Test34 = new SqlInt16 (34); SqlInt16 Test34II = new SqlInt16 (34); SqlInt16 Test15 = new SqlInt16 (15); Assert ("Test#1", SqlInt16.Equals (Test34, Test34II).Value); Assert ("Test#2", !SqlInt16.Equals (Test34, Test15).Value); Assert ("Test#3", !SqlInt16.Equals (Test15, Test34II).Value); } public void TestGetHashCode() { SqlInt16 Test15 = new SqlInt16 (15); // FIXME: Better way to test GetHashCode()-methods AssertEquals ("Test#1", Test15.GetHashCode (), Test15.GetHashCode ()); } public void TestGetType() { SqlInt16 Test = new SqlInt16 (84); AssertEquals ("Test#1", "System.Data.SqlTypes.SqlInt16", Test.GetType ().ToString ()); } public void TestGreaters() { SqlInt16 Test10 = new SqlInt16 (10); SqlInt16 Test10II = new SqlInt16 (10); SqlInt16 Test110 = new SqlInt16 (110); // GreateThan () Assert ("Test#1", !SqlInt16.GreaterThan (Test10, Test110).Value); Assert ("Test#2", SqlInt16.GreaterThan (Test110, Test10).Value); Assert ("Test#3", !SqlInt16.GreaterThan (Test10II, Test10).Value); // GreaterTharOrEqual () Assert ("Test#4", !SqlInt16.GreaterThanOrEqual (Test10, Test110).Value); Assert ("Test#5", SqlInt16.GreaterThanOrEqual (Test110, Test10).Value); Assert ("Test#6", SqlInt16.GreaterThanOrEqual (Test10II, Test10).Value); } public void TestLessers() { SqlInt16 Test10 = new SqlInt16 (10); SqlInt16 Test10II = new SqlInt16 (10); SqlInt16 Test110 = new SqlInt16 (110); // LessThan() Assert ("Test#1", SqlInt16.LessThan (Test10, Test110).Value); Assert ("Test#2", !SqlInt16.LessThan (Test110, Test10).Value); Assert ("Test#3", !SqlInt16.LessThan (Test10II, Test10).Value); // LessThanOrEqual () Assert ("Test#4", SqlInt16.LessThanOrEqual (Test10, Test110).Value); Assert ("Test#5", !SqlInt16.LessThanOrEqual (Test110, Test10).Value); Assert ("Test#6", SqlInt16.LessThanOrEqual (Test10II, Test10).Value); Assert ("Test#7", SqlInt16.LessThanOrEqual (Test10II, SqlInt16.Null).IsNull); } public void TestNotEquals() { SqlInt16 Test12 = new SqlInt16 (12); SqlInt16 Test128 = new SqlInt16 (128); SqlInt16 Test128II = new SqlInt16 (128); Assert ("Test#1", SqlInt16.NotEquals (Test12, Test128).Value); Assert ("Test#2", SqlInt16.NotEquals (Test128, Test12).Value); Assert ("Test#3", SqlInt16.NotEquals (Test128II, Test12).Value); Assert ("Test#4", !SqlInt16.NotEquals (Test128II, Test128).Value); Assert ("Test#5", !SqlInt16.NotEquals (Test128, Test128II).Value); Assert ("Test#6", SqlInt16.NotEquals (SqlInt16.Null, Test128II).IsNull); Assert ("Test#7", SqlInt16.NotEquals (SqlInt16.Null, Test128II).IsNull); } public void TestOnesComplement() { SqlInt16 Test12 = new SqlInt16(12); SqlInt16 Test128 = new SqlInt16(128); AssertEquals ("Test#1", (SqlInt16)(-13), SqlInt16.OnesComplement (Test12)); AssertEquals ("Test#2", (SqlInt16)(-129), SqlInt16.OnesComplement (Test128)); } public void TestParse() { try { SqlInt16.Parse (null); Fail ("Test#1"); } catch (Exception e) { AssertEquals ("Test#2", typeof (ArgumentNullException), e.GetType ()); } try { SqlInt16.Parse ("not-a-number"); Fail ("Test#3"); } catch (Exception e) { AssertEquals ("Test#4", typeof (FormatException), e.GetType ()); } try { int OverInt = (int)SqlInt16.MaxValue + 1; SqlInt16.Parse (OverInt.ToString ()); Fail ("Test#5"); } catch (Exception e) { AssertEquals ("Test#6", typeof (OverflowException), e.GetType ()); } AssertEquals("Test#7", (short)150, SqlInt16.Parse ("150").Value); } public void TestConversions() { SqlInt16 Test12 = new SqlInt16 (12); SqlInt16 Test0 = new SqlInt16 (0); SqlInt16 TestNull = SqlInt16.Null; SqlInt16 Test1000 = new SqlInt16 (1000); SqlInt16 Test288 = new SqlInt16(288); // ToSqlBoolean () Assert ("TestA#1", Test12.ToSqlBoolean ().Value); Assert ("TestA#2", !Test0.ToSqlBoolean ().Value); Assert ("TestA#3", TestNull.ToSqlBoolean ().IsNull); // ToSqlByte () AssertEquals ("TestB#1", (byte)12, Test12.ToSqlByte ().Value); AssertEquals ("TestB#2", (byte)0, Test0.ToSqlByte ().Value); try { SqlByte b = (byte)Test1000.ToSqlByte (); Fail ("TestB#4"); } catch (Exception e) { AssertEquals ("TestB#5", typeof (OverflowException), e.GetType ()); } // ToSqlDecimal () AssertEquals ("TestC#1", (decimal)12, Test12.ToSqlDecimal ().Value); AssertEquals ("TestC#2", (decimal)0, Test0.ToSqlDecimal ().Value); AssertEquals ("TestC#3", (decimal)288, Test288.ToSqlDecimal ().Value); // ToSqlDouble () AssertEquals ("TestD#1", (double)12, Test12.ToSqlDouble ().Value); AssertEquals ("TestD#2", (double)0, Test0.ToSqlDouble ().Value); AssertEquals ("TestD#3", (double)1000, Test1000.ToSqlDouble ().Value); // ToSqlInt32 () AssertEquals ("TestE#1", (int)12, Test12.ToSqlInt32 ().Value); AssertEquals ("TestE#2", (int)0, Test0.ToSqlInt32 ().Value); AssertEquals ("TestE#3", (int)288, Test288.ToSqlInt32().Value); // ToSqlInt64 () AssertEquals ("TestF#1", (long)12, Test12.ToSqlInt64 ().Value); AssertEquals ("TestF#2", (long)0, Test0.ToSqlInt64 ().Value); AssertEquals ("TestF#3", (long)288, Test288.ToSqlInt64 ().Value); // ToSqlMoney () AssertEquals ("TestG#1", (decimal)12, Test12.ToSqlMoney ().Value); AssertEquals ("TestG#2", (decimal)0, Test0.ToSqlMoney ().Value); AssertEquals ("TestG#3", (decimal)288, Test288.ToSqlMoney ().Value); // ToSqlSingle () AssertEquals ("TestH#1", (float)12, Test12.ToSqlSingle ().Value); AssertEquals ("TestH#2", (float)0, Test0.ToSqlSingle ().Value); AssertEquals ("TestH#3", (float)288, Test288.ToSqlSingle().Value); // ToSqlString () AssertEquals ("TestI#1", "12", Test12.ToSqlString ().Value); AssertEquals ("TestI#2", "0", Test0.ToSqlString ().Value); AssertEquals ("TestI#3", "288", Test288.ToSqlString ().Value); // ToString () AssertEquals ("TestJ#1", "12", Test12.ToString ()); AssertEquals ("TestJ#2", "0", Test0.ToString ()); AssertEquals ("TestJ#3", "288", Test288.ToString ()); } public void TestXor() { SqlInt16 Test14 = new SqlInt16 (14); SqlInt16 Test58 = new SqlInt16 (58); SqlInt16 Test130 = new SqlInt16 (130); SqlInt16 TestMax = new SqlInt16 (SqlInt16.MaxValue.Value); SqlInt16 Test0 = new SqlInt16 (0); AssertEquals ("Test#1", (short)52, SqlInt16.Xor (Test14, Test58).Value); AssertEquals ("Test#2", (short)140, SqlInt16.Xor (Test14, Test130).Value); AssertEquals ("Test#3", (short)184, SqlInt16.Xor (Test58, Test130).Value); AssertEquals ("Test#4", (short)0, SqlInt16.Xor (TestMax, TestMax).Value); AssertEquals ("Test#5", TestMax.Value, SqlInt16.Xor (TestMax, Test0).Value); } // OPERATORS public void TestArithmeticOperators() { SqlInt16 Test24 = new SqlInt16 (24); SqlInt16 Test64 = new SqlInt16 (64); SqlInt16 Test2550 = new SqlInt16 (2550); SqlInt16 Test0 = new SqlInt16 (0); // "+"-operator AssertEquals ("TestA#1", (SqlInt16)2614,Test2550 + Test64); try { SqlInt16 result = Test64 + SqlInt16.MaxValue; Fail ("TestA#2"); } catch (Exception e) { AssertEquals ("TestA#3", typeof (OverflowException), e.GetType ()); } // "/"-operator AssertEquals ("TestB#1", (SqlInt16)39, Test2550 / Test64); AssertEquals ("TestB#2", (SqlInt16)0, Test24 / Test64); try { SqlInt16 result = Test2550 / Test0; Fail ("TestB#3"); } catch (Exception e) { AssertEquals ("TestB#4", typeof (DivideByZeroException), e.GetType ()); } // "*"-operator AssertEquals ("TestC#1", (SqlInt16)1536, Test64 * Test24); try { SqlInt16 test = (SqlInt16.MaxValue * Test64); Fail ("TestC#2"); } catch (Exception e) { AssertEquals ("TestC#3", typeof (OverflowException), e.GetType ()); } // "-"-operator AssertEquals ("TestD#1", (SqlInt16)2526, Test2550 - Test24); try { SqlInt16 test = SqlInt16.MinValue - Test64; Fail ("TestD#2"); } catch (Exception e) { AssertEquals ("OverflowException", typeof (OverflowException), e.GetType ()); } // "%"-operator AssertEquals ("TestE#1", (SqlInt16)54, Test2550 % Test64); AssertEquals ("TestE#2", (SqlInt16)24, Test24 % Test64); AssertEquals ("TestE#1", (SqlInt16)0, new SqlInt16 (100) % new SqlInt16 (10)); } public void TestBitwiseOperators() { SqlInt16 Test2 = new SqlInt16 (2); SqlInt16 Test4 = new SqlInt16 (4); SqlInt16 Test2550 = new SqlInt16 (2550); // & -operator AssertEquals ("TestA#1", (SqlInt16)0, Test2 & Test4); AssertEquals ("TestA#2", (SqlInt16)2, Test2 & Test2550); AssertEquals ("TestA#3", (SqlInt16)0, SqlInt16.MaxValue & SqlInt16.MinValue); // | -operator AssertEquals ("TestB#1", (SqlInt16)6,Test2 | Test4); AssertEquals ("TestB#2", (SqlInt16)2550, Test2 | Test2550); AssertEquals ("TestB#3", (SqlInt16)(-1), SqlInt16.MinValue | SqlInt16.MaxValue); // ^ -operator AssertEquals("TestC#1", (SqlInt16)2546, (Test2550 ^ Test4)); AssertEquals("TestC#2", (SqlInt16)6, (Test2 ^ Test4)); } public void TestThanOrEqualOperators() { SqlInt16 Test165 = new SqlInt16 (165); SqlInt16 Test100 = new SqlInt16 (100); SqlInt16 Test100II = new SqlInt16 (100); SqlInt16 Test255 = new SqlInt16 (2550); // == -operator Assert ("TestA#1", (Test100 == Test100II).Value); Assert ("TestA#2", !(Test165 == Test100).Value); Assert ("TestA#3", (Test165 == SqlInt16.Null).IsNull); // != -operator Assert ("TestB#1", !(Test100 != Test100II).Value); Assert ("TestB#2", (Test100 != Test255).Value); Assert ("TestB#3", (Test165 != Test255).Value); Assert ("TestB#4", (Test165 != SqlInt16.Null).IsNull); // > -operator Assert ("TestC#1", (Test165 > Test100).Value); Assert ("TestC#2", !(Test165 > Test255).Value); Assert ("TestC#3", !(Test100 > Test100II).Value); Assert ("TestC#4", (Test165 > SqlInt16.Null).IsNull); // >= -operator Assert ("TestD#1", !(Test165 >= Test255).Value); Assert ("TestD#2", (Test255 >= Test165).Value); Assert ("TestD#3", (Test100 >= Test100II).Value); Assert ("TestD#4", (Test165 >= SqlInt16.Null).IsNull); // < -operator Assert ("TestE#1", !(Test165 < Test100).Value); Assert ("TestE#2", (Test165 < Test255).Value); Assert ("TestE#3", !(Test100 < Test100II).Value); Assert ("TestE#4", (Test165 < SqlInt16.Null).IsNull); // <= -operator Assert ("TestF#1", (Test165 <= Test255).Value); Assert ("TestF#2", !(Test255 <= Test165).Value); Assert ("TestF#3", (Test100 <= Test100II).Value); Assert ("TestF#4", (Test165 <= SqlInt16.Null).IsNull); } public void TestOnesComplementOperator() { SqlInt16 Test12 = new SqlInt16 (12); SqlInt16 Test128 = new SqlInt16 (128); AssertEquals ("Test#1", (SqlInt16)(-13), ~Test12); AssertEquals ("Test#2", (SqlInt16)(-129), ~Test128); AssertEquals ("Test#3", SqlInt16.Null, ~SqlInt16.Null); } public void TestUnaryNegation() { SqlInt16 Test = new SqlInt16 (2000); SqlInt16 TestNeg = new SqlInt16 (-3000); SqlInt16 Result = -Test; AssertEquals ("Test#1", (short)(-2000), Result.Value); Result = -TestNeg; AssertEquals ("Test#2", (short)3000, Result.Value); } public void TestSqlBooleanToSqlInt16() { SqlBoolean TestBoolean = new SqlBoolean (true); SqlInt16 Result; Result = (SqlInt16)TestBoolean; AssertEquals ("Test#1", (short)1, Result.Value); Result = (SqlInt16)SqlBoolean.Null; Assert ("Test#2", Result.IsNull); } public void TestSqlDecimalToSqlInt16() { SqlDecimal TestDecimal64 = new SqlDecimal (64); SqlDecimal TestDecimal900 = new SqlDecimal (90000); AssertEquals ("Test#1", (short)64, ((SqlInt16)TestDecimal64).Value); AssertEquals ("Test#2", SqlInt16.Null, ((SqlInt16)SqlDecimal.Null)); try { SqlInt16 test = (SqlInt16)TestDecimal900; Fail ("Test#3"); } catch (Exception e) { AssertEquals("Test#4", typeof(OverflowException), e.GetType ()); } } public void TestSqlDoubleToSqlInt16() { SqlDouble TestDouble64 = new SqlDouble (64); SqlDouble TestDouble900 = new SqlDouble (90000); AssertEquals ("Test#1", (short)64, ((SqlInt16)TestDouble64).Value); AssertEquals ("Test#2", SqlInt16.Null, ((SqlInt16)SqlDouble.Null)); try { SqlInt16 test = (SqlInt16)TestDouble900; Fail ("Test#3"); } catch (Exception e) { AssertEquals("Test#4", typeof (OverflowException), e.GetType ()); } } public void TestSqlIntToInt16() { SqlInt16 Test = new SqlInt16(12); Int16 Result = (Int16)Test; AssertEquals("Test#1", (short)12, Result); } public void TestSqlInt32ToSqlInt16() { SqlInt32 Test64 = new SqlInt32 (64); SqlInt32 Test900 = new SqlInt32 (90000); AssertEquals ("Test#1", (short)64, ((SqlInt16)Test64).Value); try { SqlInt16 test = (SqlInt16)Test900; Fail ("Test#2"); } catch (Exception e) { AssertEquals ("Test#3", typeof (OverflowException), e.GetType ()); } } public void TestSqlInt64ToSqlInt16() { SqlInt64 Test64 = new SqlInt64 (64); SqlInt64 Test900 = new SqlInt64 (90000); AssertEquals ("Test#1", (short)64, ((SqlInt16)Test64).Value); try { SqlInt16 test = (SqlInt16)Test900; Fail ("Test#2"); } catch (Exception e) { AssertEquals("Test#3", typeof (OverflowException), e.GetType ()); } } public void TestSqlMoneyToSqlInt16() { SqlMoney TestMoney64 = new SqlMoney(64); SqlMoney TestMoney900 = new SqlMoney(90000); AssertEquals ("Test#1", (short)64, ((SqlInt16)TestMoney64).Value); try { SqlInt16 test = (SqlInt16)TestMoney900; Fail ("Test#2"); } catch (Exception e) { AssertEquals("test#3", typeof (OverflowException), e.GetType ()); } } public void TestSqlSingleToSqlInt16() { SqlSingle TestSingle64 = new SqlSingle(64); SqlSingle TestSingle900 = new SqlSingle(90000); AssertEquals("Test#1", (short)64, ((SqlInt16)TestSingle64).Value); try { SqlInt16 test = (SqlInt16)TestSingle900; Fail ("Test#2"); } catch (Exception e) { AssertEquals ("Test#3", typeof (OverflowException), e.GetType ()); } } public void TestSqlStringToSqlInt16() { SqlString TestString = new SqlString("Test string"); SqlString TestString100 = new SqlString("100"); SqlString TestString1000 = new SqlString("100000"); AssertEquals ("Test#1", (short)100, ((SqlInt16)TestString100).Value); try { SqlInt16 test = (SqlInt16)TestString1000; Fail ("Test#2"); } catch(Exception e) { AssertEquals ("Test#3", typeof (OverflowException), e.GetType ()); } try { SqlInt16 test = (SqlInt16)TestString; Fail ("Test#3"); } catch(Exception e) { AssertEquals ("Test#4", typeof (FormatException), e.GetType ()); } } public void TestByteToSqlInt16() { short TestShort = 14; AssertEquals ("Test#1", (short)14, ((SqlInt16)TestShort).Value); } } } --------------Boundary-00=_ZB1QZAV80GEXSHVQSAAB Content-Type: text/x-c++src; charset="utf-8"; name="SqlInt64Test.cs" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="SqlInt64Test.cs" // // SqlInt64Test.cs - NUnit Test Cases for System.Data.SqlTypes.SqlInt64 // // Ville Palo (vi64pa@koti.soon.fi) // // (C) Ville Palo 2002 // using NUnit.Framework; using System; using System.Data.SqlTypes; namespace MonoTests.System.Data.SqlTypes { public class SqlInt64Test : TestCase { public SqlInt64Test() : base ("System.Data.SqlTypes.SqlInt64") {} public SqlInt64Test(string name) : base(name) {} protected override void TearDown() {} protected override void SetUp() {} public static ITest Suite { get { return new TestSuite(typeof(SqlInt64)); } } // Test constructor public void TestCreate() { SqlInt64 TestLong = new SqlInt64 (29); AssertEquals ("#A01", (long)29, TestLong.Value); TestLong = new SqlInt64 (-9000); AssertEquals ("#A02", (long)-9000, TestLong.Value); } // Test public fields public void TestPublicFields() { AssertEquals ("#B01", (long)9223372036854775807, SqlInt64.MaxValue.Value); AssertEquals ("#B02", (long)(-9223372036854775808), SqlInt64.MinValue.Value); Assert ("#B03", SqlInt64.Null.IsNull); AssertEquals ("#B04", (long)0, SqlInt64.Zero.Value); } // Test properties public void TestProperties() { SqlInt64 Test5443 = new SqlInt64 (5443); SqlInt64 Test1 = new SqlInt64 (1); Assert ("#C01", SqlInt64.Null.IsNull); AssertEquals ("#C02", (long)5443, Test5443.Value); AssertEquals ("#C03", (long)1, Test1.Value); } // PUBLIC METHODS public void TestArithmeticMethods() { SqlInt64 Test64 = new SqlInt64 (64); SqlInt64 Test0 = new SqlInt64 (0); SqlInt64 Test164 = new SqlInt64 (164); SqlInt64 TestMax = new SqlInt64 (SqlInt64.MaxValue.Value); // Add() AssertEquals ("#D01", (long)64, SqlInt64.Add (Test64, Test0).Value); AssertEquals ("#D02", (long)228, SqlInt64.Add (Test64, Test164).Value); AssertEquals ("#D03", (long)164, SqlInt64.Add (Test0, Test164).Value); AssertEquals ("#D04", (long)SqlInt64.MaxValue, SqlInt64.Add (TestMax, Test0).Value); try { SqlInt64.Add (TestMax, Test64); Fail ("#D05"); } catch (Exception e) { AssertEquals ("#D06", typeof (OverflowException), e.GetType ()); } // Divide() AssertEquals ("#D07", (long)2, SqlInt64.Divide (Test164, Test64).Value); AssertEquals ("#D08", (long)0, SqlInt64.Divide (Test64, Test164).Value); try { SqlInt64.Divide(Test64, Test0); Fail ("#D09"); } catch(Exception e) { AssertEquals ("#D10", typeof (DivideByZeroException), e.GetType ()); } // Mod() AssertEquals ("#D11", (SqlInt64)36, SqlInt64.Mod (Test164, Test64)); AssertEquals ("#D12", (SqlInt64)64, SqlInt64.Mod (Test64, Test164)); // Multiply() AssertEquals ("#D13", (long)10496, SqlInt64.Multiply (Test64, Test164).Value); AssertEquals ("#D14", (long)0, SqlInt64.Multiply (Test64, Test0).Value); try { SqlInt64.Multiply (TestMax, Test64); Fail ("#D15"); } catch(Exception e) { AssertEquals ("#D16", typeof (OverflowException), e.GetType ()); } // Subtract() AssertEquals ("#D17", (long)100, SqlInt64.Subtract (Test164, Test64).Value); try { SqlInt64.Subtract (SqlInt64.MinValue, Test164); Fail ("#D18"); } catch(Exception e) { AssertEquals ("#D19", typeof (OverflowException), e.GetType ()); } } public void TestBitwiseMethods() { long MaxValue = SqlInt64.MaxValue.Value; SqlInt64 TestInt = new SqlInt64 (0); SqlInt64 TestIntMax = new SqlInt64 (MaxValue); SqlInt64 TestInt2 = new SqlInt64 (10922); SqlInt64 TestInt3 = new SqlInt64 (21845); // BitwiseAnd AssertEquals ("#E01", (long)21845, SqlInt64.BitwiseAnd (TestInt3, TestIntMax).Value); AssertEquals ("#E02", (long)0, SqlInt64.BitwiseAnd (TestInt2, TestInt3).Value); AssertEquals ("#E03", (long)10922, SqlInt64.BitwiseAnd (TestInt2, TestIntMax).Value); //BitwiseOr AssertEquals ("#E04", (long)21845, SqlInt64.BitwiseOr (TestInt, TestInt3).Value); AssertEquals ("#E05", (long)MaxValue, SqlInt64.BitwiseOr (TestIntMax, TestInt2).Value); } public void TestCompareTo() { SqlInt64 TestInt4000 = new SqlInt64 (4000); SqlInt64 TestInt4000II = new SqlInt64 (4000); SqlInt64 TestInt10 = new SqlInt64 (10); SqlInt64 TestInt10000 = new SqlInt64 (10000); SqlString TestString = new SqlString ("This is a test"); Assert ("#F01", TestInt4000.CompareTo (TestInt10) > 0); Assert ("#F02", TestInt10.CompareTo (TestInt4000) < 0); Assert ("#F03", TestInt4000II.CompareTo (TestInt4000) == 0); Assert ("#F04", TestInt4000II.CompareTo (SqlInt64.Null) > 0); try { TestInt10.CompareTo (TestString); Fail("#F05"); } catch(Exception e) { AssertEquals ("#F06", typeof (ArgumentException), e.GetType ()); } } public void TestEqualsMethod() { SqlInt64 Test0 = new SqlInt64 (0); SqlInt64 Test158 = new SqlInt64 (158); SqlInt64 Test180 = new SqlInt64 (180); SqlInt64 Test180II = new SqlInt64 (180); Assert ("#G01", !Test0.Equals (Test158)); Assert ("#G01", !Test158.Equals (Test180)); Assert ("#G03", !Test180.Equals (new SqlString ("TEST"))); Assert ("#G04", Test180.Equals (Test180II)); } public void TestStaticEqualsMethod() { SqlInt64 Test34 = new SqlInt64 (34); SqlInt64 Test34II = new SqlInt64 (34); SqlInt64 Test15 = new SqlInt64 (15); Assert ("#H01", SqlInt64.Equals (Test34, Test34II).Value); Assert ("#H02", !SqlInt64.Equals (Test34, Test15).Value); Assert ("#H03", !SqlInt64.Equals (Test15, Test34II).Value); } public void TestGetHashCode() { SqlInt64 Test15 = new SqlInt64 (15); // FIXME: Better way to test HashCode AssertEquals ("#I01", (int)15, Test15.GetHashCode ()); } public void TestGetType() { SqlInt64 Test = new SqlInt64 (84); AssertEquals ("#J01", "System.Data.SqlTypes.SqlInt64", Test.GetType ().ToString ()); } public void TestGreaters() { SqlInt64 Test10 = new SqlInt64 (10); SqlInt64 Test10II = new SqlInt64 (10); SqlInt64 Test110 = new SqlInt64 (110); // GreateThan () Assert ("#K01", !SqlInt64.GreaterThan (Test10, Test110).Value); Assert ("#K02", SqlInt64.GreaterThan (Test110, Test10).Value); Assert ("#K03", !SqlInt64.GreaterThan (Test10II, Test10).Value); // GreaterTharOrEqual () Assert ("#K04", !SqlInt64.GreaterThanOrEqual (Test10, Test110).Value); Assert ("#K05", SqlInt64.GreaterThanOrEqual (Test110, Test10).Value); Assert ("#K06", SqlInt64.GreaterThanOrEqual (Test10II, Test10).Value); } public void TestLessers() { SqlInt64 Test10 = new SqlInt64 (10); SqlInt64 Test10II = new SqlInt64 (10); SqlInt64 Test110 = new SqlInt64 (110); // LessThan() Assert ("#L01", SqlInt64.LessThan (Test10, Test110).Value); Assert ("#L02", !SqlInt64.LessThan (Test110, Test10).Value); Assert ("#L03", !SqlInt64.LessThan (Test10II, Test10).Value); // LessThanOrEqual () Assert ("#L04", SqlInt64.LessThanOrEqual (Test10, Test110).Value); Assert ("#L05", !SqlInt64.LessThanOrEqual (Test110, Test10).Value); Assert ("#L06", SqlInt64.LessThanOrEqual (Test10II, Test10).Value); Assert ("#L07", SqlInt64.LessThanOrEqual (Test10II, SqlInt64.Null).IsNull); } public void TestNotEquals() { SqlInt64 Test12 = new SqlInt64 (12); SqlInt64 Test128 = new SqlInt64 (128); SqlInt64 Test128II = new SqlInt64 (128); Assert ("#M01", SqlInt64.NotEquals (Test12, Test128).Value); Assert ("#M02", SqlInt64.NotEquals (Test128, Test12).Value); Assert ("#M03", SqlInt64.NotEquals (Test128II, Test12).Value); Assert ("#M04", !SqlInt64.NotEquals (Test128II, Test128).Value); Assert ("#M05", !SqlInt64.NotEquals (Test128, Test128II).Value); Assert ("#M06", SqlInt64.NotEquals (SqlInt64.Null, Test128II).IsNull); Assert ("#M07", SqlInt64.NotEquals (SqlInt64.Null, Test128II).IsNull); } public void TestOnesComplement() { SqlInt64 Test12 = new SqlInt64(12); SqlInt64 Test128 = new SqlInt64(128); AssertEquals ("#N01", (SqlInt64)(-13), SqlInt64.OnesComplement (Test12)); AssertEquals ("#N02", (SqlInt64)(-129), SqlInt64.OnesComplement (Test128)); } public void TestParse() { try { SqlInt64.Parse (null); Fail ("#O01"); } catch (Exception e) { AssertEquals ("#O02", typeof (ArgumentNullException), e.GetType ()); } try { SqlInt64.Parse ("not-a-number"); Fail ("#O03"); } catch (Exception e) { AssertEquals ("#O04", typeof (FormatException), e.GetType ()); } try { SqlInt64.Parse ("1000000000000000000000000000"); Fail ("#O05"); } catch (Exception e) { AssertEquals ("#O06", typeof (OverflowException), e.GetType ()); } AssertEquals("#O07", (long)150, SqlInt64.Parse ("150").Value); } public void TestConversions() { SqlInt64 Test12 = new SqlInt64 (12); SqlInt64 Test0 = new SqlInt64 (0); SqlInt64 TestNull = SqlInt64.Null; SqlInt64 Test1000 = new SqlInt64 (1000); SqlInt64 Test288 = new SqlInt64(288); // ToSqlBoolean () Assert ("#P01", Test12.ToSqlBoolean ().Value); Assert ("#P02", !Test0.ToSqlBoolean ().Value); Assert ("#P03", TestNull.ToSqlBoolean ().IsNull); // ToSqlByte () AssertEquals ("#P04", (byte)12, Test12.ToSqlByte ().Value); AssertEquals ("#P05", (byte)0, Test0.ToSqlByte ().Value); try { SqlByte b = (byte)Test1000.ToSqlByte (); Fail ("#P06"); } catch (Exception e) { AssertEquals ("#P07", typeof (OverflowException), e.GetType ()); } // ToSqlDecimal () AssertEquals ("#P08", (decimal)12, Test12.ToSqlDecimal ().Value); AssertEquals ("#P09", (decimal)0, Test0.ToSqlDecimal ().Value); AssertEquals ("#P10", (decimal)288, Test288.ToSqlDecimal ().Value); // ToSqlDouble () AssertEquals ("#P11", (double)12, Test12.ToSqlDouble ().Value); AssertEquals ("#P12", (double)0, Test0.ToSqlDouble ().Value); AssertEquals ("#P13", (double)1000, Test1000.ToSqlDouble ().Value); // ToSqlInt32 () AssertEquals ("#P14", (int)12, Test12.ToSqlInt32 ().Value); AssertEquals ("#P15", (int)0, Test0.ToSqlInt32 ().Value); AssertEquals ("#P16", (int)288, Test288.ToSqlInt32().Value); // ToSqlInt16 () AssertEquals ("#P17", (short)12, Test12.ToSqlInt16 ().Value); AssertEquals ("#P18", (short)0, Test0.ToSqlInt16 ().Value); AssertEquals ("#P19", (short)288, Test288.ToSqlInt16 ().Value); // ToSqlMoney () AssertEquals ("#P20", (decimal)12, Test12.ToSqlMoney ().Value); AssertEquals ("#P21", (decimal)0, Test0.ToSqlMoney ().Value); AssertEquals ("#P22", (decimal)288, Test288.ToSqlMoney ().Value); // ToSqlSingle () AssertEquals ("#P23", (float)12, Test12.ToSqlSingle ().Value); AssertEquals ("#P24", (float)0, Test0.ToSqlSingle ().Value); AssertEquals ("#P25", (float)288, Test288.ToSqlSingle().Value); // ToSqlString () AssertEquals ("#P26", "12", Test12.ToSqlString ().Value); AssertEquals ("#P27", "0", Test0.ToSqlString ().Value); AssertEquals ("#P28", "288", Test288.ToSqlString ().Value); // ToString () AssertEquals ("#P29", "12", Test12.ToString ()); AssertEquals ("#P30", "0", Test0.ToString ()); AssertEquals ("#P31", "288", Test288.ToString ()); } public void TestXor() { SqlInt64 Test14 = new SqlInt64 (14); SqlInt64 Test58 = new SqlInt64 (58); SqlInt64 Test130 = new SqlInt64 (130); SqlInt64 TestMax = new SqlInt64 (SqlInt64.MaxValue.Value); SqlInt64 Test0 = new SqlInt64 (0); AssertEquals ("#Q01", (long)52, SqlInt64.Xor (Test14, Test58).Value); AssertEquals ("#Q02", (long)140, SqlInt64.Xor (Test14, Test130).Value); AssertEquals ("#Q03", (long)184, SqlInt64.Xor (Test58, Test130).Value); AssertEquals ("#Q04", (long)0, SqlInt64.Xor (TestMax, TestMax).Value); AssertEquals ("#Q05", TestMax.Value, SqlInt64.Xor (TestMax, Test0).Value); } // OPERATORS public void TestArithmeticOperators() { SqlInt64 Test24 = new SqlInt64 (24); SqlInt64 Test64 = new SqlInt64 (64); SqlInt64 Test2550 = new SqlInt64 (2550); SqlInt64 Test0 = new SqlInt64 (0); // "+"-operator AssertEquals ("#R01", (SqlInt64)2614,Test2550 + Test64); try { SqlInt64 result = Test64 + SqlInt64.MaxValue; Fail ("#R02"); } catch (Exception e) { AssertEquals ("#R03", typeof (OverflowException), e.GetType ()); } // "/"-operator AssertEquals ("#R04", (SqlInt64)39, Test2550 / Test64); AssertEquals ("#R05", (SqlInt64)0, Test24 / Test64); try { SqlInt64 result = Test2550 / Test0; Fail ("#R06"); } catch (Exception e) { AssertEquals ("#R07", typeof (DivideByZeroException), e.GetType ()); } // "*"-operator AssertEquals ("#R08", (SqlInt64)1536, Test64 * Test24); try { SqlInt64 test = (SqlInt64.MaxValue * Test64); Fail ("TestC#2"); } catch (Exception e) { AssertEquals ("#R08", typeof (OverflowException), e.GetType ()); } // "-"-operator AssertEquals ("#R09", (SqlInt64)2526, Test2550 - Test24); try { SqlInt64 test = SqlInt64.MinValue - Test64; Fail ("#R10"); } catch (Exception e) { AssertEquals ("#R11", typeof (OverflowException), e.GetType ()); } // "%"-operator AssertEquals ("#R12", (SqlInt64)54, Test2550 % Test64); AssertEquals ("#R13", (SqlInt64)24, Test24 % Test64); AssertEquals ("#R14", (SqlInt64)0, new SqlInt64 (100) % new SqlInt64 (10)); } public void TestBitwiseOperators() { SqlInt64 Test2 = new SqlInt64 (2); SqlInt64 Test4 = new SqlInt64 (4); SqlInt64 Test2550 = new SqlInt64 (2550); // & -operator AssertEquals ("#S01", (SqlInt64)0, Test2 & Test4); AssertEquals ("#S02", (SqlInt64)2, Test2 & Test2550); AssertEquals ("#S03", (SqlInt64)0, SqlInt64.MaxValue & SqlInt64.MinValue); // | -operator AssertEquals ("#S04", (SqlInt64)6,Test2 | Test4); AssertEquals ("#S05", (SqlInt64)2550, Test2 | Test2550); AssertEquals ("#S06", (SqlInt64)(-1), SqlInt64.MinValue | SqlInt64.MaxValue); // ^ -operator AssertEquals("#S07", (SqlInt64)2546, (Test2550 ^ Test4)); AssertEquals("#S08", (SqlInt64)6, (Test2 ^ Test4)); } public void TestThanOrEqualOperators() { SqlInt64 Test165 = new SqlInt64 (165); SqlInt64 Test100 = new SqlInt64 (100); SqlInt64 Test100II = new SqlInt64 (100); SqlInt64 Test255 = new SqlInt64 (2550); // == -operator Assert ("#T01", (Test100 == Test100II).Value); Assert ("#T02", !(Test165 == Test100).Value); Assert ("#T03", (Test165 == SqlInt64.Null).IsNull); // != -operator Assert ("#T04", !(Test100 != Test100II).Value); Assert ("#T05", (Test100 != Test255).Value); Assert ("#T06", (Test165 != Test255).Value); Assert ("#T07", (Test165 != SqlInt64.Null).IsNull); // > -operator Assert ("#T08", (Test165 > Test100).Value); Assert ("#T09", !(Test165 > Test255).Value); Assert ("#T10", !(Test100 > Test100II).Value); Assert ("#T11", (Test165 > SqlInt64.Null).IsNull); // >= -operator Assert ("#T12", !(Test165 >= Test255).Value); Assert ("#T13", (Test255 >= Test165).Value); Assert ("#T14", (Test100 >= Test100II).Value); Assert ("#T15", (Test165 >= SqlInt64.Null).IsNull); // < -operator Assert ("#T16", !(Test165 < Test100).Value); Assert ("#T17", (Test165 < Test255).Value); Assert ("#T18", !(Test100 < Test100II).Value); Assert ("#T19", (Test165 < SqlInt64.Null).IsNull); // <= -operator Assert ("#T20", (Test165 <= Test255).Value); Assert ("#T21", !(Test255 <= Test165).Value); Assert ("#T22", (Test100 <= Test100II).Value); Assert ("#T23", (Test165 <= SqlInt64.Null).IsNull); } public void TestOnesComplementOperator() { SqlInt64 Test12 = new SqlInt64 (12); SqlInt64 Test128 = new SqlInt64 (128); AssertEquals ("#V01", (SqlInt64)(-13), ~Test12); AssertEquals ("#V02", (SqlInt64)(-129), ~Test128); AssertEquals ("#V03", SqlInt64.Null, ~SqlInt64.Null); } public void TestUnaryNegation() { SqlInt64 Test = new SqlInt64 (2000); SqlInt64 TestNeg = new SqlInt64 (-3000); SqlInt64 Result = -Test; AssertEquals ("#W01", (long)(-2000), Result.Value); Result = -TestNeg; AssertEquals ("#W02", (long)3000, Result.Value); } public void TestSqlBooleanToSqlInt64() { SqlBoolean TestBoolean = new SqlBoolean (true); SqlInt64 Result; Result = (SqlInt64)TestBoolean; AssertEquals ("#X01", (long)1, Result.Value); Result = (SqlInt64)SqlBoolean.Null; Assert ("#X02", Result.IsNull); } public void TestSqlDecimalToSqlInt64() { SqlDecimal TestDecimal64 = new SqlDecimal (64); SqlDecimal TestDecimal900 = new SqlDecimal (90000); AssertEquals("#Y01", (long)64, ((SqlInt64)TestDecimal64).Value); AssertEquals("#Y02", SqlInt64.Null, ((SqlInt64)SqlDecimal.Null)); try { SqlInt64 test = (SqlInt64)SqlDecimal.MaxValue; Fail("#Y03"); } catch (Exception e) { AssertEquals("#Y04", typeof(OverflowException), e.GetType()); } } public void TestSqlDoubleToSqlInt64() { SqlDouble TestDouble64 = new SqlDouble (64); SqlDouble TestDouble900 = new SqlDouble (90000); AssertEquals ("#Z01", (long)64, ((SqlInt64)TestDouble64).Value); AssertEquals ("#Z02", SqlInt64.Null, ((SqlInt64)SqlDouble.Null)); try { SqlInt64 test = (SqlInt64)SqlDouble.MaxValue; Fail ("#Z03"); } catch (Exception e) { AssertEquals("#Z04", typeof (OverflowException), e.GetType ()); } } public void TestSql64IntToInt64() { SqlInt64 Test = new SqlInt64 (12); Int64 Result = (Int64)Test; AssertEquals ("#AA01", (long)12, Result); } public void TestSqlInt32ToSqlInt64() { SqlInt32 Test64 = new SqlInt32 (64); AssertEquals ("#AB01", (long)64, ((SqlInt64)Test64).Value); } public void TestSqlInt16ToSqlInt64() { SqlInt16 Test64 = new SqlInt16 (64); AssertEquals ("#AC01", (long)64, ((SqlInt64)Test64).Value); } public void TestSqlMoneyToSqlInt64() { SqlMoney TestMoney64 = new SqlMoney(64); AssertEquals ("#AD01", (long)64, ((SqlInt64)TestMoney64).Value); } public void TestSqlSingleToSqlInt64() { SqlSingle TestSingle64 = new SqlSingle (64); AssertEquals ("#AE01", (long)64, ((SqlInt64)TestSingle64).Value); } public void TestSqlStringToSqlInt64() { SqlString TestString = new SqlString ("Test string"); SqlString TestString100 = new SqlString ("100"); SqlString TestString1000 = new SqlString ("1000000000000000000000"); AssertEquals ("#AF01", (long)100, ((SqlInt64)TestString100).Value); try { SqlInt64 test = (SqlInt64)TestString1000; Fail ("#AF02"); } catch(Exception e) { AssertEquals ("#AF03", typeof (OverflowException), e.GetType ()); } try { SqlInt64 test = (SqlInt64)TestString; Fail ("#AF03"); } catch(Exception e) { AssertEquals ("#AF04", typeof (FormatException), e.GetType ()); } } public void TestByteToSqlInt64() { short TestShort = 14; AssertEquals ("#G01", (long)14, ((SqlInt64)TestShort).Value); } } } --------------Boundary-00=_ZB1QZAV80GEXSHVQSAAB-- From groith@tcrz.net Wed Oct 9 16:51:59 2002 From: groith@tcrz.net (Guenther Roith) Date: Wed, 9 Oct 2002 17:51:59 +0200 Subject: [Mono-list] ODBC.NET Data Provider References: <1034176378.10835.5.camel@localhost> Message-ID: <000f01c26fab$cdffcf60$010aa8c0@roithw2k> Hi! I'm not sure, if this is the right place to put it. In the .NET Framwork 1.1, it's in the System.Data asembly, and it would make sense to keep that. Perhaps you should move it to mcs/class/System.Data./System.Data.Odbc. Johannes ----- Original Message ----- From: "Rodrigo Moya" To: "Brian Ritchie" Cc: ; "Mono List" Sent: Wednesday, October 09, 2002 5:12 PM Subject: RE: [Mono-list] ODBC.NET Data Provider > On Wed, 2002-10-09 at 15:48, Brian Ritchie wrote: > > Ok...I've attached the ODBC.NET files. Could someone put them in CVS for > > me? Thanks :) > > > done. It's no on mcs/class/System.Data.Odbc > > I think, given the size of your contribution, and the need to continue > development on it, that you should ask for a CVS account. Look at the > web site to see how you can do that. > > cheers > -- > Rodrigo Moya > > > _______________________________________________ > Mono-list maillist - Mono-list@ximian.com > http://lists.ximian.com/mailman/listinfo/mono-list > From danmorg@sc.rr.com Wed Oct 9 17:14:33 2002 From: danmorg@sc.rr.com (Daniel Morgan) Date: Wed, 9 Oct 2002 12:14:33 -0400 Subject: [Mono-list] ODBC.NET Data Provider In-Reply-To: <000f01c26fab$cdffcf60$010aa8c0@roithw2k> Message-ID: How does one "move" a directory in cvs to some other place? Move the files: From: mcs/class/System.Data.Odbc/System.Data.Odbc To: mcs/class/System.Data/System.Data.Odbc -----Original Message----- From: mono-list-admin@ximian.com [mailto:mono-list-admin@ximian.com]On Behalf Of Guenther Roith Sent: Wednesday, October 09, 2002 11:52 AM To: Rodrigo Moya; Brian Ritchie Cc: danmorg@sc.rr.com; Mono List Subject: Re: [Mono-list] ODBC.NET Data Provider Hi! I'm not sure, if this is the right place to put it. In the .NET Framwork 1.1, it's in the System.Data asembly, and it would make sense to keep that. Perhaps you should move it to mcs/class/System.Data./System.Data.Odbc. Johannes ----- Original Message ----- From: "Rodrigo Moya" To: "Brian Ritchie" Cc: ; "Mono List" Sent: Wednesday, October 09, 2002 5:12 PM Subject: RE: [Mono-list] ODBC.NET Data Provider > On Wed, 2002-10-09 at 15:48, Brian Ritchie wrote: > > Ok...I've attached the ODBC.NET files. Could someone put them in CVS for > > me? Thanks :) > > > done. It's no on mcs/class/System.Data.Odbc > > I think, given the size of your contribution, and the need to continue > development on it, that you should ask for a CVS account. Look at the > web site to see how you can do that. > > cheers > -- > Rodrigo Moya > > > _______________________________________________ > Mono-list maillist - Mono-list@ximian.com > http://lists.ximian.com/mailman/listinfo/mono-list > _______________________________________________ Mono-list maillist - Mono-list@ximian.com http://lists.ximian.com/mailman/listinfo/mono-list From groith@tcrz.net Wed Oct 9 17:24:41 2002 From: groith@tcrz.net (Guenther Roith) Date: Wed, 9 Oct 2002 18:24:41 +0200 Subject: [Mono-list] ODBC.NET Data Provider References: Message-ID: <001401c26fb0$5f72ee10$010aa8c0@roithw2k> I would DELETE and check in again. Johannes ----- Original Message ----- From: "Daniel Morgan" To: "Guenther Roith" Cc: "Mono List" Sent: Wednesday, October 09, 2002 6:14 PM Subject: RE: [Mono-list] ODBC.NET Data Provider > How does one "move" a directory in cvs to some other place? > > Move the files: > From: > mcs/class/System.Data.Odbc/System.Data.Odbc > To: > mcs/class/System.Data/System.Data.Odbc > > -----Original Message----- > From: mono-list-admin@ximian.com [mailto:mono-list-admin@ximian.com]On > Behalf Of Guenther Roith > Sent: Wednesday, October 09, 2002 11:52 AM > To: Rodrigo Moya; Brian Ritchie > Cc: danmorg@sc.rr.com; Mono List > Subject: Re: [Mono-list] ODBC.NET Data Provider > > > Hi! > > I'm not sure, if this is the right place to put it. In the .NET Framwork > 1.1, it's in the System.Data asembly, and it would make sense to keep that. > Perhaps you should move it to mcs/class/System.Data./System.Data.Odbc. > > Johannes > > ----- Original Message ----- > From: "Rodrigo Moya" > To: "Brian Ritchie" > Cc: ; "Mono List" > Sent: Wednesday, October 09, 2002 5:12 PM > Subject: RE: [Mono-list] ODBC.NET Data Provider > > > > On Wed, 2002-10-09 at 15:48, Brian Ritchie wrote: > > > Ok...I've attached the ODBC.NET files. Could someone put them in CVS > for > > > me? Thanks :) > > > > > done. It's no on mcs/class/System.Data.Odbc > > > > I think, given the size of your contribution, and the need to continue > > development on it, that you should ask for a CVS account. Look at the > > web site to see how you can do that. > > > > cheers > > -- > > Rodrigo Moya > > > > > > _______________________________________________ > > Mono-list maillist - Mono-list@ximian.com > > http://lists.ximian.com/mailman/listinfo/mono-list > > > > > _______________________________________________ > Mono-list maillist - Mono-list@ximian.com > http://lists.ximian.com/mailman/listinfo/mono-list > From rodrigo@ximian.com Wed Oct 9 17:31:15 2002 From: rodrigo@ximian.com (Rodrigo Moya) Date: 09 Oct 2002 18:31:15 +0200 Subject: [Mono-list] ODBC.NET Data Provider In-Reply-To: <000f01c26fab$cdffcf60$010aa8c0@roithw2k> References: <1034176378.10835.5.camel@localhost> <000f01c26fab$cdffcf60$010aa8c0@roithw2k> Message-ID: <1034181074.10833.18.camel@localhost> On Wed, 2002-10-09 at 17:51, Guenther Roith wrote: > Hi! > > I'm not sure, if this is the right place to put it. In the .NET Framwork > 1.1, it's in the System.Data asembly, and it would make sense to keep that. > Perhaps you should move it to mcs/class/System.Data./System.Data.Odbc. > yes, sorry, danmorg already told me I did it wrong, but we were not 100% sure if it goes to its own assembly or not. If you say so, I'll believe it[1], so moving it now... cheers [1] if it's wrong, it would be your fault :-) -- Rodrigo Moya From rodrigo@ximian.com Wed Oct 9 17:33:34 2002 From: rodrigo@ximian.com (Rodrigo Moya) Date: 09 Oct 2002 18:33:34 +0200 Subject: [Mono-list] ODBC.NET Data Provider In-Reply-To: References: Message-ID: <1034181213.10835.20.camel@localhost> On Wed, 2002-10-09 at 18:14, Daniel Morgan wrote: > How does one "move" a directory in cvs to some other place? > > Move the files: > From: > mcs/class/System.Data.Odbc/System.Data.Odbc > To: > mcs/class/System.Data/System.Data.Odbc > usually you ask the cvsmaster, for not losing history, but now we don't have history so I'm doing it by hand cheers -- Rodrigo Moya From rodrigo@ximian.com Wed Oct 9 18:50:57 2002 From: rodrigo@ximian.com (Rodrigo Moya) Date: 09 Oct 2002 19:50:57 +0200 Subject: [Mono-list] Testclass for SqlInt16 In-Reply-To: <200210091850.23637.vi64pa@koti.soon.fi> References: <200210062116.27090.vi64pa@koti.soon.fi> <200210072058.21367.vi64pa@koti.soon.fi> <1034162360.3731.18.camel@localhost> <200210091850.23637.vi64pa@koti.soon.fi> Message-ID: <1034185856.28103.0.camel@localhost> On Wed, 2002-10-09 at 17:50, ville wrote: > Uh, I'm sorry, I missed that tab-thing. But here are testsuites for SqlInt16 > and SqlInt64. > committed cheers -- Rodrigo Moya From paul_faust@agilent.com Wed Oct 9 18:39:55 2002 From: paul_faust@agilent.com (FAUST,PAUL (A-Loveland,ex1)) Date: Wed, 9 Oct 2002 11:39:55 -0600 Subject: [Mono-list] System.Runtime.Remoting.Sample Message-ID: This message is in MIME format. Since your mail reader does not understand this format, some or all of this message may not be legible. ------=_NextPartTM-000-3a11b3fc-dba9-11d6-bae8-009027404a4a Content-Type: multipart/alternative; boundary="----_=_NextPart_001_01C26FBA.E115D5E0" ------_=_NextPart_001_01C26FBA.E115D5E0 Content-Type: text/plain You mention System.Runtime.Remoting.Sample in your release notes but I can't seem to locate it. Where do I find this? Paul Faust, Measurement Components Technology Center CM 304 815 SW 14th Loveland, CO 80537 (970) 679-2141 or Telnet 679-2141 ------_=_NextPart_001_01C26FBA.E115D5E0 Content-Type: text/html

 

You mention System.Runtime.Remoting.Sample in your release notes but I can't seem to locate it.  Where do I find this?

Paul Faust, Measurement Components Technology Center

CM 304

815 SW 14th

Loveland, CO 80537

(970) 679-2141 or Telnet 679-2141

 

------_=_NextPart_001_01C26FBA.E115D5E0-- ------=_NextPartTM-000-3a11b3fc-dba9-11d6-bae8-009027404a4a-- From pluto@tipic.com Wed Oct 9 17:13:01 2002 From: pluto@tipic.com (Francesco Delfino) Date: Wed, 9 Oct 2002 18:13:01 +0200 Subject: [Mono-list] C Ansi Compiler for IL Message-ID: I found this project of a C compiler with an IL backend... maybe it would be interesting to see if the licensing is compatible with Mono. http://www.cs.princeton.edu/software/lcc/ Regards, Francesco Delfino From vegaloz@tld.net Wed Oct 9 17:28:29 2002 From: vegaloz@tld.net (Victor Vega) Date: Wed, 9 Oct 2002 12:28:29 -0400 Subject: [Mono-list] link error in the Windows Binary Message-ID: <200210091228.AA194707872@mail.tld.net> Greetings, Gentlemen. Exist a link error in the Windows Binary (Windows (works without cygwin!) ). Please update. Binaries for other platforms. Already daily volunteer's made binaries: DebianPlanet Windows (works without cygwin!) Regards, Victor Vega ________________________________________________________________ Sent via the TLD.NET system at mail.tld.net From spouliot@motus.com Wed Oct 9 12:58:06 2002 From: spouliot@motus.com (spouliot@motus.com) Date: Wed, 9 Oct 2002 07:58:06 -0400 Subject: [Mono-list] CVS problem with line ends Message-ID: Yesterday I tried to make a patch to ICryptoTransform (because it should inherit IDisposable). However I saw that the patch was trying to replace the whole file (instead of just one line). What I found out is that some files, like ICryptoTransform.cs, have line ends defined as 0x0D, 0x0D, 0x0A but others, like Changelog, have a normal 0x0D, 0x0A line ends. I'm tried both WinCVS and TortoiseCVS with the same results. Both software are supposed to transfer line ends between UNIX and DOS without any problem (and indeed many files are correct). I'm new with CVS so i'm not sure if this is about configuration (that's why I used 2 different software) or the repository. Has anybody seen this before ? Can someone try to checkout ICryptoTransform.cs (in \mcs\class\corlib\System.Security.Cryptography) on Windows and tell me if the file is normal (or like mine)? Thanks -------------------------------------------------------------- Sébastien Pouliot Architecte Sécurité / Security Architect Motus Technologies tel: 418 521 2100 ext 307 fax: 418 521 2101 courriel / email: spouliot@motus.com From Rajshekhar Bashetti" Hello, I have installed 4 rpms on Red hat linux but unable to compile C# source code.I am able to run man mcs & mono , but when I execute mcs test.cs cursor stays as it is , no compilation happens. Please let me know if I am missing any files. We are developing Banking product using VS.Net. Thanks Rajshekhar System Architect ISPL Bangalore, India Thanks & Regards, Rajshekhar Bashetti From groith@tcrz.net Wed Oct 9 19:50:50 2002 From: groith@tcrz.net (Guenther Roith) Date: Wed, 9 Oct 2002 20:50:50 +0200 Subject: [Mono-list] link error in the Windows Binary References: <200210091228.AA194707872@mail.tld.net> Message-ID: <000d01c26fc4$ca128640$010aa8c0@roithw2k> Hello! I know about this. I'll soon release 0.16 and it'll be fixed then. thanks, Johannes ----- Original Message ----- From: "Victor Vega" To: Cc: ; Sent: Wednesday, October 09, 2002 6:28 PM Subject: [Mono-list] link error in the Windows Binary > Greetings, Gentlemen. > > Exist a link error in the Windows Binary (Windows (works without cygwin!) ). Please update. > > Binaries for other platforms. > Already daily volunteer's made binaries: > > DebianPlanet > Windows (works without cygwin!) > > Regards, > Victor Vega > > ________________________________________________________________ > Sent via the TLD.NET system at mail.tld.net > > > > > > > _______________________________________________ > Mono-list maillist - Mono-list@ximian.com > http://lists.ximian.com/mailman/listinfo/mono-list > From andy@nobugs.org Wed Oct 9 22:30:43 2002 From: andy@nobugs.org (Andrew Birkett) Date: 09 Oct 2002 22:30:43 +0100 Subject: [Mono-list] CVS problem with line ends In-Reply-To: References: Message-ID: <1034199046.5538.17.camel@localhost.localdomain> On Wed, 2002-10-09 at 12:58, spouliot@motus.com wrote: > this is about configuration (that's why I used 2 different software) or the > repository. Has anybody seen this before ? Yes, this caused me all sorts of problem when I first started making patches for mono. The problem is that some files in the repository have CR/LF endings. The world only works if the repository files have LF endings. The CR/LF translation offered by WinCVS only works by converting LF to CR/LF when you run "cvs checkout" and converting CR/LF to LF when you run "cvs checkin". So, when the repository file is CR/LF terminated, the WinCVS conversion gives you CR/CR/LF endings! If your patch file contains diffs for a mixture of CR/LF and LF-ended files, then you'll end up getting very frustrated! One way around this on windows is to use cygwin cvs exclusively. I develop almost exclusively on linux now, and also have CVS access so I haven't suffered problems recently. The best solution is for some brave soul to run a CR/LF->LF filter on a checked-out tree and then commit the results. That'll fix it once and for all. You'd need to use the --ignore-space-change with "cvs diff" for those files if required for a wee while. But it's the Right Thing To Do, I think. Andrew From andy@nobugs.org Wed Oct 9 22:43:12 2002 From: andy@nobugs.org (Andrew Birkett) Date: 09 Oct 2002 22:43:12 +0100 Subject: [Mono-list] C Ansi Compiler for IL In-Reply-To: References: Message-ID: <1034199794.5544.29.camel@localhost.localdomain> On Wed, 2002-10-09 at 17:13, Francesco Delfino wrote: > I found this project of a C compiler with an IL backend... maybe it would be > interesting to see if the licensing is compatible with Mono. The lcc license disallows selling lcc (or parts derived from it) which would make it incompatible with the GPL license used for mcs. The msil backend has the MS Research EULA, which prohibits modifications. Lcc is a nice compiler though, and the current mono jit uses a similar code generation method (burg). And there's presumbly nothing to stop people using lcc.NET to generate testcases for mono. Andrew - www.nobugs.org - From miguel@ximian.com Thu Oct 10 00:11:03 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 09 Oct 2002 19:11:03 -0400 Subject: [Mono-list] Loading multiple versions of the same assembly In-Reply-To: <200210090830.g998Uco12945@trna.ximian.com> References: <200210090830.g998Uco12945@trna.ximian.com> Message-ID: <1034205063.14578.19.camel@erandi.boston.ximian.com> Hello! > the current Mono runtime seems to identify assemblies only by their name. > What had to be modified to include the version number of an assembly in the > identification? > > My goal is to have multiple versions of the same assembly loaded at one > time. Do you think this is possible? It could be done, are you interested in cooking up a patch? most of the bits are there, but everyone is very busy with other bits of the project right now. Miguel From miguel@ximian.com Thu Oct 10 00:13:15 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 09 Oct 2002 19:13:15 -0400 Subject: [Mono-list] Compilation In-Reply-To: <20021009120754.9238.qmail@webmail9.rediffmail.com> References: <20021009120754.9238.qmail@webmail9.rediffmail.com> Message-ID: <1034205195.14577.22.camel@erandi.boston.ximian.com> Hello, > I have installed 4 rpms on Red hat linux but unable to compile > C# source code.I am able to run man mcs & mono , but when I > execute > > mcs test.cs > > cursor stays as it is , no compilation happens. What is the content of test.cs? Miguel From miguel@ximian.com Thu Oct 10 00:13:43 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 09 Oct 2002 19:13:43 -0400 Subject: [Mono-list] Garbage collector in incremental mode? In-Reply-To: <200210091147.g99Bl4o28887@trna.ximian.com> References: <200210091147.g99Bl4o28887@trna.ximian.com> Message-ID: <1034205222.14577.24.camel@erandi.boston.ximian.com> Hello, > Does Mono still work with the Boehm garbage collector switched to incremental > mode? Is there a particular reason why this is not done by default? I do not know anything about this, can you tell us more? Miguel From miguel@ximian.com Thu Oct 10 00:15:26 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 09 Oct 2002 19:15:26 -0400 Subject: [Mono-list] Help Required In-Reply-To: References: Message-ID: <1034205325.14577.27.camel@erandi.boston.ximian.com> Hello, > I am a novice to .Net, and my company is working on Microsoft .net. > we are web solution providers and have done the same in one of a .net > product using Microsoft. myself and my company are interested in porting the > same application to Linux. we don't know how to proceed. I'll be very > thankful if you could help. let me know is it possible and if yes how. > please consider that I am a novice to .net This depends largely on the class libraries that you use on Windows. If you use classes that are present in Mono, then you can just copy the binary. If you use some classes that we do not have, you could contribute those to the project (and everyone would be happier). In some cases the contribution is very large (like Windows.Forms is going to be a very large task), so you might want to consider replacing the front-end if you are in a hurry with a Gtk# or Qt# based front-end in the meantime. Miguel From miguel@ximian.com Thu Oct 10 00:17:56 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 09 Oct 2002 19:17:56 -0400 Subject: [Mono-list] System.Runtime.Remoting.Sample In-Reply-To: References: Message-ID: <1034205476.14578.29.camel@erandi.boston.ximian.com> > You mention System.Runtime.Remoting.Sample in your release notes but I > can't seem to locate it. Where do I find this? Here: mcs/class/System.Runtime.Remoting/System.Runtime.Remoting.Channels.Simple Miguel From miguel@ximian.com Thu Oct 10 00:19:19 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 09 Oct 2002 19:19:19 -0400 Subject: [Mono-list] C Ansi Compiler for IL In-Reply-To: <1034199794.5544.29.camel@localhost.localdomain> References: <1034199794.5544.29.camel@localhost.localdomain> Message-ID: <1034205559.14578.31.camel@erandi.boston.ximian.com> Hello! > The lcc license disallows selling lcc (or parts derived from it) which > would make it incompatible with the GPL license used for mcs. The msil > backend has the MS Research EULA, which prohibits modifications. Yes. The issue with the license is not that the code generated would be incompatible. The issue is that Ximian or any other open source vendor can not distribute this on an open source cd. Miguel From biochem333@nyc.rr.com Thu Oct 10 00:40:13 2002 From: biochem333@nyc.rr.com (BioChem333) Date: 09 Oct 2002 19:40:13 -0400 Subject: [Mono-list] C Ansi Compiler for IL Message-ID: <1034206814.1632.9.camel@003610418> On Wed, 2002-10-09 at 12:13, Francesco Delfino wrote: > I found this project of a C compiler with an IL backend... maybe it would be > interesting to see if the licensing is compatible with Mono. > > http://www.cs.princeton.edu/software/lcc/ DotGNU Portable.NET has an in-development C front end to cscc; Rhys is working on getting it to compile glibc->IL but it's still very early in its development. For now, though, it has a small libc implementation of its own called pnetC so you can compile very simple C programs to IL. The licensing is, of course, the GNU GPL. Rich From danmorg@sc.rr.com Thu Oct 10 02:26:39 2002 From: danmorg@sc.rr.com (Daniel Morgan) Date: Wed, 9 Oct 2002 21:26:39 -0400 Subject: [Mono-list] link error in the Windows Binary In-Reply-To: <000d01c26fc4$ca128640$010aa8c0@roithw2k> Message-ID: Hey Johannes I heard from someone that GTK# works on Windows now. (vlad I think) Is it possible that gtk# binaries (and dependencies) can be included with Mono 4 Windows? or maybe create a GTK# 4 Windows too? Thanks, Daniel -----Original Message----- From: mono-list-admin@ximian.com [mailto:mono-list-admin@ximian.com]On Behalf Of Guenther Roith Sent: Wednesday, October 09, 2002 2:51 PM To: vegaloz@tld.net; miguel@ximian.com Cc: mono-list@ximian.com; vegaloz@tld.net Subject: Re: [Mono-list] link error in the Windows Binary Hello! I know about this. I'll soon release 0.16 and it'll be fixed then. thanks, Johannes ----- Original Message ----- From: "Victor Vega" To: Cc: ; Sent: Wednesday, October 09, 2002 6:28 PM Subject: [Mono-list] link error in the Windows Binary > Greetings, Gentlemen. > > Exist a link error in the Windows Binary (Windows (works without cygwin!) ). Please update. > > Binaries for other platforms. > Already daily volunteer's made binaries: > > DebianPlanet > Windows (works without cygwin!) > > Regards, > Victor Vega > > ________________________________________________________________ > Sent via the TLD.NET system at mail.tld.net > > > > > > > _______________________________________________ > Mono-list maillist - Mono-list@ximian.com > http://lists.ximian.com/mailman/listinfo/mono-list > _______________________________________________ Mono-list maillist - Mono-list@ximian.com http://lists.ximian.com/mailman/listinfo/mono-list From miguel@ximian.com Thu Oct 10 04:49:47 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 09 Oct 2002 23:49:47 -0400 Subject: [Mono-list] link error in the Windows Binary In-Reply-To: References: Message-ID: <1034221786.14578.41.camel@erandi.boston.ximian.com> Hello! > I heard from someone that GTK# works on Windows now. (vlad I think) Is it > possible that gtk# binaries (and dependencies) can be included with Mono 4 > Windows? or maybe create a GTK# 4 Windows too? I think the patches are still being massaged a bit. You might want to wait a bit. Miguel From fjh@cs.mu.oz.au Thu Oct 10 11:58:30 2002 From: fjh@cs.mu.oz.au (Fergus Henderson) Date: Thu, 10 Oct 2002 20:58:30 +1000 Subject: [Mono-list] Garbage collector in incremental mode? In-Reply-To: <200210091147.g99Bl4o28887@trna.ximian.com> References: <200210091147.g99Bl4o28887@trna.ximian.com> Message-ID: <20021010105830.GA17007@ceres.cs.mu.oz.au> On 09-Oct-2002, Holger Arnold wrote: > Does Mono still work with the Boehm garbage collector switched to incremental > mode? Is there a particular reason why this is not done by default? Here is one possible reason: On Fri, 12 Jul 2002, in mail to gclist@lists.iecc.com, Hans Boehm wrote: | On a Linux system | (and on many others) turning on incremental collection will cause the | heap to be write protected. The collector will handle the resulting | write faults, unless they occur inside a system call. Thus you will | need to be careful with, and preferably avoid, system calls that write | directly to the garbage-collected heap. (If the application is | single-threaded, or nearly single-threaded, you can also wrap the system | calls with some routines provided by the collector. In some cases, it's | also OK to have system calls write to objects allocated with | GC_MALLOC_ATOMIC. But this has turned out to be enough of an issue that | I believe there are relatively few clients for the incremental | collector.) In other words, turning on incremental collection would require carefully vetting the mono source code to make sure that there are no calls to system calls that might write directly to memory allocated with GC_malloc() and friends. There might also be some nasty interactions with the C interface (PlatformInvoke etc.) -- Fergus Henderson | "I have always known that the pursuit The University of Melbourne | of excellence is a lethal habit" WWW: | -- the last words of T. S. Garp. From michel.dagenais@polymtl.ca Thu Oct 10 14:44:03 2002 From: michel.dagenais@polymtl.ca (Michel Dagenais) Date: 10 Oct 2002 09:44:03 -0400 Subject: [Mono-list] Garbage collector in incremental mode? In-Reply-To: <20021010105830.GA17007@ceres.cs.mu.oz.au> References: <200210091147.g99Bl4o28887@trna.ximian.com> <20021010105830.GA17007@ceres.cs.mu.oz.au> Message-ID: <1034257444.1062.10.camel@vaucluse> > In other words, turning on incremental collection would require > carefully vetting the mono source code to make sure that there are no > calls to system calls that might write directly to memory allocated > with GC_malloc() and friends. There might also be some nasty > interactions with the C interface (PlatformInvoke etc.) We had a mostly copying VM synchronised incremental GC in the Modula-3 world based on the same principle, write protecting gc heap pages to detect modified pages. This and other incremental mechanisms helped a lot the responsiveness of interacte applications. However, each system call needed a wrapper to test (write) all the writable arguments while still in userland, thus taking the write protection fault there instead of having the system call failing. It was the most problematic section in terms of maintenance. Glibc, at least at the time, did change regularly. From t.fransen@mailned.nl Thu Oct 10 19:50:28 2002 From: t.fransen@mailned.nl (Tom Fransen) Date: Thu, 10 Oct 2002 19:50:28 +0100 Subject: [Mono-list] Garbage collector in incremental mode? In-Reply-To: <20021010105830.GA17007@ceres.cs.mu.oz.au> Message-ID: Hi, apart from the discussion about incremental GC. I have read very little about GC in Mono. On mailing discussing M$ .NET I read often about discussion on how the GC affects the performance of an application. Isn't this a hot topic in Mono? How is that in Mono. I read some of the pages of Hans Boehm but is there anything specific (like the incremental GC) about the use of the GC in Mono. For example how does it perform in comparison to the M$. Who can shed some light on this? regards, Tom -----Original Message----- From: mono-list-admin@ximian.com [mailto:mono-list-admin@ximian.com]On Behalf Of Fergus Henderson Sent: Thursday, October 10, 2002 11:59 AM To: Holger Arnold Cc: mono-list@ximian.com Subject: Re: [Mono-list] Garbage collector in incremental mode? On 09-Oct-2002, Holger Arnold wrote: > Does Mono still work with the Boehm garbage collector switched to incremental > mode? Is there a particular reason why this is not done by default? Here is one possible reason: On Fri, 12 Jul 2002, in mail to gclist@lists.iecc.com, Hans Boehm wrote: | On a Linux system | (and on many others) turning on incremental collection will cause the | heap to be write protected. The collector will handle the resulting | write faults, unless they occur inside a system call. Thus you will | need to be careful with, and preferably avoid, system calls that write | directly to the garbage-collected heap. (If the application is | single-threaded, or nearly single-threaded, you can also wrap the system | calls with some routines provided by the collector. In some cases, it's | also OK to have system calls write to objects allocated with | GC_MALLOC_ATOMIC. But this has turned out to be enough of an issue that | I believe there are relatively few clients for the incremental | collector.) In other words, turning on incremental collection would require carefully vetting the mono source code to make sure that there are no calls to system calls that might write directly to memory allocated with GC_malloc() and friends. There might also be some nasty interactions with the C interface (PlatformInvoke etc.) -- Fergus Henderson | "I have always known that the pursuit The University of Melbourne | of excellence is a lethal habit" WWW: | -- the last words of T. S. Garp. _______________________________________________ Mono-list maillist - Mono-list@ximian.com http://lists.ximian.com/mailman/listinfo/mono-list From ranger@befunk.com Thu Oct 10 19:16:37 2002 From: ranger@befunk.com (Benjamin Reed) Date: 10 Oct 2002 14:16:37 -0400 Subject: [Mono-list] PATCH: build mono 0.16 on Darwin/MacOSX Message-ID: <1034273799.17645.45.camel@linux-ben.internal.opennms.org> --=-QipnxArUW7jcQ1BVjYdW Content-Type: text/plain Content-Transfer-Encoding: 7bit Attached is a patch to allow the mono 0.16 tarball to build on Darwin (tested only on Jaguar right now, and only mint, no mono). I don't know how much of it will work and/or freak out yet. It seems that mint runs now, but it likes to segfault and/or lock up when I try to build the mcs 0.16 tree. I'm not kung-fu enough to dig into what's going on, so if there are any OSX lurkers on the list that want to pick this up where I left off, feel free. =) The patch does the following: 1. It adds some settings in configure to use libdl and force cpp to act unix-y rather than apple-y. I'm not sure if the NEED_LINK_UNLINK define needs to be there, but I erred on the side of caution. 2. It adds to configure a check for a working socklen_t even if the typedef isn't defined in headers, as it isn't on Darwin (blech). 3. It adds powerpc-*-darwin* to the list of powerpc targets. 4. It adds config.h to any headers that use socklen_t so that they can find the definition made earlier -- 5 or 6 of them I think, mostly in mono/metadata/. 5. It adds config.h to interp.h so it can find SIZEOF_VOID_P (which was being defined in config.h on platforms that don't have it in system headers, like Darwin, but wasn't ever being included) 6. It adds a check in Makefile.am for the scripts/ dir to make it so that running "mcs" on non-x86 unixes will call mint instead of mono. Thanks! Looking forward to playing with mono once it builds on my system... =) --=-QipnxArUW7jcQ1BVjYdW Content-Disposition: attachment; filename=mono-0.16-darwin.patch Content-Transfer-Encoding: quoted-printable Content-Type: text/x-patch; name=mono-0.16-darwin.patch; charset=ISO-8859-15 diff -uNbr mono-0.16/config.h.in mono-0.16-new/config.h.in --- mono-0.16/config.h.in Tue Oct 1 17:55:31 2002 +++ mono-0.16-new/config.h.in Thu Oct 10 13:53:15 2002 @@ -112,3 +112,6 @@ =20 /* Version number of package */ #undef VERSION + +/* Define the real type of socklen_t */ +#undef socklen_t diff -uNbr mono-0.16/configure mono-0.16-new/configure --- mono-0.16/configure Tue Oct 1 18:13:15 2002 +++ mono-0.16-new/configure Thu Oct 10 13:50:01 2002 @@ -1780,6 +1780,14 @@ CPPFLAGS=3D"$CPPFLAGS -DGC_WIN32_THREADS" libdl=3D ;; + *-*-*darwin*) + platform_win32=3Dno + CPPFLAGS=3D"$CPPFLAGS -no-cpp-precomp" + cat >>confdefs.h <<\_ACEOF +#define NEED_LINK_UNLINK 1 +_ACEOF + libdl=3D"-ldl" + ;; *-*-*bsd*) platform_win32=3Dno CPPFLAGS=3D"$CPPFLAGS -D_THREAD_SAFE" @@ -8756,6 +8764,118 @@ echo "$as_me: WARNING: No 64 bit file size support available" >&2;} fi =20 + echo "$as_me:$LINENO: checking for socklen= _t" >&5 +echo $ECHO_N "checking for socklen_t... $ECHO_C" >&6 + if test "${ac_cv_socklen_t+set}" =3D set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +#include +#include + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ + +socklen_t a=3D0; +getsockname(0,(struct sockaddr*)0, &a); + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=3D$? + echo "$as_me:$LINENO: \$? =3D $ac_status" >&5 + (exit $ac_status); } && + { ac_try=3D'test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=3D$? + echo "$as_me:$LINENO: \$? =3D $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_socklen_t=3Dsocklen_t +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +#include +#include + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ + +int a=3D0; +getsockname(0,(struct sockaddr*)0, &a); + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=3D$? + echo "$as_me:$LINENO: \$? =3D $ac_status" >&5 + (exit $ac_status); } && + { ac_try=3D'test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=3D$? + echo "$as_me:$LINENO: \$? =3D $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_socklen_t=3Dint +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_socklen_t=3Dsize_t + +fi +rm -f conftest.$ac_objext conftest.$ac_ext + +fi +rm -f conftest.$ac_objext conftest.$ac_ext + +fi + + + echo "$as_me:$LINENO: result: $ac_cv_socklen_t" >&5 +echo "${ECHO_T}$ac_cv_socklen_t" >&6 + if test "$ac_cv_socklen_t" !=3D "socklen_t"; then + +cat >>confdefs.h <<_ACEOF +#define socklen_t $ac_cv_socklen_t +_ACEOF + + fi + +cat >>confdefs.h <<_ACEOF +#define ksize_t socklen_t +_ACEOF + + echo "$as_me:$LINENO: checking for socket in -lsocket" >&5 echo $ECHO_N "checking for socket in -lsocket... $ECHO_C" >&6 if test "${ac_cv_lib_socket_socket+set}" =3D set; then @@ -9901,7 +10021,7 @@ sparc*-*-*) TARGET=3DSPARC; arch_target=3Dsparc; ACCESS_UNALIGNED=3D"no";; #alpha*-*-linux* | alpha*-*-osf*) TARGET=3DALPHA; ACCESS_UNALIGNED=3D"no";= ; #m68k-*-linux*) TARGET=3DM68K;; -macppc-*-openbsd* | powerpc-*-linux* | powerpc-*-openbsd* | powerpc-*-sysv= *) TARGET=3DPOWERPC; arch_target=3Dppc;; +powerpc-*-darwin* | macppc-*-openbsd* | powerpc-*-linux* | powerpc-*-openb= sd* | powerpc-*-sysv*) TARGET=3DPOWERPC; arch_target=3Dppc;; arm-*-linux-* | armv4l-*-linux-*) TARGET=3DARM; arch_target=3Darm; ACCESS_= UNALIGNED=3D"no";; esac =20 diff -uNbr mono-0.16/configure.in mono-0.16-new/configure.in --- mono-0.16/configure.in Tue Oct 1 17:32:16 2002 +++ mono-0.16-new/configure.in Thu Oct 10 13:45:22 2002 @@ -15,6 +15,12 @@ CPPFLAGS=3D"$CPPFLAGS -DGC_WIN32_THREADS" libdl=3D ;; + *-*-*darwin*) + platform_win32=3Dno + CPPFLAGS=3D"$CPPFLAGS -no-cpp-precomp" + AC_DEFINE(NEED_LINK_UNLINK) + libdl=3D"-ldl" + ;; *-*-*bsd*) platform_win32=3Dno CPPFLAGS=3D"$CPPFLAGS -D_THREAD_SAFE" @@ -203,6 +209,40 @@ fi =09 dnl ***************************** + dnl *** Checks for socklen_t *** + dnl ***************************** + AC_MSG_CHECKING(for socklen_t) + AC_CACHE_VAL(ac_cv_socklen_t, [ + AC_TRY_COMPILE([ +#include +#include + ],[ +socklen_t a=3D0; +getsockname(0,(struct sockaddr*)0, &a); + ], + ac_cv_socklen_t=3Dsocklen_t, + AC_TRY_COMPILE([ +#include +#include + ],[ +int a=3D0; +getsockname(0,(struct sockaddr*)0, &a); + ], + ac_cv_socklen_t=3Dint, + ac_cv_socklen_t=3Dsize_t + ) + ) + AC_LANG_RESTORE + ]) + + AC_MSG_RESULT($ac_cv_socklen_t) + if test "$ac_cv_socklen_t" !=3D "socklen_t"; then + AC_DEFINE_UNQUOTED(socklen_t, $ac_cv_socklen_t, + [Define the real type of socklen_t]) + fi + AC_DEFINE_UNQUOTED(ksize_t, socklen_t, [Compatibility define]) + + dnl ***************************** dnl *** Checks for libsocket *** dnl ***************************** AC_CHECK_LIB(socket, socket, LIBS=3D"$LIBS -lsocket") @@ -469,7 +509,7 @@ sparc*-*-*) TARGET=3DSPARC; arch_target=3Dsparc; ACCESS_UNALIGNED=3D"no";; #alpha*-*-linux* | alpha*-*-osf*) TARGET=3DALPHA; ACCESS_UNALIGNED=3D"no";= ; #m68k-*-linux*) TARGET=3DM68K;; -macppc-*-openbsd* | powerpc-*-linux* | powerpc-*-openbsd* | powerpc-*-sysv= *) TARGET=3DPOWERPC; arch_target=3Dppc;; +powerpc-*-darwin* | macppc-*-openbsd* | powerpc-*-linux* | powerpc-*-openb= sd* | powerpc-*-sysv*) TARGET=3DPOWERPC; arch_target=3Dppc;; arm-*-linux-* | armv4l-*-linux-*) TARGET=3DARM; arch_target=3Darm; ACCESS_= UNALIGNED=3D"no";; esac =20 diff -uNbr mono-0.16/mono/interpreter/interp.h mono-0.16-new/mono/interpret= er/interp.h --- mono-0.16/mono/interpreter/interp.h Fri Aug 2 07:02:35 2002 +++ mono-0.16-new/mono/interpreter/interp.h Thu Oct 10 13:35:35 2002 @@ -1,4 +1,4 @@ - +#include #include #include #include diff -uNbr mono-0.16/mono/io-layer/Makefile.am mono-0.16-new/mono/io-layer/= Makefile.am --- mono-0.16/mono/io-layer/Makefile.am Thu Aug 1 08:15:41 2002 +++ mono-0.16-new/mono/io-layer/Makefile.am Thu Oct 10 13:35:35 2002 @@ -5,7 +5,8 @@ $(GMODULE_CFLAGS) \ -D_WAPI_BUILDING=3D1 \ -DMONO_BINDIR=3D\""$(bindir)"\" \ - -I$(top_srcdir)=09 + -I$(top_srcdir) \ + -I$(prefix)/include =20 libwapiincludedir =3D $(includedir)/mono/io-layer =20 diff -uNbr mono-0.16/mono/io-layer/Makefile.in mono-0.16-new/mono/io-layer/= Makefile.in --- mono-0.16/mono/io-layer/Makefile.in Tue Oct 1 18:31:17 2002 +++ mono-0.16-new/mono/io-layer/Makefile.in Thu Oct 10 13:35:35 2002 @@ -103,7 +103,8 @@ $(GMODULE_CFLAGS) \ -D_WAPI_BUILDING=3D1 \ -DMONO_BINDIR=3D\""$(bindir)"\" \ - -I$(top_srcdir)=09 + -I$(top_srcdir) \ + -I$(prefix)/include =20 =20 libwapiincludedir =3D $(includedir)/mono/io-layer diff -uNbr mono-0.16/mono/metadata/decimal.c mono-0.16-new/mono/metadata/de= cimal.c --- mono-0.16/mono/metadata/decimal.c Fri May 31 06:14:30 2002 +++ mono-0.16-new/mono/metadata/decimal.c Thu Oct 10 13:57:11 2002 @@ -13,6 +13,7 @@ * CSharp value type System.Decimal */ =20 +#include #include #include #include diff -uNbr mono-0.16/mono/metadata/exception.c mono-0.16-new/mono/metadata/= exception.c --- mono-0.16/mono/metadata/exception.c Wed Aug 14 12:08:11 2002 +++ mono-0.16-new/mono/metadata/exception.c Thu Oct 10 13:58:15 2002 @@ -10,6 +10,7 @@ * (C) 2001, 2002 Ximian, Inc. */ =20 +#include #include #include #include diff -uNbr mono-0.16/mono/metadata/monosn.c mono-0.16-new/mono/metadata/mon= osn.c --- mono-0.16/mono/metadata/monosn.c Tue Sep 24 05:31:42 2002 +++ mono-0.16-new/mono/metadata/monosn.c Thu Oct 10 13:59:45 2002 @@ -7,6 +7,7 @@ * (C) 2002 Ximian, Inc. * */ +#include #include #include #include diff -uNbr mono-0.16/mono/metadata/profiler.c mono-0.16-new/mono/metadata/p= rofiler.c --- mono-0.16/mono/metadata/profiler.c Sat Aug 24 13:29:06 2002 +++ mono-0.16-new/mono/metadata/profiler.c Thu Oct 10 13:59:20 2002 @@ -1,4 +1,5 @@ =20 +#include #include "mono/metadata/profiler-private.h" #include "mono/metadata/debug-helpers.h" #include diff -uNbr mono-0.16/mono/metadata/verify.c mono-0.16-new/mono/metadata/ver= ify.c --- mono-0.16/mono/metadata/verify.c Mon Sep 16 13:07:44 2002 +++ mono-0.16-new/mono/metadata/verify.c Thu Oct 10 13:56:36 2002 @@ -1,4 +1,4 @@ - +#include #include #include #include diff -uNbr mono-0.16/mono/monograph/monograph.c mono-0.16-new/mono/monograp= h/monograph.c --- mono-0.16/mono/monograph/monograph.c Fri Jul 19 08:25:53 2002 +++ mono-0.16-new/mono/monograph/monograph.c Thu Oct 10 14:01:27 2002 @@ -1,3 +1,4 @@ +#include #include #include #include "mono/metadata/class.h" diff -uNbr mono-0.16/scripts/Makefile.am mono-0.16-new/scripts/Makefile.am --- mono-0.16/scripts/Makefile.am Fri Feb 15 05:12:19 2002 +++ mono-0.16-new/scripts/Makefile.am Thu Oct 10 13:35:35 2002 @@ -4,6 +4,12 @@ =20 CLEANFILES =3D mcs =20 +if X86 +MONO_INTERP =3D mono +else +MONO_INTERP =3D mint +endif + mcs: mcs.in - sed -e 's^\@bindir\@^$(bindir)^g' < $(srcdir)/mcs.in > mcs.tmp \ + sed -e 's^\@bindir\@^$(bindir)^g' -e 's^\@mono_interp\@^$(MONO_INTERP)^g'= < $(srcdir)/mcs.in > mcs.tmp \ && mv mcs.tmp mcs=20 diff -uNbr mono-0.16/scripts/Makefile.in mono-0.16-new/scripts/Makefile.in --- mono-0.16/scripts/Makefile.in Tue Oct 1 18:31:28 2002 +++ mono-0.16-new/scripts/Makefile.in Thu Oct 10 13:35:35 2002 @@ -106,6 +106,9 @@ CONFIG_CLEAN_FILES =3D=20 SCRIPTS =3D $(bin_SCRIPTS) =20 +@X86_TRUE@MONO_INTERP =3D mono +@X86_FALSE@MONO_INTERP =3D mint + DIST_COMMON =3D Makefile.am Makefile.in =20 =20 diff -uNbr mono-0.16/scripts/mcs.in mono-0.16-new/scripts/mcs.in --- mono-0.16/scripts/mcs.in Tue May 7 13:37:37 2002 +++ mono-0.16-new/scripts/mcs.in Thu Oct 10 13:35:35 2002 @@ -1,2 +1,2 @@ #!/bin/sh -@bindir@/mono @bindir@/mcs.exe "$@" +@bindir@/@mono_interp@ @bindir@/mcs.exe "$@" --=-QipnxArUW7jcQ1BVjYdW-- From vi64pa@koti.soon.fi Thu Oct 10 20:45:34 2002 From: vi64pa@koti.soon.fi (ville) Date: Thu, 10 Oct 2002 22:45:34 +0300 Subject: [Mono-list] Testclass for SqlDouble Message-ID: <200210102245.34337.vi64pa@koti.soon.fi> --------------Boundary-00=_YV6SS7ESH067G9SRAS7W Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable =2E.And here it is. --------------Boundary-00=_YV6SS7ESH067G9SRAS7W Content-Type: text/x-c++src; charset="us-ascii"; name="SqlDoubleTest.cs" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="SqlDoubleTest.cs" // // SqlDoubleTest.cs - NUnit Test Cases for System.Data.SqlTypes.SqlDouble // // Ville Palo (vi64pa@koti.soon.fi) // // (C) Ville Palo 2002 // using NUnit.Framework; using System; using System.Data.SqlTypes; namespace MonoTests.System.Data.SqlTypes { public class SqlDoubleTest : TestCase { public SqlDoubleTest() : base ("System.Data.SqlTypes.SqlDouble") {} public SqlDoubleTest(string name) : base(name) {} protected override void TearDown() {} protected override void SetUp() {} public static ITest Suite { get { return new TestSuite(typeof(SqlDouble)); } } // Test constructor public void TestCreate() { SqlDouble Test= new SqlDouble ((double)34.87); AssertEquals ("#A01", 34.87D, Test.Value); Test = new SqlDouble (-9000.6543); AssertEquals ("#A02", -9000.6543D, Test.Value); } // Test public fields public void TestPublicFields() { AssertEquals ("#B01", 1.7976931348623157e+308, SqlDouble.MaxValue.Value); AssertEquals ("#B02", -1.7976931348623157e+308, SqlDouble.MinValue.Value); Assert ("#B03", SqlDouble.Null.IsNull); AssertEquals ("#B04", 0d, SqlDouble.Zero.Value); } // Test properties public void TestProperties() { SqlDouble Test5443 = new SqlDouble (5443e12); SqlDouble Test1 = new SqlDouble (1); Assert ("#C01", SqlDouble.Null.IsNull); AssertEquals ("#C02", 5443e12, Test5443.Value); AssertEquals ("#C03", (double)1, Test1.Value); } // PUBLIC METHODS public void TestArithmeticMethods() { SqlDouble Test0 = new SqlDouble (0); SqlDouble Test1 = new SqlDouble (15e108); SqlDouble Test2 = new SqlDouble (-65e64); SqlDouble Test3 = new SqlDouble (5e64); SqlDouble Test4 = new SqlDouble (5e108); SqlDouble TestMax = new SqlDouble (SqlDouble.MaxValue.Value); // Add() AssertEquals ("#D01A", 15e108, SqlDouble.Add (Test1, Test0).Value); AssertEquals ("#D02A", 1.5e109, SqlDouble.Add (Test1, Test2).Value); try { SqlDouble test = SqlDouble.Add (SqlDouble.MaxValue, SqlDouble.MaxValue); Fail ("#D03A"); } catch (Exception e) { AssertEquals ("#D04A", typeof (OverflowException), e.GetType ()); } // Divide() AssertEquals ("#D01B", (SqlDouble)3, SqlDouble.Divide (Test1, Test4)); AssertEquals ("#D02B", -13d, SqlDouble.Divide (Test2, Test3).Value); try { SqlDouble test = SqlDouble.Divide(Test1, Test0).Value; Fail ("#D03B"); } catch(Exception e) { AssertEquals ("#D04B", typeof (DivideByZeroException), e.GetType ()); } // Multiply() AssertEquals ("#D01D", (double)(75e216), SqlDouble.Multiply (Test1, Test4).Value); AssertEquals ("#D02D", (double)0, SqlDouble.Multiply (Test1, Test0).Value); try { SqlDouble test = SqlDouble.Multiply (TestMax, Test1); Fail ("#D03D"); } catch (Exception e) { AssertEquals ("#D04D", typeof (OverflowException), e.GetType ()); } // Subtract() AssertEquals ("#D01F", (double)1.5e109, SqlDouble.Subtract (Test1, Test3).Value); try { SqlDouble test = SqlDouble.Subtract(SqlDouble.MinValue, SqlDouble.MaxValue); Fail ("D02F"); } catch (Exception e) { AssertEquals ("#D03F", typeof (OverflowException), e.GetType ()); } } public void TestCompareTo() { SqlDouble Test1 = new SqlDouble (4e64); SqlDouble Test11 = new SqlDouble (4e64); SqlDouble Test2 = new SqlDouble (-9e34); SqlDouble Test3 = new SqlDouble (10000); SqlString TestString = new SqlString ("This is a test"); Assert ("#E01", Test1.CompareTo (Test3) > 0); Assert ("#E02", Test2.CompareTo (Test3) < 0); Assert ("#E03", Test1.CompareTo (Test11) == 0); Assert ("#E04", Test11.CompareTo (SqlDouble.Null) > 0); try { Test1.CompareTo (TestString); Fail("#E05"); } catch(Exception e) { AssertEquals ("#E06", typeof (ArgumentException), e.GetType ()); } } public void TestEqualsMethods() { SqlDouble Test0 = new SqlDouble (0); SqlDouble Test1 = new SqlDouble (1.58e30); SqlDouble Test2 = new SqlDouble (1.8e180); SqlDouble Test22 = new SqlDouble (1.8e180); Assert ("#F01", !Test0.Equals (Test1)); Assert ("#F02", !Test1.Equals (Test2)); Assert ("#F03", !Test2.Equals (new SqlString ("TEST"))); Assert ("#F04", Test2.Equals (Test22)); // Static Equals()-method Assert ("#F05", SqlDouble.Equals (Test2, Test22).Value); Assert ("#F06", !SqlDouble.Equals (Test1, Test2).Value); } public void TestGetHashCode() { SqlDouble Test15 = new SqlDouble (15); // FIXME: Better way to test HashCode AssertEquals ("#G01", Test15.GetHashCode (), Test15.GetHashCode ()); } public void TestGetType() { SqlDouble Test = new SqlDouble (84); AssertEquals ("#H01", "System.Data.SqlTypes.SqlDouble", Test.GetType ().ToString ()); AssertEquals ("#H02", "System.Double", Test.Value.GetType ().ToString ()); } public void TestGreaters() { SqlDouble Test1 = new SqlDouble (1e100); SqlDouble Test11 = new SqlDouble (1e100); SqlDouble Test2 = new SqlDouble (64e164); // GreateThan () Assert ("#I01", !SqlDouble.GreaterThan (Test1, Test2).Value); Assert ("#I02", SqlDouble.GreaterThan (Test2, Test1).Value); Assert ("#I03", !SqlDouble.GreaterThan (Test1, Test11).Value); // GreaterTharOrEqual () Assert ("#I04", !SqlDouble.GreaterThanOrEqual (Test1, Test2).Value); Assert ("#I05", SqlDouble.GreaterThanOrEqual (Test2, Test1).Value); Assert ("#I06", SqlDouble.GreaterThanOrEqual (Test1, Test11).Value); } public void TestLessers() { SqlDouble Test1 = new SqlDouble (1.8e100); SqlDouble Test11 = new SqlDouble (1.8e100); SqlDouble Test2 = new SqlDouble (64e164); // LessThan() Assert ("#J01", !SqlDouble.LessThan (Test1, Test11).Value); Assert ("#J02", !SqlDouble.LessThan (Test2, Test1).Value); Assert ("#J03", SqlDouble.LessThan (Test11, Test2).Value); // LessThanOrEqual () Assert ("#J04", SqlDouble.LessThanOrEqual (Test1, Test2).Value); Assert ("#J05", !SqlDouble.LessThanOrEqual (Test2, Test1).Value); Assert ("#J06", SqlDouble.LessThanOrEqual (Test11, Test1).Value); Assert ("#J07", SqlDouble.LessThanOrEqual (Test11, SqlDouble.Null).IsNull); } public void TestNotEquals() { SqlDouble Test1 = new SqlDouble (1280000000001); SqlDouble Test2 = new SqlDouble (128e10); SqlDouble Test22 = new SqlDouble (128e10); Assert ("#K01", SqlDouble.NotEquals (Test1, Test2).Value); Assert ("#K02", SqlDouble.NotEquals (Test2, Test1).Value); Assert ("#K03", SqlDouble.NotEquals (Test22, Test1).Value); Assert ("#K04", !SqlDouble.NotEquals (Test22, Test2).Value); Assert ("#K05", !SqlDouble.NotEquals (Test2, Test22).Value); Assert ("#K06", SqlDouble.NotEquals (SqlDouble.Null, Test22).IsNull); Assert ("#K07", SqlDouble.NotEquals (SqlDouble.Null, Test22).IsNull); } public void TestParse() { try { SqlDouble.Parse (null); Fail ("#L01"); } catch (Exception e) { AssertEquals ("#L02", typeof (ArgumentNullException), e.GetType ()); } try { SqlDouble.Parse ("not-a-number"); Fail ("#L03"); } catch (Exception e) { AssertEquals ("#L04", typeof (FormatException), e.GetType ()); } try { SqlDouble.Parse ("9e400"); Fail ("#L05"); } catch (Exception e) { AssertEquals ("#L06", typeof (OverflowException), e.GetType ()); } AssertEquals("#L07", (double)150, SqlDouble.Parse ("150").Value); } public void TestConversions() { SqlDouble Test0 = new SqlDouble (0); SqlDouble Test1 = new SqlDouble (250); SqlDouble Test2 = new SqlDouble (64e64); SqlDouble Test3 = new SqlDouble (64e164); SqlDouble TestNull = SqlDouble.Null; // ToSqlBoolean () Assert ("#M01A", Test1.ToSqlBoolean ().Value); Assert ("#M02A", !Test0.ToSqlBoolean ().Value); Assert ("#M03A", TestNull.ToSqlBoolean ().IsNull); // ToSqlByte () AssertEquals ("#M01B", (byte)250, Test1.ToSqlByte ().Value); AssertEquals ("#M02B", (byte)0, Test0.ToSqlByte ().Value); try { SqlByte b = (byte)Test2.ToSqlByte (); Fail ("#M03B"); } catch (Exception e) { AssertEquals ("#M04B", typeof (OverflowException), e.GetType ()); } // ToSqlDecimal () AssertEquals ("#M01C", (decimal)250, Test1.ToSqlDecimal ().Value); AssertEquals ("#M02C", (decimal)0, Test0.ToSqlDecimal ().Value); try { SqlDecimal test = Test3.ToSqlDecimal ().Value; Fail ("#M03C"); } catch (Exception e) { AssertEquals ("#M04C", typeof (OverflowException), e.GetType ()); } // ToSqlInt16 () AssertEquals ("#M01D", (short)250, Test1.ToSqlInt16 ().Value); AssertEquals ("#M02D", (short)0, Test0.ToSqlInt16 ().Value); try { SqlInt16 test = Test2.ToSqlInt16().Value; Fail ("#M03D"); } catch (Exception e) { AssertEquals ("#M04D", typeof (OverflowException), e.GetType ()); } // ToSqlInt32 () AssertEquals ("#M01E", (int)250, Test1.ToSqlInt32 ().Value); AssertEquals ("#M02E", (int)0, Test0.ToSqlInt32 ().Value); try { SqlInt32 test = Test2.ToSqlInt32 ().Value; Fail ("#M03E"); } catch (Exception e) { AssertEquals ("#M04E", typeof (OverflowException), e.GetType ()); } // ToSqlInt64 () AssertEquals ("#M01F", (long)250, Test1.ToSqlInt64 ().Value); AssertEquals ("#M02F", (long)0, Test0.ToSqlInt64 ().Value); try { SqlInt64 test = Test2.ToSqlInt64 ().Value; Fail ("#M03F"); } catch (Exception e) { AssertEquals ("#M04F", typeof (OverflowException), e.GetType ()); } // ToSqlMoney () AssertEquals ("#M01G", (decimal)250, Test1.ToSqlMoney ().Value); AssertEquals ("#M02G", (decimal)0, Test0.ToSqlMoney ().Value); try { SqlMoney test = Test2.ToSqlMoney ().Value; Fail ("#M03G"); } catch (Exception e) { AssertEquals ("#M04G", typeof (OverflowException), e.GetType ()); } // ToSqlSingle () AssertEquals ("#M01H", (float)250, Test1.ToSqlSingle ().Value); AssertEquals ("#M02H", (float)0, Test0.ToSqlSingle ().Value); try { SqlSingle test = Test2.ToSqlSingle().Value; Fail ("#MO3H"); } catch (Exception e) { AssertEquals ("#M04H", typeof (OverflowException), e.GetType ()); } // ToSqlString () AssertEquals ("#M01I", "250", Test1.ToSqlString ().Value); AssertEquals ("#M02I", "0", Test0.ToSqlString ().Value); AssertEquals ("#M03I", "6,4E+65", Test2.ToSqlString ().Value); // ToString () AssertEquals ("#M01J", "250", Test1.ToString ()); AssertEquals ("#M02J", "0", Test0.ToString ()); AssertEquals ("#M03J", "6,4E+65", Test2.ToString ()); } // OPERATORS public void TestArithmeticOperators() { SqlDouble Test0 = new SqlDouble (0); SqlDouble Test1 = new SqlDouble (24e100); SqlDouble Test2 = new SqlDouble (64e164); SqlDouble Test3 = new SqlDouble (12e100); SqlDouble Test4 = new SqlDouble (1e10); SqlDouble Test5 = new SqlDouble (2e10); // "+"-operator AssertEquals ("#N01", (SqlDouble)3e10, Test4 + Test5); try { SqlDouble test = SqlDouble.MaxValue + SqlDouble.MaxValue; Fail ("#N02"); } catch (Exception e) { AssertEquals ("#N03", typeof (OverflowException), e.GetType ()); } // "/"-operator AssertEquals ("#N04", (SqlDouble)2, Test1 / Test3); try { SqlDouble test = Test3 / Test0; Fail ("#N05"); } catch (Exception e) { AssertEquals ("#N06", typeof (DivideByZeroException), e.GetType ()); } // "*"-operator AssertEquals ("#N07", (SqlDouble)2e20, Test4 * Test5); try { SqlDouble test = SqlDouble.MaxValue * Test1; Fail ("#N08"); } catch (Exception e) { AssertEquals ("#N09", typeof (OverflowException), e.GetType ()); } // "-"-operator AssertEquals ("#N10", (SqlDouble)12e100, Test1 - Test3); try { SqlDouble test = SqlDouble.MinValue - SqlDouble.MaxValue; Fail ("#N11"); } catch (Exception e) { AssertEquals ("#N12", typeof (OverflowException), e.GetType ()); } } public void TestThanOrEqualOperators() { SqlDouble Test1 = new SqlDouble (1e164); SqlDouble Test2 = new SqlDouble (9.7e100); SqlDouble Test22 = new SqlDouble (9.7e100); SqlDouble Test3 = new SqlDouble (2e200); // == -operator Assert ("#O01", (Test2 == Test22).Value); Assert ("#O02", !(Test1 == Test2).Value); Assert ("#O03", (Test1 == SqlDouble.Null).IsNull); // != -operator Assert ("#O04", !(Test2 != Test22).Value); Assert ("#O05", (Test2 != Test3).Value); Assert ("#O06", (Test1 != Test3).Value); Assert ("#O07", (Test1 != SqlDouble.Null).IsNull); // > -operator Assert ("#O08", (Test1 > Test2).Value); Assert ("#O09", !(Test1 > Test3).Value); Assert ("#O10", !(Test2 > Test22).Value); Assert ("#O11", (Test1 > SqlDouble.Null).IsNull); // >= -operator Assert ("#O12", !(Test1 >= Test3).Value); Assert ("#O13", (Test3 >= Test1).Value); Assert ("#O14", (Test2 >= Test22).Value); Assert ("#O15", (Test1 >= SqlDouble.Null).IsNull); // < -operator Assert ("#O16", !(Test1 < Test2).Value); Assert ("#O17", (Test1 < Test3).Value); Assert ("#O18", !(Test2 < Test22).Value); Assert ("#O19", (Test1 < SqlDouble.Null).IsNull); // <= -operator Assert ("#O20", (Test1 <= Test3).Value); Assert ("#O21", !(Test3 <= Test1).Value); Assert ("#O22", (Test2 <= Test22).Value); Assert ("#O23", (Test1 <= SqlDouble.Null).IsNull); } public void TestUnaryNegation() { SqlDouble Test = new SqlDouble (2000000001); SqlDouble TestNeg = new SqlDouble (-3000); SqlDouble Result = -Test; AssertEquals ("#P01", (double)(-2000000001), Result.Value); Result = -TestNeg; AssertEquals ("#P02", (double)3000, Result.Value); } public void TestSqlBooleanToSqlDouble() { SqlBoolean TestBoolean = new SqlBoolean (true); SqlDouble Result; Result = (SqlDouble)TestBoolean; AssertEquals ("#Q01", (double)1, Result.Value); Result = (SqlDouble)SqlBoolean.Null; Assert ("#Q02", Result.IsNull); } public void TestSqlDoubleToDouble() { SqlDouble Test = new SqlDouble (12e12); Double Result = (double)Test; AssertEquals ("#R01", 12e12, Result); } public void TestSqlStringToSqlDouble() { SqlString TestString = new SqlString ("Test string"); SqlString TestString100 = new SqlString ("100"); AssertEquals ("#S01", (double)100, ((SqlDouble)TestString100).Value); try { SqlDouble test = (SqlDouble)TestString; Fail ("#S02"); } catch(Exception e) { AssertEquals ("#S03", typeof (FormatException), e.GetType ()); } } public void TestDoubleToSqlDouble() { double Test1 = 5e64; SqlDouble Result = (SqlDouble)Test1; AssertEquals ("#T01", 5e64, Result.Value); } public void TestByteToSqlDouble() { short TestShort = 14; AssertEquals ("#U01", (double)14, ((SqlDouble)TestShort).Value); } public void TestSqlDecimalToSqlDouble() { SqlDecimal TestDecimal64 = new SqlDecimal (64); AssertEquals ("#V01", (double)64, ((SqlDouble)TestDecimal64).Value); AssertEquals ("#V02", SqlDouble.Null, ((SqlDouble)SqlDecimal.Null)); } public void TestSqlIntToSqlDouble() { SqlInt16 Test64 = new SqlInt16 (64); SqlInt32 Test640 = new SqlInt32 (640); SqlInt64 Test64000 = new SqlInt64 (64000); AssertEquals ("#W01", (double)64, ((SqlDouble)Test64).Value); AssertEquals ("#W02", (double)640, ((SqlDouble)Test640).Value); AssertEquals ("#W03", (double)64000, ((SqlDouble)Test64000).Value); } public void TestSqlMoneyToSqlDouble() { SqlMoney TestMoney64 = new SqlMoney(64); AssertEquals ("#X01", (double)64, ((SqlDouble)TestMoney64).Value); } public void TestSqlSingleToSqlDouble() { SqlSingle TestSingle64 = new SqlSingle (64); AssertEquals ("#Y01", (double)64, ((SqlDouble)TestSingle64).Value); } } } --------------Boundary-00=_YV6SS7ESH067G9SRAS7W-- From rodrigo@ximian.com Thu Oct 10 21:25:10 2002 From: rodrigo@ximian.com (Rodrigo Moya) Date: 10 Oct 2002 22:25:10 +0200 Subject: [Mono-list] Testclass for SqlDouble In-Reply-To: <200210102245.34337.vi64pa@koti.soon.fi> References: <200210102245.34337.vi64pa@koti.soon.fi> Message-ID: <1034281510.5363.0.camel@localhost> On Thu, 2002-10-10 at 21:45, ville wrote: > ..And here it is. > applied to CVS -- Rodrigo Moya From DENNISH@Raytek.com Thu Oct 10 21:47:50 2002 From: DENNISH@Raytek.com (Dennis Hayes) Date: Thu, 10 Oct 2002 13:47:50 -0700 Subject: [Mono-list] changes in v1.1 Message-ID: Look minor in SWF and Sysem.Drawing, and the few others I looked at. They can be found here: www.gotditnet.com/team/upgrade/v1.1/v1.0tov1.1changes.zip I hand copied the url, so there may be typos! Dennis From miguel@ximian.com Fri Oct 11 03:15:08 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 10 Oct 2002 22:15:08 -0400 Subject: [Mono-list] Help needed with XSLT transformations (documentation browser) Message-ID: <1034302508.14577.313.camel@erandi.boston.ximian.com> --=-93fHrr0xP5IDF4e1jqbG Content-Type: text/plain Content-Transfer-Encoding: 7bit Hello guys, I was going to do this manually, but the more code I wrote, the more I realized that this is the kind of thing that should really be done with Xslt. But I do not know Xslt, nor "better practices" with Xslt, and I fear that this will have a fair amount of duplication. I have attached the ECMA documentation for Type.xml, the idea of what I want to achieve is to process the XML document and extract a number of things from it: * The type page, something like: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemtypeclasstopic.asp * The methods page, something like: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemTypeMethodsTopic.asp * The fields page, something like: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemTypeFieldsTopic.asp * The properties page, something like: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemTypePropertiesTopic.asp Then the tricky ones, given a member (field, property, method, constructor, operator, do not worry about matching the method signature correctly, we will figure that out later), render the page with the data. This is a sample for the property: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemtypeclassassemblytopic.asp Can someone help? Miguel. --=-93fHrr0xP5IDF4e1jqbG Content-Disposition: attachment; filename=Type.xml Content-Transfer-Encoding: quoted-printable Content-Type: text/xml; name=Type.xml; charset=ISO-8859-1 BCL mscorlib [00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 ] 1.0.x.x none CLSCompliantAttribute(true) 0 This type is safe for multithreaded operations.= Provides information about a type. The class is abstract, as is th= e class and its subclasses , , , and . and are subclasses of . The runt= ime provides non-public implementations of these classes. For example, is typed as returning a object. The returned object is actually an instance of the non-public runtime type that implements . A conforming CLI program which is written to run on only the Ke= rnel profile=20 cannot subclass . This only applies to conforming programs not conforming implementations. A object that represents a type= is unique; that is, two object=20 references refer to the same object if and only if they represent the same = type. This allows for comparison of objects using reference equality. An instance of can represent any one of the following types: =20 Classes =20 Value types =20 Arrays =20 Interfaces =20 Pointers =20 Enumerations The following table shows what members of a base class are re= turned by the methods that return members of types, such as and . Member Type Static Non-Static Constructor No No Field No Yes. A field is always hide-by-name-and-signature. Event Not applicable The common type system rule is that the inheritance of an event is the same as that of the accessors that implement the event. Reflection treats events as hide-by-name-and-signature. Method No Yes. A method (both virtual and non-virtual) can be hide-by-name or hide-by-name-and-signature. Nested Type No No Property Not applicable The common type system rule is that the inheritance is the same as that of the accessors that implement the property. Reflection treats properties as hide-by-name-and-signature. For reflection, properties and events are hide-by-name-and-si= gnature. If a property has both a get and a set accessor in the base class, but the de= rived class has only a get accessor, the derived class property hides the base= class property, and the setter on the base class will not be accessible. System.Object System.Reflection.MemberInfo Reflection Field System.Object Represents a missing value in the information. This field is read-only. Use the =20 field for invocation through reflection to ensure that a call will be made with the default value of a parameter as specified in the metadata. If the field is = specified for a parameter value and there is no default value for that parameter, a is thrown. 1 Reflection Field System.Char Specifies the character that separates elements in the ful= ly qualified name of a . This field is read-only. 1 Reflection Field System.Type Returns an empty array of type . This field is read-only. The empty array returned by = this field is used to specify that=20 lookup methods in the class, such as and , search for members that do not take parameters. For example, to locate the public instance constructor that ta= kes no parameters, invoke ( | , , , ). 1 Reflection Method System.Object Invokes or accesses a member defined on the type represented by the current inst= ance that matches the specified binding criteria. A containing the name of t= he constructor or method to invoke, or property or field to access. If the = type represented by the current instance has a default member, specify to invoke that member. For more information on default members, see . A bitwise combination of values that control the binding process. If zero is specifi= ed, | is used by default.<= /para> A on which = to invoke the member that matches the other specified criteria. If the matc= hing member is , this parameter is ignored. An array of objects containing the arguments t= o pass to the member to be invoked. The elements of this array are of the s= ame number and in the same order by assignment-compatible type as specified= by the contract of the member to be bound if and only if is . If is not , the order of the elements= in corresponds to the order of the parameters s= pecified in . Specify an empty array o= r for a member that takes no parameters. The only defined value for this parameter is . The only defined value for this parameter is . An array of objects containing the names of the parameters to which the value= s in are passed. These names are processed in a = case-sensitive manner and have a one-to-one correspondence with the element= s of . Specify an empty array or for a member that takes no parameters. Specify to have this parameter ignored. A containing the return value of the invoked or accessed member. If the membe= r does not have a return value, returns a co= ntaining . is . has more than one dimension. -or- is not a valid value. -or- The member to be invoked is a constructor and is not specified in . -or- The member to be invoked is a method that is not a type ini= tializer or instance constructor, and is not specified in . -or- The member to be accessed is a field, and neither nor is specified in . -or- The member to be accessed is a property, and neither nor is specified in . -or- contains and at least one of , , , , or . -or- contains both and . -or- contains both and . -or- contains and at least one of or . -or- contains and has mo= re than one element. -or- .Length > .Length . -or- At least one element in is . -or- At least one element in is not a= ssignment-compatible with the corresponding parameter in . A field or prope= rty matching the specified criteria was not found. A method matchi= ng the specified criteria cannot be found. The requested me= mber is non-public and the caller does not have the required permission. The member = matching the specified criteria cannot be invoked on . T= he member matching the specified criteria threw an exception. Mor= e than one member matches the specified criteria. calls a constructor or a method , gets or sets a propert= y , gets or sets a field, or gets or sets an element of an array. The binder finds all of the matching members. These members are found based upon the type of binding specified by . The is responsible for selecting the method to be invoked. The default binder s= elects the most specific match. The set of members is then filtered by name, nu= mber of arguments, and a set of search modifiers defined in the binder. After th= e member is selected, it is invoked or accessed. Accessibility is checked at that point. Access restrictions are ignored = for fully trusted code; that is, private constructors, methods, fields, and= properties can be accessed and invoked via reflection whenever the code is= fully trusted. The following are used to define which members to include in the search: Specify either or to get a return value other than . Specify to i= nclude public members in the search. Specify t= o include non-public members (that is, private and protected members) in the search. Specify to include static members declared in ancestors in the search. The following values can be used to change how the search works: to search only the members=20 declared in the type, not members that were simply inherited. to ignore the case of . For more information, see = . Each parameter in the array is assigned the value in the corresponding element in the array. If the le= ngth of is greater than the length of , the re= maining argument values are passed in order. A member will be found only if the number of parameters in the member declaration equals the number = of arguments in the args array (unless default arguments are defined on the member). Also, The type of each argument is required to be convertible b= y the binder to the type of the parameter. It is required that the caller specify values for as follows: Action BindingFlags Invoke a constructor. . This flag is not valid with the other flags in this table. If this flag is specified, is ignored. Invoke a method. . This flag if not valid with , = , or . Define a field value. . This flag is not valid with , , or . Return a field value. . This flag is not valid with , , or . Set a property. . This flag is not valid with , , or . Get a property. . This flag is not valid with , , or . For more information, se= e . can be used to invoke methods with parameters that have default values. To bind to these methods, must be speci= fied. For a parameter that has a default value, the caller can supply a value or supply =20 to use the default value. can be used to set a field to a particular value by specifying . For example, to set a public instance field named F on cla= ss C, where F is a string, the value is set using the following statement:<= /para> typeof(C).InvokeMember("F", BindingFlags.SetField, null, C= , new Object{ "strings new value"}, null, null, null); A string array F can be initialized as follows: typeof(C).InvokeMember("F", BindingFlags.SetField, null= , C, new Object{new String[]{"a","z","c","d"}, null, null, null); Use to set the value of an element in an array by= specifying the index of the value and the new value for the element as fol= lows: typeof(C).InvokeMember("F", BindingFlags.SetField, null, C= , new Object{1, "b"}, null, null, null); The preceding statement changes "z" in array F to "b". Requires permission to retrieve information on non-public members of t= ypes in loaded assemblies. See . The following example demonstrates the use of to construct a , obtain its property, invoke on it, and then set its value using the fiel= d. using System; using System.Reflection; class InvokeMemberExample { static void Main(string[] args) { // Create the parameter arrays that will // be passed to InvokeMember. char[] cAry =3D=20 new char[] {'A',' ','s','t','r','i','n','g'}; object[] oAry =3D new object[] {cAry, 0, cAry.Length}; Type t =3D typeof(string); // Invoke the constructor of a string. string str =3D (string)t.InvokeMember(null, BindingFlags.Instance | BindingFlags.Public | BindingFlags.CreateInstance, null, null, oAry, null, null, null); Console.WriteLine("The string is \"{0}\".", str); // Access a property of the string. int i =3D (int) t.InvokeMember("Length", BindingFlags.Instance | BindingFlags.Public | BindingFlags.GetProperty, null,=20 str, null, null, null, null); Console.WriteLine("The length of the string is {0}.", i); // Invoke a method on the string. string newStr =3D "new "; object[] oAry2 =3D new Object[] {2, newStr}; str =3D (string) t.InvokeMember("Insert", BindingFlags.Instance | BindingFlags.Public | BindingFlags.InvokeMethod, null, str,=20 oAry2, null, null, null); Console.WriteLine("The modified string is \"{0}\".", str); // Access a field of the string. str =3D (string) t.InvokeMember("Empty", BindingFlags.Static |=20 BindingFlags.Public | BindingFlags.GetField, null, str,=20 null); Console.WriteLine("The empty string is \"{0}\".", str); =20 } } The output is The string is "A string". The length of the string is 8. The modified string is "A new string" The empty string is "". 1 Reflection Method System.Reflection.MemberInfo[] Returns an array of objects that reflect the members that are defined in the type represented by the current instance and match the sp= ecified binding constraints. A bitwise combination of values that control the binding process. If zero is specifi= ed, this method returns . An array of = objects that reflect the members defined in the type represented by the current instance that match the constraints of . If no members match t= hese constraints, returns an empty array. If the type represented by the current instance = is from a loaded assembly and the caller does not have sufficient permission to = reflect on non-public objects in loaded assemblies, returns only public members.= The following are used to define which members to include in the search: =20 Specify either or to get a return value other than . =20 Specify to i= nclude public members in the search. =20 Specify t= o include non-public members (that is, private and protected members) in the search. =20 Specify to include static members declared in ancestors in the search. The following values can be used to change how the search works: to search only the members declared in the type, not members that were simply inherited. For more information, see = . As described above. Requires permission to retrieve information on non-public members of t= ypes in loaded assemblies. See . 1 Reflection Method System.Reflection.MemberInfo[] Returns an array of objects that reflect the members defined in the type represented by the current instance that have the specified nam= e and match the specified binding constraints. A containing = the name of the member to be returned. A bitwise combination of values that control the binding process. If zero is specifi= ed, this method returns . An array of = objects that reflect the members named , are defined in the type represented by= the current instance and match the constraints of . If no members match these constraints, returns an empty array. If the selected member is non-public, the type reflected by the current = instance is from a loaded assembly and the caller does not have sufficient permission to re= flect on non-public objects in loaded assemblies, returns . is . The following are used to define which members to include in the search: Specify either or to get a return value other than . Specify to i= nclude public members in the search. Specify t= o include non-public members (that is, private and protected members) in the search. Specify to include static members declared in ancestors in the search. The following values can be used to change how the search works: to search only the members declared in the type, not members that were simply inherited. to ignore the case of . For more information, see = . As described above. Requires permission to retrieve information on non-public members of t= ypes in loaded assemblies. See . 1 Reflection Method System.Reflection.PropertyInfo[] Returns an array of objects that reflect the properties defined for the type represented by the current instance that match the = specified binding constraints. A bitwise combination of values that control the binding process. If zero is specifi= ed, this method returns . An array of objects that reflect the properties defined in the type represented by the current instance and match the constraints of . If no matching proper= ties are found, returns an empty array. If the type represented by the current instance = is from a loaded assembly and the caller does not have permission to reflect on non-public objects in loaded assemblies, returns only public properties.= The following are used to define which members to include in the search: =20 Specify either or to get a return value other than . =20 Specify to i= nclude public members in the search. =20 Specify t= o include non-public members (that is, private and protected members) in the search. =20 Specify to include static members declared in ancestors in the search. The following values can be used to change how the search works: to search only the members declared in the type, not members that were simply inherited. For more information, see = . A property is conside= red by reflection to be if it has at least one acce= ssor that is . Otherwise, the property is not . Requires permission to retrieve information on non-public members of t= ypes in loaded assemblies. See . 1 Reflection Method System.Reflection.PropertyInfo Returns a = object that reflects the property defined in the type represented by the current instance that matches the= specified search criteria . A containing = the name of the property to be returned. A bitwise combination of values that control the binding process. If zero is specifi= ed, this method returns . A object that d= efines a set of properties and enables the binding, coercion of argument ty= pes, and invocation of members using reflection. Specify to use the . A object= that represents the type of the property to be returned. An array of objects. The ele= ments in the array are of the same number, in the same order, and represent= the same types as the parameters for the indexer to be returned. Specify <= see cref=3D"F:System.Type.EmptyTypes" /> to obtain a property that is not i= ndexed. The only defined value for this parameter= is . A object reflecting the property that is defined in the type represented by the current instance and matches the specified criteria. If no matching prop= erty is found, returns . If the type reflected by the = current instance is contained in a loaded assembly, the property that matches th= e specified criteria is not public, and the caller does not have sufficien= t permission, returns . Mor= e than one property matching the specified criteria was found. or is , or at least one of the elements in is . has more than one dimension. The following are used to define which members to include in the search: =20 Specify either or to get a return value other than . =20 Specify to i= nclude public members in the search. =20 Specify t= o include non-public members (that is, private and protected members) in the search. =20 Specify to include static members declared in ancestors in the search. The following values can be used to change how the search works: to search only the members=20 declared in the type, not members that were simply inherited. to ignore the case of . For more information, see = . This version of is equivalent t= o (, , , , , ). The search for is case-sensitive= . Different programming languages use different syntax to specify indexed properties. Internally, this property is referred to by = the name "Item" in the metadata. Therefore, any attempt to retrieve an indexed pr= operty using reflection is required to specify this internal name in order for the to be returned c= orrectly. Requires permission to retrieve information on non-public members of t= ypes in loaded assemblies. See . 1 Reflection Method System.Reflection.PropertyInfo Returns a = object that reflects the property defined in the type represented by the current instance that matches the specifi= ed search criteria. A containing = the name of the property to be returned. A bitwise combination of values that control the binding process. If zero is specifi= ed, this method returns . A object reflecting the property defined in the type represented by the current instance that matches the specified criteria. If no matching pr= operty is found, returns . If the type reflected by the cur= rent instance is contained in a loaded assembly, the property that matches the specified criteria is not public, and the caller does not have sufficient permission, returns . Mor= e than one property matching the specified criteria was found. is . The following are used to define which members to include in the search: =20 Specify either or to get a return value other than . =20 Specify to i= nclude public members in the search. =20 Specify t= o include non-public members (that is, private and protected members) in the search. =20 Specify to include static members declared in ancestors in the search. The following values can be used to change how the search works: to search only the members=20 declared in the type, not members that were simply inherited. to ignore the case of . For more information, see = . This version of is equivalent t= o (, , , , ,=20 ). The search for is case-sensitive= . Requires permission to retrieve information on non-public members of t= ypes in loaded assemblies. See . 1 Reflection Method System.Reflection.FieldInfo[] Returns an array of objects that reflect the fields that are defined in the type represented by the current instance and match the sp= ecified binding constraints. A bitwise combination of values that control the binding process. If zero is specifi= ed, this method returns . An array of = objects that reflect the fields that are defined in the type represented by the current instance and match the constraints of . If no fields match these constraints, returns an empty array. If the type represented by th= e current instance is from a loaded assembly and the caller does not have sufficient permission to reflect on non-public objects in loaded assembl= ies, returns only public fields. The following are used to define which fields to include in the search: =20 Specify either or in order to get a return value other than . =20 Specify to i= nclude public fields in the search. =20 Specify t= o include non-public fields (that is, private and protected fields) in the search. =20 Specify to include static members declared in ancestors in the search. The following values can be used to change how the search works: to search only the fields declared in the type, not fields that were simply inherited. For more information, see = . As described above. Requires permission to retrieve information on non-public members of a= type in loaded assemblies. See . 1 Reflection Method System.Reflection.FieldInfo Returns a ob= ject reflecting the field that has the specified name, is defined in the type represented by the current instan= ce, and matches the specified binding constraints. A containing = the name of the field to be returned. A bitwise combination of values that control the binding process. If zero is specifi= ed, this method returns . A object ref= lecting the field that is named , is defined in the type represented by the curre= nt instance, and=20 matches the constraints of . If a field= matching these criteria cannot be found, returns . If the field is not = public, the current type is from a loaded assembly, and the caller does not have sufficient permissi= on, returns . is . The following are used to define which fields to include in the search: Specify either or to get a return value other than . Specify to i= nclude public fields in the search. Specify t= o include non-public fields (that is, private and protected fields) in the search. Specify to include static members declared in ancestors in the search. The following values can be used to change how the search works: to search only the fields declared in the type, not fields that were simply inherited. to ignore the case of . For more information, see = . As described above. Requires permission to retrieve information on non-public members of t= ypes in loaded assemblies. See . 1 Reflection Method System.Reflection.MethodInfo[] Returns an array of objects that reflect the methods defined in the type represented by the current instance that match the specified binding con= straints. A bitwise combination of values that control the binding process. If zero is specifi= ed, this method returns . An array of = objects reflecting the methods defined in the type represented by the current instance that match the constraints of . If no such methods found, returns an=20 empty array. If the type represented by the current instance is from a l= oaded assembly and the caller does not have permission to reflect on non-publi= c objects in loaded assemblies, returns only public methods. The following are used to define which members to include in the search: =20 Specify either or to get a return value other than . =20 Specify to i= nclude public members in the search. =20 Specify t= o include non-public members (that is, private and protected members) in the search. =20 Specify to include static members declared in ancestors in the search. The following values can be used to change how the search works: to search only the members declared in the type, not members that were simply inherited. For more information, see = . As described above. Requires permission to retrieve information on non-public members of t= ypes in loaded assemblies. See . 1 Reflection Method System.Reflection.MethodInfo Returns a o= bject that reflects the method that has the specified name and is defined in the type represented by the current instance. A containing = the name of the method to be returned. A bitwise combination of values that control the binding process. If zero is specifi= ed, this method returns . A object that reflects the method that is defined in the type represented by the current instance and matches the specifie= d criteria, if found; otherwise, . Mor= e than one method matching the specified criteria was found. is . The following are used to define which members to include in the search: =20 Specify either or to get a return value other than . =20 Specify to i= nclude public members in the search. =20 Specify t= o include non-public members (that is, private and protected members) in the search. =20 Specify to include static members declared in ancestors in the search. The following values can be used to change how the search works: to search only the members=20 declared in the type, not members that were simply inherited. to ignore the case of . For more information, see = . This version of is equivalent to = (, , , , ). Requires permission to retrieve information on non-public members of t= ypes in loaded assemblies. See . 1 Reflection Method System.Reflection.MethodInfo Returns a o= bject that reflects the method that matches the specified criteria and is defined in the type represented by the current instance. A containing = the name of the method to be returned. A bitwise combination of values that control the binding process. If zero is specifi= ed, this method returns . A object that d= efines a set of properties and enables the binding, coercion of argument ty= pes, and invocation of members using reflection. Specify to use the . An array of objects. The ele= ments in the array are of the same number, in the same order, and represent= the same types as the parameters for the method to be returned. The only defined value for this parameter= is . A object th= at reflects the method defined in the type represented by the current instance that matches the specified criteria. If no method matching the specified crit= eria is found, returns . If the=20 selected method is non-public, the type reflected by the current instance is from a loaded assembly, and the caller does not have permission to reflect on non-public objects in loaded asse= mblies, returns . Mor= e than one method matching the specified criteria was found. or is . -or- At least one of the elements in = is . has more than one dimension. The following are used to define which members to include in the search: =20 Specify either or to get a return value other than . =20 Specify to i= nclude public members in the search. =20 Specify t= o include non-public members (that is, private and protected members) in the search. =20 Specify to include static members declared in ancestors in the search. The following values can be used to change how the search works: to search only the members=20 declared in the type, not members that were simply inherited. to ignore the case of . For more information, see = . Requires permission to retrieve information on non-public members of t= ypes in loaded assemblies. See . 1 Reflection Method System.Boolean Determines whether an instance of the current can be assigned from an instance of the specified . The to compare wit= h the current . if is a null= reference. if one or more of the following statements are true; otherwise . =20 If and the current represent the same type. =20 If the current is in the inheritance h= ierarchy of . =20 If the current is an interface and supports that interface. The following example demonstrates the method using arrays. using System; class ArrayTypeTest { public static void Main() { int i =3D 1; int [] array10 =3D new int [10]; int [] array2 =3D new int[2]; int [,]array22 =3D new int[2,2]; int [,]array24 =3D new int[2,4]; int [,,]array333 =3D new int[3,3,3]; Type array10Type =3D array10.GetType(); Type array2Type =3D array2.GetType(); Type array22Type =3D array22.GetType(); Type array24Type =3D array24.GetType(); Type array333Type =3D array333.GetType(); // If X and Y are not both arrays, then false Console.WriteLine("int[2] is assignable from int? {0} ", array2Type.IsAssi= gnableFrom(i.GetType())); // If X and Y have same type and rank, then true. Console.WriteLine("int[2] is assignable from int[10]? {0} ", array2Type.I= sAssignableFrom(array10Type)); Console.WriteLine("int[2,2] is assignable from int[2,4]? {0}", array22Typ= e.IsAssignableFrom(array24Type)); Console.WriteLine("int[2,4] is assignable from int[2,2]? {0}", array24Typ= e.IsAssignableFrom(array22Type)); Console.WriteLine(""); // If X and Y do not have the same rank, then false. Console.WriteLine("int[2,2] is assignable from int[10]? {0}", array22Type= .IsAssignableFrom(array10Type)); Console.WriteLine("int[2,2] is assignable from int[3,3,3]? {0}", array22T= ype.IsAssignableFrom(array333Type)); Console.WriteLine("int[3,3,3] is assignable from int[2,2]? {0}", array333= Type.IsAssignableFrom(array22Type)); } } The output is int[2] is assignable from int? False int[2] is assignable from int[10]? True int[2,2] is assignable from int[2,4]? True int[2,4] is assignable from int[2,2]? True int[2,2] is assignable from int[10]? False int[2,2] is assignable from int[3,3,3]? False int[3,3,3] is assignable from int[2,2]? False 0 Method System.Boolean Determines whether the specified object is an instance of the current . The object to compare with the current . if either of the following statements is true; otherwise . =20 If the current is in the inheritance h= ierarchy of . =20 If the current is an interface and supports that interface. If is a null reference, returns . As described above. The following example demonstrates the method. using System; public interface IFoo { } public class MyClass : IFoo {} public class MyDerivedClass : MyClass {} class IsInstanceTest { public static void Main() { Type ifooType=3Dtypeof(IFoo); MyClass mc =3D new MyClass(); Type mcType =3D mc.GetType(); MyClass mdc =3D new MyDerivedClass(); Type mdcType =3D mdc.GetType(); int [] array =3D new int [10]; Type arrayType =3D typeof(Array); Console.WriteLine("int[] is instance of Array? {0}", arrayType.IsInstanceO= fType(array)); Console.WriteLine("myclass instance is instance of MyClass? {0}", mcType.I= sInstanceOfType(mc)); Console.WriteLine("myderivedclass instance is instance of MyClass? {0}", = mcType.IsInstanceOfType(mdc)); Console.WriteLine("myclass instance is instance of IFoo? {0}", ifooType.Is= InstanceOfType(mc)); Console.WriteLine("myderivedclass instance is instance of IFoo? {0}", ifo= oType.IsInstanceOfType(mdc)); } } The output is int[] is instance of Array? True myclass instance is instance of MyClass? True myderivedclass instance is instance of MyClass? True myclass instance is instance of IFoo? True myderivedclass instance is instance of IFoo? True 0 Method System.Boolean Determines whether the current derives from the specified . The to compare wit= h the current . if and the cu= rrent represent=20 classes, and the class represented by the current derives from the class represented by ; otherwise . Returns if=20 and the current repr= esent the same class. The following example demonstrates the method. using System; public interface IFoo { } public interface IBar:IFoo{} public class MyClass : IFoo {} public class MyDerivedClass : MyClass {} class IsSubclassTest { public static void Main() { Type ifooType =3D typeof(IFoo); Type ibarType =3D typeof(IBar); MyClass mc =3D new MyClass(); Type mcType =3D mc.GetType(); MyClass mdc =3D new MyDerivedClass(); Type mdcType =3D mdc.GetType(); int [] array =3D new int [10]; Type arrayOfIntsType =3D array.GetType(); Type arrayType =3D typeof(Array); =20 Console.WriteLine("Array is subclass of int[]? {0}", arrayType.IsSubclassO= f(arrayOfIntsType)); Console.WriteLine("int [] is subclass of Array? {0}", arrayOfIntsType.IsSu= bclassOf(arrayType)); Console.WriteLine("IFoo is subclass of IBar? {0}", ifooType.IsSubclassOf(i= barType)); Console.WriteLine("myclass is subclass of MyClass? {0}", mcType.IsSubclass= Of(mcType)); Console.WriteLine("myderivedclass is subclass of MyClass? {0}", mdcType.Is= SubclassOf(mcType)); } } The output is Array is subclass of int[]? False int [] is subclass of Array? True IFoo is subclass of IBar? False myclass is subclass of MyClass? False myderivedclass is subclass of MyClass? True 0 Method System.Boolean When overridden in a derived class, implements the property and determines whether the current encompasse= s or refers to another type; that is, whether the current is an array, a pointe= r, or is passed by reference. if the = is an array, a pointer, or is passed by reference; otherwise, . For example,=20 ("System.Int32[]").HasElementTypeImpl returns , but ("System.Int32").HasElementTypeI= mpl returns . also returns for "System.Int32*" and "Syste= m.Int32&". 1 Reflection Method System.Type Returns the element type of the current . A that represents=20 the type used to create the current instance if the current instance represents an array, pointer, or an argument passed by reference. Otherwise, returns . The following example demonstrates the method. using System; class TestType { public static void Main() { int[] array =3D {1,2,3}; Type t =3D array.GetType(); Type t2 =3D t.GetElementType(); Console.WriteLine("{0} element type is {1}",array, t2.ToString()); TestType newMe =3D new TestType(); t =3D newMe.GetType(); t2 =3D t.GetElementType(); Console.WriteLine("{0} element type is {1}", newMe, t2=3D=3Dnull? "null" := t2.ToString()); } } The output is System.Int32[] element type is System.Int32 TestType element type is null 0 Method System.Boolean Reserved. This abstract method is required to be present for legacy implementations. Conforming implementations are permitted to t= hrow the as their implementation. 1 Reflection Method System.Boolean When overridden in a derived class, implements the property and determines whether the is one of the primitive types. if the = is one of the primitive types; otherwise, . This method=20 returns if the underlying type of the curre= nt instance is one of the following: , , , , , , , , , , , and . 1 Reflection Method System.Boolean When overridden in a derived class, implements the property and determines whether the is a pointer. if the = is a pointer; otherwise, . As described above. 1 Reflection Method System.Boolean When overridden in a derived class, implements the property and determines whether the is passe= d by reference. if the = is passed by reference; otherwise, . As described above. 1 Reflection Method System.Boolean When overridden in a derived class implements the property returning a value that indicates whether the type represented by the current instance is an array. if the = is an array; otherwise, . An instance of the class is= required to return because it is an object, not= an array.As described above. 1 Reflection Method System.Reflection.TypeAttributes When overridden in a derived type implements the property and returns the attributes specified for the type represented by t= he current instance. A value= that signifies the attributes of the type represented by the current instance. This property is read-only. This method returns a value that indicates the attributes set in the metadata of the type represented by the current instance. Use this property to dete= rmine the visibility, semantics, and layout format of the type represented by the current. Also use this property to determine if the type represented by the current instance has a special name. 1 Reflection Method System.Reflection.MemberInfo[] Returns an array of objects that reflect the default members defined in the type represented by the current instance. An array of = objects reflecting the default members of the type represented by the current instance. If the type represented by the= current instance does not have any default members, returns an empty array. The members returned by this method have the attribute. 1 Reflection Method System.Type Returns a nested types defined in the type represented by = the current instance that match the specified binding constraints. A containing = the name of the nested type to return. Specify the unqualified name of the = nested type. For example, for a type B= nested within A, if typeA represents the type object for A, the correct in= vocation is typeA.GetNestedType("B"). A bitwise combination of values that control the binding process. If zero is specifi= ed, this method returns . A object representing the ne= sted type that matches the specified criteria, if found; otherwise, . If the selected nested type is non-public, the current instance represents a type contained in = a loaded assembly and the caller does not have sufficient permissions, returns =20 . is . The following are used to define which members to include in the search: =20 Specify either or to get a return value other than . =20 Specify to i= nclude public members in the search. =20 Specify t= o include non-public members (that is, private and protected members) in the search. =20 Specify to include static members declared in ancestors in the search. The following values can be used to change how the search works: to search only the members=20 declared in the type, not members that were simply inherited. to ignore the case of . For more information, see = . Requires permission to retrieve information on non-public members of t= ypes in loaded assemblies. See . 1 Reflection Method System.Type[] Returns an array containing the nested types defined in the type represented by the current instance that match the specified= binding constraints. A bitwise combination of values that control the binding process. If zero is specifi= ed, this method returns . An array of objects represen= ting all types nested within the type represented by the current instance that match the specified binding con= straints, if any. Otherwise, returns an empty array= . If the type reflected by the current instance is contained in a loaded assembly, the type that matches the specified crit= eria is not public, and the caller does not have sufficient permission, returns = only public types. The following are used to define which members to include in the search: =20 Specify to i= nclude public members in the search. =20 Specify t= o include non-public members (that is, private and protected members) in the search. =20 Specify to include static members declared in ancestors in the search. The following values can be used to change how the search works: to search only the members declared in the type, not members that were simply inherited. For more information, see = . Requires permission to retrieve information on non-public members of t= ypes in loaded assemblies. See . 1 Reflection Method System.Reflection.PropertyInfo When overridden in a derived class implements the=20 =20 method and returns a o= bject that reflects the property defined in the type represented by the current instance that matches the specifi= ed search criteria. A containing = the name of the property to be returned. A bitwise combination of values that control the binding process. If zero is specifi= ed, this method returns . A object that d= efines a set of properties and enables the binding, coercion of argument ty= pes, and invocation of members using reflection. Specify to use the . A object= that represents the type of the property to be returned. An array of objects. The ele= ments in the array are of the same number, in the same order, and represent= the same types as the parameters for the indexer to be returned. Specify <= see cref=3D"F:System.Type.EmptyTypes" /> to obtain a property that is not i= ndexed. The only defined value for this parameter= is . A object = representing the property that matches the specified search criteria, if found; otherwise, . If the type reflected by the current instance is from a loaded assembly, the matching property is not public, and the caller does not have permission to reflect on non-public objects in loaded assemblies, returns . Mor= e than one property matching the specified criteria was found. or is , or at least one of the elements in is . has more than one dimension. The following are used to define which members to include in the search: =20 Specify either or to get a return value other than . =20 Specify to i= nclude public members in the search. =20 Specify t= o include non-public members (that is, private and protected members) in the search. =20 Specify to include static members declared in ancestors in the search. The following values can be used to change how the search works: to search only the members=20 declared in the type, not members that were simply inherited. to ignore the case of . For more information, see = . Different programming languages use different syntax to specify indexed properties= . Internally, this property is referred to by the name "Item" in the metad= ata. Therefore, any attempt to retrieve an indexed property using reflection = is required to specify this internal name in order for the to be returned correctly. Requires permission to retrieve information on non-public members of t= ypes in loaded assemblies. See . 1 Reflection Method System.Reflection.EventInfo[] Returns an array of objects that reflect the events that are defined in the type represented by the current instance and match the sp= ecified binding constraints. A bitwise combination of values that control the binding process. If zero is specifi= ed, this method returns null. An array of = objects that reflect the events that are defined in the type represented by the current instance and match the constraints of . If no events match these constraints, returns an empty array. If the type reflected by the = current instance is from a loaded assembly and the caller does not have permissi= on to reflect on non-public objects in loaded assemblies, returns only public events. The following are used to define which events to include in the search: =20 Specify either or to get a return value other than . =20 Specify to i= nclude public events in the search. =20 Specify t= o include non-public events (that is, private and protected events) in the search. For more information, see = . As described above. Requires permission to retrieve information on non-public members of t= ypes in loaded assemblies. See . 1 Reflection Method System.Reflection.EventInfo[] Returns an array of objects that reflect the public events defined in the type represented by the current instance. An array of = objects that reflect the public events defined in the type represented by the current instance. If no public ev= ents are defined in the type represented by the current instance, returns an = empty array. As described above. This version of is equivalent to ( | | ). 1 Reflection Method System.Reflection.EventInfo Returns a ob= ject reflecting the event that has the specified name, is defined in the type represented by the current instan= ce, and matches the specified binding constraints. A containing = the name of the event to be returned. A bitwise combination of values that control the binding process. If zero is specifi= ed, this method returns null. A object ref= lecting the event that is named , is defined in the type represented by the curre= nt instance, and=20 matches the constraints of . If an even= t matching these criteria is not found, returns .= If the event is not public, the current instance represents a type from a loaded assembly, and the caller does not have sufficient permission, returns . is . The following are used to define which events to include in the search: =20 Specify either or to get a return value other than . =20 Specify to i= nclude public events in the search. =20 Specify t= o include non-public events(that is, private and protected events) in the search. Specify to include to include static members declared in ancestors in the search. The following value can be used to change how the search works: to search only the events declared on the type, not events that were simply inherited. For more information, see = . As described above. Requires permission to retrieve information on non-public members of t= ypes in loaded assemblies. See . 1 Reflection Method System.Type[] Returns all interfaces implemented or inherited by the type represented by the current instance. An array of objects represen= ting the interfaces implemented or inherited by the type represented by the current instance. If no interfa= ces are found, returns an empty array. 1 Reflection Method System.Type Returns the specified interface, specifying whether to do a case-sensitive search. A containing = the name of the interface to return. A where indicates that the name search is to be done case-insensitively, = and performs a case-sensitive search. A object representing the interface with the specified name, implemented or inherited by the t= ype represented by the instance, if found; otherwise, . is . 1 Reflection Method System.Reflection.ConstructorInfo[] Returns an array of constructors defined in the type repres= ented by the current instance, under the specified binding constraints. A bitwise combination of values that control the binding process. If zero is specifi= ed, this method returns . An array of objects that reflect the constructors that are defined in the type represented by the current instance and match th= e constraints of . If and are specified, this array includes the type initializer if it is defined. If no constructors meeti= ng the constraints of are defined in the type= represented by the current instance, returns an empty array. If the type represented by the= current instance is contained in a loaded assembly, the constructors that match = the specified criteria are not public, and the caller does not have sufficie= nt permission, returns . The following are used to define which constructors to include in the search: =20 Specify either or to get a return value other than . =20 Specify to i= nclude public constructors in the search. =20 Specify t= o include non-public constructors (that is, private and protected constructors) in the search. For more information, see = . As described above. Requires permission to retrieve information on non-public members of t= ypes in loaded assemblies. See . 1 Reflection Method System.Int32 Returns the number of dimensions in the current . A containing the number of = dimensions in the current . The current is not an array. 0 Method System.Int32 Generates a hash code for the current instance. A containing the hash code for this instance. The algorithm used to generate the hash code is unspecified. This method overrides . 0 Method System.String Returns a representation = of the current . Returns . This method overrides . 0 Method System.Type Returns the with the specified name, optionally performing a case-sensitive search and throwing an exception if an error occurs while loading the . A contain= ing the name of the to return. A . Specify to throw a if an e= rror occurs while loading the . Specify to ignore errors while loading the . A . Specify to perform a case-insensitive search for Specify to perform a case-sensitive = search for . The with the specified name,= if found; otherwise, . If the requested type is non-public and the caller does not have permission to = reflect non-public objects outside the current assembly, this method returns . is . A= type initializer was invoked and threw an exception. is a= nd an error was encountered while loading the selected . can be a simple type name, a fully qualified name, or a complex name that includes an as= sembly name. returns a fully qualified type name including nested types and the assembly name. If includes only the name of= the , this method searches in the calling object's assembly, then in the mscorlib.dll assembly. If =20 is fully qualified with the partial or complete assembly name, this method searches in the specified assembly. The following table shows calls to for various types. To Get Use An unmanaged pointer to Type.GetType("MyType*") An unmanaged pointer to a pointer to Type.GetType("MyType**") A managed pointer or reference to Type.GetType("MyType&"). Note that unlike poin= ters, references are limited to one level. A parent class and a nested class Type.GetType("MyParentClass+MyNestedClass") A one-dimensional array with a lower bound of 0 Type.GetType("MyArray[]") A one-dimensional array with an unknown lower bound<= /term> Type.GetType("MyArray[*]") An n-dimensional array A comma (,) inside the brackets a total of n-1 times. For example, System.Object[,,] represents a three-dimen= sional =20 array. A two-dimensional array's array Type.GetType("MyArray[][]") A rectangular two-dimensional array with unknown low= er bounds Type.GetType("MyArray[*,*]")or Type.GetType("My= Array[,]") Requires permission to retrieve information on non-public members of t= ypes in loaded assemblies. See . 1 Reflection Method System.Type Returns the with the specifi= ed name, optionally throwing an exception if an error occurs while loading the . A contain= ing the case-sensitive name of the to return= . A . Specify to throw a if an e= rror occurs while loading the . Specify to ignore errors while loading the . The with the specified name,= if found; otherwise, . If the requested type is non-public and the caller does not have permission to = reflect non-public objects outside the current assembly, this method returns . is . A= type initializer was invoked and threw an exception. is a= nd an error was encountered while loading the . This method is equivalent to (, ,=20 ). can be a simple type name, a fully qualified name, or a complex name that includes an assem= bly name specification. If includes only the nam= e of the , this method searches in the calling object's assembly, then in the mscorlib.dll assembly. If =20 is fully qualified with the partial or complete assembly name, this method searches in the specified assembly. can retu= rn a fully qualified type name including nested types and the assembly name. For compl= ete details, see (, , ). Requires permission to retrieve information on non-public objects. See= 1 Reflection Method System.Type Returns the with the specifi= ed name. A contain= ing the case-sensitive name of the to return= . The with the specified name,= if found; otherwise, . If the requested type is non-public and the caller does not have permission to = reflect non-public objects outside the current assembly, this method returns . is . A= type initializer was invoked and threw an exception. This method is equivalent to (, , ). can be a simple type name, a type name that includes a namespace, or a complex name that includes an assembly name specification. If = includes only the name of the , this method searches in the calling object's assembly, then in the mscorlib.dll assembl= y. If =20 is fully qualified with the partial or complete assembly name, this method searches in the specified assembly. can retu= rn a fully qualified type name including nested types and the assembly name. For complete details, see (= , , ). Requires permission to retrieve information on non-public members of t= ypes in loaded assemblies. See . 1 Reflection Method System.Object Invokes the specified member, using the specified binding c= onstraints and matching the specified argument list and culture. A containing the name of t= he constructor or method to invoke, or property or field to access. If the = type represented by the current instance has a default member, specify to invoke that member. For more information on default members, see . A bitwise combination of values that control the binding process. If zero is specifi= ed, | is used by default. A object that d= efines a set of properties and enables the binding, coercion of argument ty= pes, and invocation of members using reflection. Specify to use the . A on which = to invoke the member that matches the other specified criteria. If the matc= hing member is , this parameter is ignored. An array of objects containing the arguments t= o pass to the member to be invoked. The elements of this array are of the s= ame number and in the same order by assignment-compatible type as specified= by the contract of the member to be bound. Specify an empty array or for a member that has no parameters. The only defined value for this parameter is . A containing the return value of the invoked member. If the invoked member do= es not have a return value, returns a contain= ing . is . has more than one dimension. -or- is not a valid value. -or- The member to be invoked is a constructor and is not specified in . -or- The member to be invoked is a method that is not a type ini= tializer or instance constructor, and is not specified in . -or- The member to be accessed is a field, and neither nor is specified in . -or- The member to be accessed is a property, and neither nor is specified in . -or- contains and at least one of , , , , or . -or- contains both and . -or- contains both and . -or- contains and at least one of or . -or- contains and has mo= re than one element. A field or prope= rty matching the specified criteria was not found. A method matchi= ng the specified criteria was not found. The requested me= mber is non-public and the caller does not have the required permission. The member = matching the specified criteria cannot be invoked on . T= he member matching the specified criteria threw an exception. Mor= e than one member matches the specified criteria. This version of is equivalent to ( , , , , ,=20 , , ). Requires permission to retrieve information on non-public members of t= ypes in loaded assemblies. See . For an example that demonstrates , see ( , , , , [], [], , []). 1 Reflection Method System.Object Invokes the specified member, using the specified binding c= onstraints and matching the specified argument list. A containing the name of t= he constructor or method to invoke, or property or field to access. If the = type represented by the current instance has a default member, specify to invoke that member. For more information on default members, see . A bitwise combination of values that control the binding process.= If zero is specified, | is used b= y default. A object that d= efines a set of properties and enables the binding, coercion of argument ty= pes, and invocation of members using reflection. Specify to use the . A on which = to invoke the member that matches the other specified criteria. If the matc= hing member is , this parameter is ignored. An array of objects containing the arguments t= o pass to the member to be invoked. The elements of this array are of the s= ame number and in the same order by assignment-compatible type as specified= by the contract of the member to be bound. Specify an empty array or for a member that has no parameters. A containing the return value of the invoked member. If the invoked member do= es not have a return value, returns a contain= ing . is . has more than one dimension. -or- is not a valid value. -or- The member to be invoked is a constructor and is not specified in . -or- The member to be invoked is a method that is not a type ini= tializer or instance constructor, and is not specified in . -or- The member to be accessed is a field, and neither nor is specified in . -or- The member to be accessed is a property, and neither nor is specified in . -or- contains and at least one of , , , , or . -or- contains both and . -or- contains both and . -or- contains and at least one of or . -or- contains and has mo= re than one element. A field or prope= rty matching the specified criteria was not found. A method matchi= ng the specified criteria cannot be found. The requested me= mber is non-public and the caller does not have the required permission. The member = matching the specified criteria cannot be invoked on . T= he member matching the specified criteria threw an exception. Mor= e than one member matches the specified criteria. This version of is equivalent to (, , , , , , ,=20 ). For a demonstration of the= use of , see the example for (=20 , ,=20 , , [], [], ,= []). Requires permission to retrieve information on non-public members of t= ypes in loaded assemblies. See . 1 Reflection Method System.RuntimeTypeHandle Returns the handle for the o= f the specified object. The object for which to get the type handle. The for the of the specified . The handle is valid only in the application domain in which= it was obtained. 1 RuntimeInfrastructure Method System.Type Gets the referenced by the s= pecified type handle. The object that refers to the desired . The referenced by the specif= ied . is . The request= ed type is non-public and outside the current assembly, and the caller does= not have the required permission. A= type initializer was invoked and threw an exception. The handles are valid only in the application domain in whi= ch they were obtained. Requires permission to retrieve information on non-public objects. See= 1 RuntimeInfrastructure Method System.Reflection.ConstructorInfo Returns a constructor defined in the type represented by th= e current instance. The parameters of the constructor match the specified argum= ent types and modifiers, under the specified binding constraints. A bitwise combination of values that control the binding process. If zero is specifi= ed, this method returns null. A object that d= efines a set of properties and enables the binding, coercion of argument ty= pes, and invocation of members using reflection. Specify to use the . An array of objects. The ele= ments in the array are of the same number, in the same order, and represent= the same types as the parameters for the constructor to be returned. The only defined value for this parameter= is . A obje= ct that reflects the constructor that matches the specified criteria. If an exact match does not exist, will attempt to coerce the parameter types spe= cified in=20 to select a match. If is unable to select a=20 match, returns . If the type represented by th= e current instance is contained in a loaded assembly, the constructor that matches= the specified criteria is not public, and the caller does not have sufficien= t permissions, returns . is , or at= least one of the elements in is . has more than one dimension. The following are used to define which constructors to include in the search: =20 Specify either or to get a return value other than . =20 Specify to i= nclude public constructors in the search. =20 Specify t= o include non-public constructors (that is, private and protected constructors) in the search. For more information, see = . Requires permission to retrieve information on non-public members of t= ypes in loaded assemblies. See . 1 Reflection Method System.Reflection.ConstructorInfo Returns a public instance constructor defined in the type r= epresented by the current instance. The parameters of the constructor match the specifi= ed argument types. An array of objects. The ele= ments in the array are of the same number, in the same order, and represent= the same types as the parameters for the constructor to be returned. Speci= fy to obtain a constructor that t= akes no parameters. A obje= ct representing the public instance constructor whose parameters match exactly the types in , if found; otherwise, . If the type represented by the cur= rent instance is contained in a loaded assembly, the constructor that matches= the specified criteria is not public, and the caller does not have sufficien= t permissions, returns . is , or at= least one of the elements in is . has more than one dimension. This version of i= s equivalent to ( | , , , ). Requires permission to retrieve information on non-public members of t= ypes in loaded assemblies. See . 1 Reflection Method System.Reflection.ConstructorInfo[] Returns an array of the public constructors defined in the = type represented by the current instance. An array of objects that reflect the public constructors defined in the type represented by the current instance. If no public constructors are defined in the type represented by the current instance= , returns an empty array. This version of is equivalent to ( | ). 1 Reflection Method System.Reflection.MethodInfo Returns a o= bject that reflects the public method that has the specified name and is defined in the type represented by the cur= rent instance. A containing = the name of the public method to be returned. An array of objects. The ele= ments in the array are of the same number, in the same order, and represent= the same types as the parameters for the method to be returned. The only defined value for this parameter= is . A object re= flecting the public method that is defined in the type represented by the current instance and matches the specified criteria, if found; otherwise, . Mor= e than one method matching the specified criteria was found. or is . -or- At least one of the elements in = is . has more than one dimension. The default binder does not process . The search for is case-sensitive= . This version of is equivalent to = ( , | | , , , ). 1 Reflection Method System.Reflection.MethodInfo Returns a o= bject that reflects the public method defined in the type represented by the current instance that has the specified name= and parameter information. A containing = the name of the public method to be returned. An array of objects. The ele= ments in the array are of the same number, in the same order, and represent= the same types as the parameters for the method to be returned. A object re= flecting the public method defined in the type represented by the current instanc= e that matches the specified criteria. If no public method matching the sp= ecified criteria is found, returns . Mor= e than one method matching the specified criteria was found. or is . -or- At least one of the elements in = is . has more than one dimension. The search for is case-sensitive= . This version of is equivalent to = (, | | , , , ). 1 Reflection Method System.Reflection.MethodInfo Returns a o= bject that reflects the public method that has the specified name and is defined in the type represented by the cur= rent instance. A containing = the name of the public method to be returned. A object re= flecting the public method that is defined in the type represented by the current instance and has the spec= ified name, if found; otherwise, . Mor= e than one method matching the specified criteria was found. is . The search for is case-sensitive= . This version of is equivalent to = (, | | , , , ). 1 Reflection Method System.Reflection.MethodInfo[] Returns the public methods defined in the type represented = by the current instance. An array of = objects reflecting the public methods defined in the type represented by the current instance under the constraints of . If no methods matching the constraints a= re found, returns an=20 empty array. This version of i= s equivalent to ( | | ). 1 Reflection Method System.Reflection.FieldInfo Returns a ob= ject reflecting the field that has the specified name and is defined in the type represented by the current instance. A containing = the name of the field to be returned. A object ref= lecting the field that is named and is defined in the type represented by the cu= rrent instance, if=20 found; otherwise, . If the selected field is no= n-public, the type represented by the current instance is from a loaded assembly and the caller does not have sufficient permission to reflect on non-public objects in loaded assembl= ies, returns . is . The search for is case-sensitive= . This version of is equivalent to ( , | | ). Requires permission to retrieve information on non-public members of t= ypes in loaded assemblies. See . 1 Reflection Method System.Reflection.FieldInfo[] Returns an array of objects that reflect the public fields defined in the type represented by the current instance. An array of = objects that reflect the public fields defined in the type represented by the current instance. If no public fi= elds are defined in the type represented by the current instance, returns an = empty array. This version of is= equivalent to ( | | ). 1 Reflection Method System.Type Searches for the interface with the specified name. A containing = the name of the interface to get. A object representing the interface with the specified name, implemented or inher= ited by the current , if found; otherwise, . is . The search for is case-sensitiv= e. 1 Reflection Method System.Reflection.EventInfo Returns a ob= ject reflecting the public event that has the specified name and is defined in the type represented by the current instance. A containing = the name of the public event to be returned. A object=20 reflecting the public event that is named and is defined in the type represented by the cu= rrent instance, if=20 found; otherwise, . is . This version of is equivalent to ( , | | ). The search for is case-sensitive= . 1 Reflection Method System.Reflection.PropertyInfo Returns a = object that reflects the public property defined in the type represented by the current instance that matches the= specified search criteria. A containing = the name of the public property to be returned. A object= that represents the type of the public property to be returned. An array of objects. The ele= ments in the array are of the same number, in the same order, and represent= the same types as the parameters for the indexer to be returned. Specify <= see cref=3D"F:System.Type.EmptyTypes" /> for a property that is not indexed= . A object reflecting the public property defined in the type represented by the current instance that matches the specified criteria. If no matching= property is found, returns . Mor= e than one property matching the specified criteria was found. or is , or at least one of the elements in is . has more than one dimension. This version of is equivalent t= o (, | | , , , ,=20 ). The search for is case-sensitive= . Different programming languages use different syntax to=20 specify indexed properties. Internally, this property is referred to by = the name "Item" in the metadata. Therefore, any attempt to retrieve an indexed property using reflection is required to specify this internal name in order for the to be returned correctly. 1 Reflection Method System.Reflection.PropertyInfo Returns a = object that reflects the public property defined in the type represented by the current instance that matches the specifi= ed search criteria. A containing = the name of the public property to be returned. An array of objects. The ele= ments in the array are of the same number, in the same order, and represent= the same types as the parameters for the indexer to be returned. Specify <= see cref=3D"F:System.Type.EmptyTypes" /> to obtain a property that is not i= ndexed. A object = reflecting the public property defined on the type represented by the current instance that matches the specifi= ed criteria. If no matching property is found, returns . Mor= e than one property matching the specified criteria was found. or is , or at least one of the elements in is . has more than one dimension. This version of is equivalent t= o (, | | , , , ,=20 ). The search for is case-sensitive= . Different programming languages use different syntax to=20 specify indexed properties. Internally, this property is referred to by = the name "Item" in the metadata. Therefore, any attempt to retrieve an indexed pr= operty using reflection is required to specify this internal name in order for the to be returned correctly. 1 Reflection Method System.Reflection.PropertyInfo Returns a = =20 object that reflects the public property defined in the type represented by= the current instance that matches the specified search criteria. A containing = the name of the property to be returned. A object= that represents the type of the property to be returned. A object = reflecting the public property defined=20 on the type represented by the current instance that matches the specifi= ed criteria. If no matching property is found, returns . Mor= e than one property matching the specified criteria was found. is . This version of is equivalent t= o (, | | , , , ,=20 ). The search for is case-sensitive= . 1 Reflection Method System.Reflection.PropertyInfo Returns a = object that reflects the public property defined in the type represented by the current instance that ha= s the specified name. A containing = the name of the property to be returned. A object = reflecting the public property defined=20 on the type represented by the current instance that has the specified n= ame. If no matching property is found, returns . Mor= e than one property matching the specified criteria was found. is . This version of is equivalent t= o (, | | , , , ,=20 ). The search for is case-sensitive= . 1 Reflection Method System.Reflection.PropertyInfo[] Returns an array of objects that reflect the public properties defined in the type represented by the current instance. An array of =20 objects that reflect the public properties defined in the type represented by the current instance. If no public properties are found, ret= urns an empty array. This version of is equivalent to ( | | ). A property is considered by reflection to be if it has at least one accessor that i= s . Otherwise, the property is considered to be no= t=20 . 1 Reflection Method System.Type[] Returns all the public types nested within the current . An array of objects represen= ting all public types nested within the type represented by the current instance, if any. Otherwise, returns an empty= array. This version of is equivalent to (). 1 Reflection Method System.Type Returns the public nested type defined in the type represen= ted by the current instance A containing = the name of the public nested type to return. Specify the unqualified name = of the nested type. For example, for a= type B nested within A, if typeA represents the type object for A, the cor= rect invocation is typeA.GetNestedType("B"). A object representing the public nested type with the specified name, if found; otherwise, . is . The search for is case-sensitive= . This version of is equivalent to (, = ). 1 Reflection Method System.Reflection.MemberInfo[] Returns an array of objects that reflect the public members that have the specified name and are defined in the type represented by the c= urrent instance. A containing = the name of the members to be returned. An array of = objects that reflect the public members that are named and are defined in the type represe= nted by the current instance. If no public members with the specified name are defined in the type represented by t= he current instance, returns an empty array. is . This version of is equivalent to ( , | | ). The search for is case-sensitive= . 1 Reflection Method System.Reflection.MemberInfo[] Returns an array of objects that reflect the public members defined in the type represented by the current instance. An array of = objects that reflect the public members defined in the type represented by the current instance. If no public me= mbers are defined in the type represented by the current instance, returns an = empty array. This version of i= s equivalent to ( | | ). 1 Reflection Method System.Type[] Returns the types of the objects in the specified array. An array of objects whose types are to be retu= rned. An array of objects represe= nting the types of the corresponding elements in . If a requested type is not publi= c and the caller does not have permission to reflect non-public objects outside the current assembly, the correspondi= ng element in the array returned by this method will be . is . T= he type initializers were invoked and at least one threw an exception. Requires permission to retrieve information on non-public members of t= ypes in loaded assemblies. See . 1 Reflection Determines if the underlying system type of the current is the same as the underlying system type of the specified .<= /para> The whose underlyi= ng system type is to be compared with the underlying system type of the cur= rent . if the underlying system type of is the same as the underlying system type of the current ; otherwise, . 1 Reflection Constructor Constructs a new instance of the class. 1 Reflection Property System.Type Gets the type that declares the type represented by the cur= rent instance. The object for the class that declares the type represented by the current instance. If the type is a nested type, this property returns the enclos= ing type; otherwise, returns the current instance. This property overrides . The following example demonstrates the property. using System; using System.Reflection; public abstract class DeclaringTypeTest{ public abstract class MyClassA { public abstract int m();=20 } public abstract class MyClassB : MyClassA { } public static void Main() {=20 Console.WriteLine("Declaring type of m is {0}", typeof(MyClassB).GetMethod("m").DeclaringType); } } The output is Declaring type of m is DeclaringTypeTest+MyClassA 1 Reflection Property System.Type Gets the type that was used to obtain the current instance. The object through which the current instance was obtained. This property is read-only. This property overrides . The following example demonstrates the property. Although the method is declared in , its reflected type is obtaine= d from . using System; using System.Reflection; public abstract class ReflectedTypeTest { public abstract class MyClassA { public abstract int m(); } public abstract class MyClassB : MyClassA { } public static void Main(string[] args) { Console.WriteLine("Reflected type of m is {0}", typeof(MyClassB).GetMethod("m").ReflectedType); } } The output is Reflected type of m is ReflectedTypeTest+MyClassB 1 Reflection Property System.Reflection.Binder Gets the default binder used by the system. The default use= d by the system. This property is read-only. Reflection models the accessibility rules of the common type system. For example, if the caller is in the same assembly, the = caller does not need special permissions for internal members. Otherwise, the cal= ler needs . This is consistent with lookup of members that are protected, private, and so on. The general principle is t= hat =20 typically performs only widening coercions, which never lose data. An example of a widening coercion is coercing a value that is a 32-bit signed integer to a value that is a 64-bit signed in= teger. This is distinguished from a narrowing coercion, which may lose data. An example of a narrowing coercion is coercing a 64-bit signed integer to a 32= -bit signed integer. The following table lists the coercions performed by the de= fault binder's implementation of . Source Type Target Type Any type Its base type. Any type The interface it implements. Char Unt16, UInt32, Int32, UInt64, Int64, Single, Dou= ble Byte Char, Unt16, Int16, UInt32, Int32, UInt64, Int64= , Single, Double SByte Int16, Int32, Int64, Single, Double UInt16 UInt32, Int32, UInt64, Int64, Single, Double Int16 Int32, Int64, Single, Double UInt32 UInt64, Int64, Single, Double Int32 Int64, Single, Double UInt64 Single, Double Int64 Single, Double Single Double Non-reference By-reference. 1 Reflection Property System.Reflection.Module Gets the module in which the current is defined. A that reflects= the module in which the current is defined.= This property is read-only. 1 Reflection Property System.Reflection.Assembly Gets the that= the type is declared in. A instance th= at describes assembly containing the current type. This property is read= -only. 1 RuntimeInfrastructure Property System.RuntimeTypeHandle Gets the handle for the current . The for the cur= rent . This property is read-only. The encapsulate= s a pointer to an internal data structure that represents the type. This handle is unique during the process lifetime. The handle is valid only i= n the application domain in which it was obtained. 1 RuntimeInfrastructure Property System.String Gets the fully qualified name of the type represented by=20 the current instance. A containing the fully qua= lified name of the . For example, the fully qualified name of the C# string type is "System.String". This property is read-only. The following example demonstrates using the property. using System; class TestType { public static void Main() { Type t =3D typeof(Array); Console.WriteLine("Full name of Array type is {0}",t.FullName); } } The output is Full name of Array type is System.Array 0 Property System.String Gets the namespace of the . A containing the namespace= of the current . A namespace is a=20 logical design-time naming convenience, used mainly to define scope i= n an application and organize classes and other types in a hierarchical st= ructure. From the viewpoint of the system, there are no namespaces. This property is=20 read-only. 1 Reflection Property System.String Gets the fully qualified name of the type represented by=20 the current instance including the name of the assembly from which the was loaded. A containing the=20 fully qualified name of the type represented by the current instance, including the name of the assembly from which the was loaded. =20 This property is read-only. Compilers emit the simple name of a nested class, and ref= lection constructs a=20 mangled name when queried, in accordance with the following conven= tions. Delimiter Meaning Backslash (\) Escape character. Comma (,) Precedes the Assembly name. Plus sign (+) Precedes a nested class. Period (.) Denotes namespace identifiers. For example, the fully qualified name for a class might= look like this: TopNamespace.SubNameSpace.ContainingClass+NestedClass,M= yAssembly If the namespace were TopNamespace.Sub+Namespace, then = the string would have to precede the plus sign (+) with an escape character (\) = to prevent it from being interpreted as a nesting separator. Reflection emits this string as follows: TopNamespace.Sub\+Namespace.ContainingClass+NestedClass= ,MyAssembly A "++" becomes "\+\+", and a "\" becomes "\\". Type names are permitted to include trailing characters t= hat denote additional information about the type, such as whether the type is= a reference type, a pointer type or an array type. To retrieve the type name w= ithout these trailing characters, use t.GetElementType().ToString(), whe= re is the type. Spaces are significant in all type name components except= the assembly name. In the assembly name, spaces before the ',' separator are signi= ficant, but spaces after the ',' separator are ignored. The name returned by this method can be persisted and lat= er used to load the . To search for and load a , use = either with the type name only or with the assembly qualified type name. with the type name only will = look for the in the caller's assembly and then in the System assembly. with = the assembly qualified type name will look for the in any assembly. 1 Reflection Property System.Type Gets the base of the current= . A object=20 representing the type from which the current directly inherits, or =20 if the current represents the class. This property is rea= d-only. The following example demonstrates using the property. using System; class TestType { public static void Main() { Type t =3D typeof(int); Console.WriteLine("{0} inherits from {1}", t,t.BaseType); } } The output is System.Int32 inherits from System.ValueType 0 Property System.Reflection.ConstructorInfo Gets the initializer for thetype represented by the current instance. A cont= aining the name of the static constructor for the type represented by the current instance This property is read-only. Type initializers are avai= lable through , , , and . 1 Reflection Property System.Reflection.TypeAttributes Gets the attributes associated with the type represented=20 by the current instance. A objec= t representing the attribute set of the . This property is read-only. 1 Reflection Property System.Boolean Gets a value indicating = whether the top-level is not declared public= . if the top-level is not declared public; otherwi= se, . This property is read-only. 1 Reflection Property System.Boolean Gets a value indicating = whether the top-level is declared public. if the top-level is declared public; otherwise, . This property is read-only. 1 Reflection Property System.Boolean Gets a value indicating=20 whether the current is a public nested cl= ass. if the class is nested and declared public; otherwise, . This property is read-only. 1 Reflection Property System.Boolean Gets a value indicating = whether the current is nested and declared p= rivate. if the = is nested and declared private; otherwise, . This property is read-only. 1 Reflection Property System.Boolean Gets a value indicating = whether the current is nested and visible on= ly within its own family. if the = is nested and visible only within its own family; otherwise, . This property is read-only. A object's family is defined= as all objects of the exact same and of its subclasses. 1 Reflection Property System.Boolean Gets a value indicating w= hether the current is nested and visible onl= y within its own assembly. if the = is nested and visible only within its own assembly; otherwise, . This property is read-only. 1 Reflection Property System.Boolean Gets a value indicating = whether the current is nested and visible on= ly to classes that belong to both its own family and its own assembly. if the = is nested and visible only to classes that belong to both its own family and its o= wn assembly; otherwise, . This property is read-only. A object's family is defined= as all objects of the exact same and of its subclasses. 1 Reflection Property System.Boolean Gets a value indicating = whether the current is nested and visible on= ly to classes that belong to either its own family or to its own assembly. if the = is nested and visible only to classes that belong to its own family or to its own = assembly; otherwise, . This property is read-only. A object's family is defined= as all objects of the exact same and of its subclasses. 1 Reflection Property System.Boolean Gets a value indicating whether the type layout attribute is specified for the . if the type layout attribute is specified for the current ; otherw= ise, . This property is read-only. The attribute specifies that the system selects the layout the objects of the type. Types marked with this at= tribute indicate that the system will choose the appropriate way to lay out the type; any layou= t information that may have been specified is ignored. 1 Reflection Property System.Boolean Gets a value indicating whether the type layout attribute is specified for the . if the type layout attribute is spe= cified for the current=20 ; otherwise,=20 . This property is read-only. The attribute is used to indicate that the system is to preserve field order as emitted, but otherwise the s= pecific offsets are calculated based on the type of the field; these may be shifted by explicit offset, padding, or al= ignment information. 1 Reflection Property System.Boolean Gets a value indicating whether the type layout attribute is specified for the . if the type layout attribute is specified for= the current ; otherwise, . This property is read-only. Types marked with the attribute cause the system to ignore field sequence and to use the explicit layout ru= les provided, in the form of field offsets, overall class size and alignment. 1 Reflection Property System.Boolean Gets a value that indica= tes whether the current represents a class.<= /para> if the current represents a class; otherwise . This property is read-only. Note that this property returns f= or instances=20 representing and . 0 Property System.Boolean Gets a value that indicat= es whether the current represents an interf= ace. if the current represents an interface; otherwise . This property is read-only. 0 Property System.Boolean Gets a value that indicat= es whether the current represents a value ty= pe. if the current represents a value type (structure); otherwise . This property is read-only. This property returns true for enumerations, but not for the type itself, which is a class. For an= example that demonstrates this behavior, see . 0 Property System.Boolean Gets a value indicating=20 whether the type represented by the current instance is abstract and is = required to be overridden. if the = is abstract; otherwise, . This property is read-only. 1 Reflection Property System.Boolean Gets a value indicating = whether the current is declared sealed. if the = is declared sealed; otherwise, . 1 Reflection value that indica= tes whether the current represents an enumer= ation. if the current represents an enumeration; otherwise . This property is read-only. This property returns for an enum= eration, but not for the type itself, which is a class. The following example demonstrates using the property. using System; public enum Color { Red, Blue, Green } class TestType { public static void Main() { Type colorType =3D typeof(Color); Type enumType =3D typeof(Enum); Console.WriteLine("Color is enum ? {0}", colorType.IsEnum); Console.WriteLine("Color is valueType? {0}", colorType.IsValueType); Console.WriteLine("Enum is enum Type? {0}", enumType.IsEnum); Console.WriteLine("Enum is value? {0}", enumType.IsValueType); } } The output is Color is enum ? True Color is valueType? True Enum is enum Type? False Enum is value? False 0 Property System.Boolean Gets a value indicating = whether the current has a name that requires= special handling. if the = has a name that requires special handling; otherwise, . This property is read-only. Names that begin with or c= ontain an underscore character (_) are examples of type names that might require special treatment by some tools. 1 Reflection Property System.Boolean Gets a value indicating = whether the was imported from another class.= if the = was imported from another class; otherwise, . This property is read-only. 1 Reflection Property System.Boolean Gets a value that indicat= es whether the current represents an array.<= /para> if the current represents an array; otherwise . This property is read-only. This property returns for an arra= y of objects, but not for the type itself, which is a class. The following example demonstrates using the property. using System; class TestType { public static void Main() { int [] array =3D {1,2,3,4}; Type at =3D typeof(Array); Type t =3D array.GetType(); Console.WriteLine("Type is {0}. IsArray? {1}", at, at.IsArray); Console.WriteLine("Type is {0}. IsArray? {1}", t, t.IsArray); } } The output is Type is System.Array. IsArray? False Type is System.Int32[]. IsArray? True 0 Property System.Boolean Gets a value indicating w= hether the is passed by reference. if the = is passed by reference; otherwise, . This property is read-only. 1 Reflection Property System.Boolean Gets a value that indicat= es whether the current represents a pointer.= This property is read-only. if the current represents a pointer; otherwise . This property is read-only. 0 Property System.Boolean Gets a value indicating w= hether the current is one of the primitive t= ypes. if the = is one of the primitive types; otherwise, . This property is read-only. The primitive types are , = , , , , , , , , , <= see cref=3D"T:System.Double" />, and . 1 Reflection Property System.Boolean Gets a value indicating w= hether the type represented by the=20 current instance encompasses or refers to another type; that is, whether the current is an array, a pointer, or is passed by reference. if the = is an array, a pointer, or is passed by reference; otherwise, . This property is read-only. For example, (" []").HasElementType returns , but (" ")= .HasElementType returns . a= lso returns for "Int32*" and "Int32&". 1 Reflection Property System.Boolean Gets a value indicating w= hether the current type is marshaled by reference. if the = is marshaled by reference; otherwise, . This property is read-only. 1 Reflection Property System.Type Returns the system-supplied type that represents the current type. The underlying system type for the . This property is read-only. As described=20 above. 1 Reflection 0 --=-93fHrr0xP5IDF4e1jqbG-- From alex00james@adelphia.net Thu Oct 10 22:01:33 2002 From: alex00james@adelphia.net (Alex James) Date: Thu, 10 Oct 2002 17:01:33 -0400 Subject: [Mono-list] Build MCS Message-ID: <000501c270a0$38237000$b201a8c0@winbooklew> When I try to build mono in cygwin, I get this error: make[2]: Entering directory `/home/alex/mcs/class/corlib' make[2]: *** No rule to make target `touch', needed by `library-deps.stamp'. St op. make[2]: Leaving directory `/home/alex/mcs/class/corlib' make[1]: *** [all] Error 1 make[1]: Leaving directory `/home/alex/mcs/class' make: *** [all] Error 1 does anybody know why? Thanks, Alex From danmorg@sc.rr.com Fri Oct 11 08:49:46 2002 From: danmorg@sc.rr.com (Daniel Morgan) Date: Fri, 11 Oct 2002 03:49:46 -0400 Subject: [Mono-list] ODBC.NET Provider on Windows Message-ID: Rodrigo and Brian I have tried to get the Odbc.net provider to use Microsoft Window's native ODBC library which is odbc32.dll by changing the DllImport from "libodbc" to "odbc32". The library apparently loads, but I don't know what the errors are for. Any ideas? This is the results I got: DanielMorgan@DANPC ~/mono/mcs/class/System.Data/Test $ mono OdbcTest.exe ERROR: SQLAllocHandle: <528285696> ERROR: SQLSetEnvAttr: <528285696> ODBCInit Complete. ERROR: SQLAllocHandle(hdbc): <528285696> ERROR: SQLConnect: <65535> ERROR: SQLAlloc(Prepare): <528351231> ERROR: SQLPrepare: <528351230> ERROR: SQLExecute: <528351230> ERROR: SQLCancel: <528351230> Unhandled Exception: System.NotImplementedException: The requested feature is no t yet implemented in <0x0002b> 00 System.Data.Odbc.OdbcCommand:Dispose (bool) in <0x00015> 00 System.ComponentModel.Component:Dispose () in <0x00174> 00 Test.OdbcTest.OdbcTest:Main (string[]) I have a ODBC.net test named OdbcTest.cs that works on Windows XP using .NET 1.1 Beta, but not Mono: using System; using System.Data; using System.Data.Odbc; namespace Test.OdbcTest { class OdbcTest { [STAThread] static void Main(string[] args) { OdbcConnection dbcon = new OdbcConnection(); // connection string to a Microsoft SQL Server 2000 database dbcon.ConnectionString = "DRIVER={SQL Server};" + "SERVER=(local);" + "Trusted_connection=true;" + "DATABASE=pubs;"; dbcon.Open(); OdbcCommand dbcmd = new OdbcCommand(); dbcmd.Connection = dbcon; dbcmd.CommandType = CommandType.Text; dbcmd.CommandText = "SELECT lname FROM employee"; OdbcDataReader reader; reader = (OdbcDataReader) dbcmd.ExecuteReader(); while(reader.Read()) { Console.WriteLine("Last Name: " + reader[0].ToString()); } reader.Close(); dbcmd.Dispose(); dbcon.Close(); } } } From paulo.pinto@altitude.com Fri Oct 11 11:19:07 2002 From: paulo.pinto@altitude.com (Paulo Pinto) Date: Fri, 11 Oct 2002 11:19:07 +0100 Subject: [Mono-list] Re: Mono-list digest, Vol 1 #544 - 3 msgs References: <200210110131.g9B1Vho10129@trna.ximian.com> Message-ID: <002e01c2710f$aafb76d0$3a00050a@nagasaki> I am not a great expert of XSLT but I do have some experience with it. I keep my web site source files in XML/XSLT. :) If you want an hand with it I might try to help. -- Paulo Pinto ----- Original Message ----- > Message: 3 > From: Miguel de Icaza > To: mono-list@ximian.com, Adam Treat > Organization: > Date: 10 Oct 2002 22:15:08 -0400 > Subject: [Mono-list] Help needed with XSLT transformations (documentation browser) > > > --=-93fHrr0xP5IDF4e1jqbG > Content-Type: text/plain > Content-Transfer-Encoding: 7bit > > Hello guys, > > I was going to do this manually, but the more code I wrote, the more > I realized that this is the kind of thing that should really be done > with Xslt. But I do not know Xslt, nor "better practices" with Xslt, > and I fear that this will have a fair amount of duplication. > > I have attached the ECMA documentation for Type.xml, the idea of > what I want to achieve is to process the XML document and extract a > number of things from it: > > * The type page, something like: > > http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/ frlrfsystemtypeclasstopic.asp > > * The methods page, something like: > > http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/ frlrfSystemTypeMethodsTopic.asp > > * The fields page, something like: > > http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/ frlrfSystemTypeFieldsTopic.asp > > * The properties page, something like: > > http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/ frlrfSystemTypePropertiesTopic.asp > > Then the tricky ones, given a member (field, property, method, > constructor, operator, do not worry about matching the method signature > correctly, we will figure that out later), render the page with the > data. > > This is a sample for the property: > > http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/ frlrfsystemtypeclassassemblytopic.asp > > Can someone help? > > Miguel. > From dick@ximian.com Fri Oct 11 11:26:43 2002 From: dick@ximian.com (Dick Porter) Date: 11 Oct 2002 11:26:43 +0100 Subject: [Mono-list] Help needed with XSLT transformations (documentation browser) In-Reply-To: <1034302508.14577.313.camel@erandi.boston.ximian.com> References: <1034302508.14577.313.camel@erandi.boston.ximian.com> Message-ID: <1034332002.17088.80.camel@hagbard.apathetic.discordia.org.uk> On Fri, 2002-10-11 at 03:15, Miguel de Icaza wrote: > I have attached the ECMA documentation for Type.xml, the idea of > what I want to achieve is to process the XML document and extract a > number of things from it: > > * The type page, something like: > * The methods page, something like: > * The fields page, something like: > * The properties page, something like: Can we also have a single page with all the info? The biggest problem with the ms docs is having to go back and forth to read up on an entire class, not to mention the vast amount of wasted paper if I choose to print it. - Dick From Simon.Jefford@ABS-Ltd.com Fri Oct 11 11:36:07 2002 From: Simon.Jefford@ABS-Ltd.com (Simon Jefford) Date: Fri, 11 Oct 2002 11:36:07 +0100 Subject: [Mono-list] Help needed with XSLT transformations (documentat ion browser) Message-ID: <5DBEBC7AF669D3118320005004AF9870EE00B8@ROWLF> > Hello guys, > > I was going to do this manually, but the more code I > wrote, the more I realized that this is the kind of thing > that should really be done with Xslt. But I do not know > Xslt, nor "better practices" with Xslt, and I fear that this > will have a fair amount of duplication. Excuse me if this is not what you were after, but you could take a look at the Ndoc project http://ndoc.sourceforge.net/. Sure, it takes the documentation from inline XML, but it may be a good starting point. Simon Jefford From groith@tcrz.net Fri Oct 11 12:55:05 2002 From: groith@tcrz.net (Guenther Roith) Date: Fri, 11 Oct 2002 13:55:05 +0200 Subject: [Mono-list] Help needed with XSLT transformations (documentation browser) References: <1034302508.14577.313.camel@erandi.boston.ximian.com> Message-ID: <002d01c2711d$0a4d17d0$010aa8c0@roithw2k> Hello! In general, a problem with the xslt doc is, the xslt dosn't support multiple files. There are implementations, that have this feature, but perhaps we should agree on one. Johannes ----- Original Message ----- From: "Miguel de Icaza" To: ; "Adam Treat" Sent: Friday, October 11, 2002 4:15 AM Subject: [Mono-list] Help needed with XSLT transformations (documentation browser) > Hello guys, > > I was going to do this manually, but the more code I wrote, the more > I realized that this is the kind of thing that should really be done > with Xslt. But I do not know Xslt, nor "better practices" with Xslt, > and I fear that this will have a fair amount of duplication. > > I have attached the ECMA documentation for Type.xml, the idea of > what I want to achieve is to process the XML document and extract a > number of things from it: > > * The type page, something like: > > http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/ frlrfsystemtypeclasstopic.asp > > * The methods page, something like: > > http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/ frlrfSystemTypeMethodsTopic.asp > > * The fields page, something like: > > http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/ frlrfSystemTypeFieldsTopic.asp > > * The properties page, something like: > > http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/ frlrfSystemTypePropertiesTopic.asp > > Then the tricky ones, given a member (field, property, method, > constructor, operator, do not worry about matching the method signature > correctly, we will figure that out later), render the page with the > data. > > This is a sample for the property: > > http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/ frlrfsystemtypeclassassemblytopic.asp > > Can someone help? > > Miguel. > > > From brianlritchie@hotmail.com Fri Oct 11 14:17:17 2002 From: brianlritchie@hotmail.com (Brian Ritchie) Date: Fri, 11 Oct 2002 09:17:17 -0400 Subject: [Mono-list] ODBC.NET Provider on Windows References: Message-ID: Guys, I'm able to duplicate the problem. The very first call into odbc32 is failing. It is a pretty basic call...it only allocates the first handle. So, it appears to be some sort of interop problem with the dll. I'm still checking into it. Let me know if you have any thoughts. Brian ----- Original Message ----- From: "Daniel Morgan" To: "Mono-List" Sent: Friday, October 11, 2002 3:49 AM Subject: [Mono-list] ODBC.NET Provider on Windows > Rodrigo and Brian > > I have tried to get the Odbc.net provider to use Microsoft Window's native > ODBC library which is odbc32.dll by changing the DllImport from "libodbc" to > "odbc32". The library apparently loads, > but I don't know what the errors are for. > > Any ideas? > > This is the results I got: > > DanielMorgan@DANPC ~/mono/mcs/class/System.Data/Test > $ mono OdbcTest.exe > ERROR: SQLAllocHandle: <528285696> > ERROR: SQLSetEnvAttr: <528285696> > ODBCInit Complete. > ERROR: SQLAllocHandle(hdbc): <528285696> > ERROR: SQLConnect: <65535> > ERROR: SQLAlloc(Prepare): <528351231> > ERROR: SQLPrepare: <528351230> > ERROR: SQLExecute: <528351230> > ERROR: SQLCancel: <528351230> > > Unhandled Exception: System.NotImplementedException: The requested feature > is no > t yet implemented > in <0x0002b> 00 System.Data.Odbc.OdbcCommand:Dispose (bool) > in <0x00015> 00 System.ComponentModel.Component:Dispose () > in <0x00174> 00 Test.OdbcTest.OdbcTest:Main (string[]) > > I have a ODBC.net test named OdbcTest.cs that works on Windows XP > using .NET 1.1 Beta, but not Mono: > > using System; > using System.Data; > using System.Data.Odbc; > > namespace Test.OdbcTest > { > class OdbcTest > { > [STAThread] > static void Main(string[] args) > { > OdbcConnection dbcon = new OdbcConnection(); > // connection string to a Microsoft SQL Server 2000 database > dbcon.ConnectionString = > "DRIVER={SQL Server};" + > "SERVER=(local);" + > "Trusted_connection=true;" + > "DATABASE=pubs;"; > > dbcon.Open(); > > OdbcCommand dbcmd = new OdbcCommand(); > dbcmd.Connection = dbcon; > dbcmd.CommandType = CommandType.Text; > dbcmd.CommandText = "SELECT lname FROM employee"; > > OdbcDataReader reader; > reader = (OdbcDataReader) dbcmd.ExecuteReader(); > > while(reader.Read()) { > Console.WriteLine("Last Name: " + reader[0].ToString()); > } > reader.Close(); > dbcmd.Dispose(); > dbcon.Close(); > } > } > } > > > > _______________________________________________ > Mono-list maillist - Mono-list@ximian.com > http://lists.ximian.com/mailman/listinfo/mono-list > From albie@alfarrabio.di.uminho.pt Fri Oct 11 14:17:57 2002 From: albie@alfarrabio.di.uminho.pt (Alberto =?iso-8859-1?Q?Sim=F5es=2FEPL?=) Date: Fri, 11 Oct 2002 14:17:57 +0100 Subject: [Mono-list] Compiling Mono C# Message-ID: <20021011131757.GA4978@alfarrabio.di.uminho.pt> Hi. I think I need a c# compiler to build mono c# compiler. The bootstrap process was discussed before, but now what I really want is putting it working. Anybody can points me some c# binaries for Linux/x86 or some other c# compiler with bootstrap from C? Thanks -- Departamento de Informatica - Universidade do Minho "The C Programming Language -- A language which combines the flexibility of assembly language with the power of assembly language." From Simon.Jefford@ABS-Ltd.com Fri Oct 11 11:19:58 2002 From: Simon.Jefford@ABS-Ltd.com (Simon Jefford) Date: Fri, 11 Oct 2002 11:19:58 +0100 Subject: [Mono-list] Help needed with XSLT transformations (documentat ion browser) Message-ID: <5DBEBC7AF669D3118320005004AF9870EE00B6@ROWLF> > -----Original Message----- > From: Miguel de Icaza [mailto:miguel@ximian.com] > Sent: 11 October 2002 03:15 > To: mono-list@ximian.com; Adam Treat > Subject: [Mono-list] Help needed with XSLT transformations > (documentation browser) > > > Hello guys, > > I was going to do this manually, but the more code I > wrote, the more I realized that this is the kind of thing > that should really be done with Xslt. But I do not know > Xslt, nor "better practices" with Xslt, and I fear that this > will have a fair amount of duplication. Pardon me if this is not what you were after, but you could take a look at the Ndoc project http://ndoc.sourceforge.net/. Sure, it takes the documentation from inline XML but it may be a good starting point. Simon Jefford From groith@tcrz.net Fri Oct 11 14:42:59 2002 From: groith@tcrz.net (Guenther Roith) Date: Fri, 11 Oct 2002 15:42:59 +0200 Subject: [Mono-list] Compiling Mono C# References: <20021011131757.GA4978@alfarrabio.di.uminho.pt> Message-ID: <001201c2712c$1d25a020$010aa8c0@roithw2k> Hi! There are binaries on the download page. Also your mono source package has a directory "runtime" containing the compiler. ----- Original Message ----- From: "Alberto Simões/EPL" To: "GO-MONO" Sent: Friday, October 11, 2002 3:17 PM Subject: [Mono-list] Compiling Mono C# > Hi. > > I think I need a c# compiler to build mono c# compiler. The bootstrap > process was discussed before, but now what I really want is putting it > working. > > Anybody can points me some c# binaries for Linux/x86 or some other > c# compiler with bootstrap from C? > > Thanks > -- > Departamento de Informatica - Universidade do Minho > > "The C Programming Language -- A language which combines the > flexibility of assembly language with the power of assembly language." > > _______________________________________________ > Mono-list maillist - Mono-list@ximian.com > http://lists.ximian.com/mailman/listinfo/mono-list > From danmorg@sc.rr.com Fri Oct 11 14:43:54 2002 From: danmorg@sc.rr.com (Daniel Morgan) Date: Fri, 11 Oct 2002 09:43:54 -0400 Subject: [Mono-list] GetSchemaTable() in OdbcDataReader Message-ID: Brian Have you started or plan to start implementing the method GetSchemaTable() in System.Data.Odbc class OdbcDataReader? If not, I would like to do an initial implementation of GetSchemaTable() in Odbc. I have done the GetSchemaTable() implementation for the PostgreSQL provider in System.Data.SqlClient with the help of Tim Coleman. I am working on the GetSchemaTable() implementation for Mono.Data.MySql now. Rodrigo Moya said it was okay that I can do the implementation of GetShemaTable() for System.Data.OleDb too. Is it okay if I do an initial implementation of GetSchemaTable() in System.Data.Odbc as well? Daniel From brianlritchie@hotmail.com Fri Oct 11 14:49:17 2002 From: brianlritchie@hotmail.com (Brian Ritchie) Date: Fri, 11 Oct 2002 09:49:17 -0400 Subject: [Mono-list] Re: GetSchemaTable() in OdbcDataReader References: Message-ID: Daniel, Sounds great. There is already some code in there to fill an array of DataColumn objects with the fields. That should be a good start for the GetSchemaTable() method. Brian ----- Original Message ----- From: "Daniel Morgan" To: "Brian Ritchie" Cc: "Mono-List" Sent: Friday, October 11, 2002 9:43 AM Subject: GetSchemaTable() in OdbcDataReader > Brian > > Have you started or plan to start implementing the method GetSchemaTable() > in System.Data.Odbc class OdbcDataReader? > > If not, I would like to do an initial implementation of GetSchemaTable() in > Odbc. I have done the GetSchemaTable() implementation for the PostgreSQL > provider in System.Data.SqlClient with the help of Tim Coleman. I am > working on the GetSchemaTable() implementation for Mono.Data.MySql now. > Rodrigo Moya said it was okay that I can do the implementation of > GetShemaTable() for System.Data.OleDb too. > > Is it okay if I do an initial implementation of GetSchemaTable() in > System.Data.Odbc as well? > > Daniel > From miguel@ximian.com Fri Oct 11 15:06:59 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 11 Oct 2002 10:06:59 -0400 Subject: [Mono-list] Help needed with XSLT transformations (documentation browser) In-Reply-To: <002d01c2711d$0a4d17d0$010aa8c0@roithw2k> References: <1034302508.14577.313.camel@erandi.boston.ximian.com> <002d01c2711d$0a4d17d0$010aa8c0@roithw2k> Message-ID: <1034345219.14577.331.camel@erandi.boston.ximian.com> Hello! > In general, a problem with the xslt doc is, the xslt dosn't support multiple > files. Well, I was thinking along the lines of having various stylesheets, so to get the class summary, I would do: xsltproc format-class.xslt File.xml To get the `all-in-a-page', I would do: xsltproc format-entire-class.xslt File.xml To get a particular method, I could do (something like, excuse my broken Xpath): xsltproc --param type "/Docs/Members/Method[4]" format-method.xsl File.xml > There are implementations, that have this feature, but perhaps we should > agree on one. > > > Johannes > ----- Original Message ----- > From: "Miguel de Icaza" > To: ; "Adam Treat" > Sent: Friday, October 11, 2002 4:15 AM > Subject: [Mono-list] Help needed with XSLT transformations (documentation > browser) > > > > Hello guys, > > > > I was going to do this manually, but the more code I wrote, the more > > I realized that this is the kind of thing that should really be done > > with Xslt. But I do not know Xslt, nor "better practices" with Xslt, > > and I fear that this will have a fair amount of duplication. > > > > I have attached the ECMA documentation for Type.xml, the idea of > > what I want to achieve is to process the XML document and extract a > > number of things from it: > > > > * The type page, something like: > > > > > http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/ > frlrfsystemtypeclasstopic.asp > > > > * The methods page, something like: > > > > > http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/ > frlrfSystemTypeMethodsTopic.asp > > > > * The fields page, something like: > > > > > http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/ > frlrfSystemTypeFieldsTopic.asp > > > > * The properties page, something like: > > > > > http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/ > frlrfSystemTypePropertiesTopic.asp > > > > Then the tricky ones, given a member (field, property, method, > > constructor, operator, do not worry about matching the method signature > > correctly, we will figure that out later), render the page with the > > data. > > > > This is a sample for the property: > > > > > http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/ > frlrfsystemtypeclassassemblytopic.asp > > > > Can someone help? > > > > Miguel. > > > > > > > From miguel@ximian.com Fri Oct 11 15:18:00 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 11 Oct 2002 10:18:00 -0400 Subject: [Mono-list] Compiling Mono C# In-Reply-To: <20021011131757.GA4978@alfarrabio.di.uminho.pt> References: <20021011131757.GA4978@alfarrabio.di.uminho.pt> Message-ID: <1034345880.14577.333.camel@erandi.boston.ximian.com> Hello, > I think I need a c# compiler to build mono c# compiler. The bootstrap > process was discussed before, but now what I really want is putting it > working. > > Anybody can points me some c# binaries for Linux/x86 or some other > c# compiler with bootstrap from C? Just get the mono-0.16.tar.gz tarball, that contains everything you need to bootstrap. Miguel From brianlritchie@hotmail.com Fri Oct 11 15:27:42 2002 From: brianlritchie@hotmail.com (Brian Ritchie) Date: Fri, 11 Oct 2002 10:27:42 -0400 Subject: [Mono-list] ODBC.NET Provider on Windows References: Message-ID: Here's the fix... In libodbc.cs, the OdbcReturn enum needs to be a short. internal enum OdbcReturn : short { Error = -1, InvalidHandle = -2, StillExecuting = 2, NeedData = 99, Success = 0, SuccessWithInfo = 1 } Let me know if this works for you, Brian ----- Original Message ----- From: "Brian Ritchie" To: "Daniel Morgan" ; "Mono-List" Sent: Friday, October 11, 2002 9:17 AM Subject: Re: [Mono-list] ODBC.NET Provider on Windows > Guys, > > I'm able to duplicate the problem. The very first call into odbc32 is > failing. It is a pretty basic call...it only allocates the first handle. > So, it appears to be some sort of interop problem with the dll. I'm still > checking into it. Let me know if you have any thoughts. > > Brian > > ----- Original Message ----- > From: "Daniel Morgan" > To: "Mono-List" > Sent: Friday, October 11, 2002 3:49 AM > Subject: [Mono-list] ODBC.NET Provider on Windows > > > > Rodrigo and Brian > > > > I have tried to get the Odbc.net provider to use Microsoft Window's native > > ODBC library which is odbc32.dll by changing the DllImport from "libodbc" > to > > "odbc32". The library apparently loads, > > but I don't know what the errors are for. > > > > Any ideas? > > > > This is the results I got: > > > > DanielMorgan@DANPC ~/mono/mcs/class/System.Data/Test > > $ mono OdbcTest.exe > > ERROR: SQLAllocHandle: <528285696> > > ERROR: SQLSetEnvAttr: <528285696> > > ODBCInit Complete. > > ERROR: SQLAllocHandle(hdbc): <528285696> > > ERROR: SQLConnect: <65535> > > ERROR: SQLAlloc(Prepare): <528351231> > > ERROR: SQLPrepare: <528351230> > > ERROR: SQLExecute: <528351230> > > ERROR: SQLCancel: <528351230> > > > > Unhandled Exception: System.NotImplementedException: The requested feature > > is no > > t yet implemented > > in <0x0002b> 00 System.Data.Odbc.OdbcCommand:Dispose (bool) > > in <0x00015> 00 System.ComponentModel.Component:Dispose () > > in <0x00174> 00 Test.OdbcTest.OdbcTest:Main (string[]) > > > > I have a ODBC.net test named OdbcTest.cs that works on Windows XP > > using .NET 1.1 Beta, but not Mono: > > > > using System; > > using System.Data; > > using System.Data.Odbc; > > > > namespace Test.OdbcTest > > { > > class OdbcTest > > { > > [STAThread] > > static void Main(string[] args) > > { > > OdbcConnection dbcon = new OdbcConnection(); > > // connection string to a Microsoft SQL Server 2000 database > > dbcon.ConnectionString = > > "DRIVER={SQL Server};" + > > "SERVER=(local);" + > > "Trusted_connection=true;" + > > "DATABASE=pubs;"; > > > > dbcon.Open(); > > > > OdbcCommand dbcmd = new OdbcCommand(); > > dbcmd.Connection = dbcon; > > dbcmd.CommandType = CommandType.Text; > > dbcmd.CommandText = "SELECT lname FROM employee"; > > > > OdbcDataReader reader; > > reader = (OdbcDataReader) dbcmd.ExecuteReader(); > > > > while(reader.Read()) { > > Console.WriteLine("Last Name: " + reader[0].ToString()); > > } > > reader.Close(); > > dbcmd.Dispose(); > > dbcon.Close(); > > } > > } > > } > > > > > > > > _______________________________________________ > > Mono-list maillist - Mono-list@ximian.com > > http://lists.ximian.com/mailman/listinfo/mono-list > > > > _______________________________________________ > Mono-list maillist - Mono-list@ximian.com > http://lists.ximian.com/mailman/listinfo/mono-list > From danmorg@sc.rr.com Fri Oct 11 16:17:43 2002 From: danmorg@sc.rr.com (Daniel Morgan) Date: Fri, 11 Oct 2002 11:17:43 -0400 Subject: [Mono-list] ODBC.NET Provider on Windows In-Reply-To: Message-ID: Yes, it got me further, I still have a problem. However, I think you said System.Data.Odbc does not have support for DSN-less connections yet. This is what I get now: DanielMorgan@DANPC ~/mono/mcs/class/System.Data/Test $ mono OdbcTest.exe ODBCInit Complete. ERROR: SQLConnect: ERROR: SQLAlloc(Prepare): ERROR: SQLPrepare: ERROR: SQLExecute: ERROR: SQLCancel: Unhandled Exception: System.NotImplementedException: The requested feature is no t yet implemented in <0x0002b> 00 System.Data.Odbc.OdbcCommand:Dispose (bool) in <0x00015> 00 System.ComponentModel.Component:Dispose () in <0x00174> 00 Test.OdbcTest.OdbcTest:Main (string[]) -----Original Message----- From: Brian Ritchie [mailto:brianlritchie@hotmail.com] Sent: Friday, October 11, 2002 10:28 AM To: Daniel Morgan; Mono-List Subject: Re: [Mono-list] ODBC.NET Provider on Windows Here's the fix... In libodbc.cs, the OdbcReturn enum needs to be a short. internal enum OdbcReturn : short { Error = -1, InvalidHandle = -2, StillExecuting = 2, NeedData = 99, Success = 0, SuccessWithInfo = 1 } Let me know if this works for you, Brian ----- Original Message ----- From: "Brian Ritchie" To: "Daniel Morgan" ; "Mono-List" Sent: Friday, October 11, 2002 9:17 AM Subject: Re: [Mono-list] ODBC.NET Provider on Windows > Guys, > > I'm able to duplicate the problem. The very first call into odbc32 is > failing. It is a pretty basic call...it only allocates the first handle. > So, it appears to be some sort of interop problem with the dll. I'm still > checking into it. Let me know if you have any thoughts. > > Brian > > ----- Original Message ----- > From: "Daniel Morgan" > To: "Mono-List" > Sent: Friday, October 11, 2002 3:49 AM > Subject: [Mono-list] ODBC.NET Provider on Windows > > > > Rodrigo and Brian > > > > I have tried to get the Odbc.net provider to use Microsoft Window's native > > ODBC library which is odbc32.dll by changing the DllImport from "libodbc" > to > > "odbc32". The library apparently loads, > > but I don't know what the errors are for. > > > > Any ideas? > > > > This is the results I got: > > > > DanielMorgan@DANPC ~/mono/mcs/class/System.Data/Test > > $ mono OdbcTest.exe > > ERROR: SQLAllocHandle: <528285696> > > ERROR: SQLSetEnvAttr: <528285696> > > ODBCInit Complete. > > ERROR: SQLAllocHandle(hdbc): <528285696> > > ERROR: SQLConnect: <65535> > > ERROR: SQLAlloc(Prepare): <528351231> > > ERROR: SQLPrepare: <528351230> > > ERROR: SQLExecute: <528351230> > > ERROR: SQLCancel: <528351230> > > > > Unhandled Exception: System.NotImplementedException: The requested feature > > is no > > t yet implemented > > in <0x0002b> 00 System.Data.Odbc.OdbcCommand:Dispose (bool) > > in <0x00015> 00 System.ComponentModel.Component:Dispose () > > in <0x00174> 00 Test.OdbcTest.OdbcTest:Main (string[]) > > > > I have a ODBC.net test named OdbcTest.cs that works on Windows XP > > using .NET 1.1 Beta, but not Mono: > > > > using System; > > using System.Data; > > using System.Data.Odbc; > > > > namespace Test.OdbcTest > > { > > class OdbcTest > > { > > [STAThread] > > static void Main(string[] args) > > { > > OdbcConnection dbcon = new OdbcConnection(); > > // connection string to a Microsoft SQL Server 2000 database > > dbcon.ConnectionString = > > "DRIVER={SQL Server};" + > > "SERVER=(local);" + > > "Trusted_connection=true;" + > > "DATABASE=pubs;"; > > > > dbcon.Open(); > > > > OdbcCommand dbcmd = new OdbcCommand(); > > dbcmd.Connection = dbcon; > > dbcmd.CommandType = CommandType.Text; > > dbcmd.CommandText = "SELECT lname FROM employee"; > > > > OdbcDataReader reader; > > reader = (OdbcDataReader) dbcmd.ExecuteReader(); > > > > while(reader.Read()) { > > Console.WriteLine("Last Name: " + reader[0].ToString()); > > } > > reader.Close(); > > dbcmd.Dispose(); > > dbcon.Close(); > > } > > } > > } > > > > > > > > _______________________________________________ > > Mono-list maillist - Mono-list@ximian.com > > http://lists.ximian.com/mailman/listinfo/mono-list > > > > _______________________________________________ > Mono-list maillist - Mono-list@ximian.com > http://lists.ximian.com/mailman/listinfo/mono-list > From thaynes@openlinksw.com (Tim Haynes) Fri Oct 11 15:32:01 2002 From: thaynes@openlinksw.com (Tim Haynes) (Tim Haynes) Date: Fri, 11 Oct 2002 15:32:01 +0100 Subject: [Mono-list] Patch for bugzilla 31265, plus some pthreads Message-ID: <87zntlhwri.fsf@purple.uknet.private> --=-=-= Hi, Please find a fix completing bug#31265 (reported by Zdravko Tashev): when it expands the gc_handles array it does deregister/register the handles with the GC regardless of their type. Have added an array to record the handle type and act accordingly. Also, there was a mono_thread_create, but no mono_thread_attach for existing threads). Have copied the mono_thread_create and replaced a call t pthread_create() with pthread_self(), which works. There is a callback to be called on unhandled exception for example, which now can call a user-registerable callback or the original callback (calling pthread_exit). The code in the user callback mono_thread_attach_aborted_cb should do a longjmp to unwind the stack to a frame above any Mono frames. Cheers, ~Tim -- Product Development Consultant OpenLink Software Tel: +44 (0) 20 8681 7701 Web: Universal Data Access & Data Integration Technology Providers --=-=-= Content-Disposition: attachment; filename=b31265+pthread.diff Content-Description: fix for 31265 and pthreads Index: mono/io-layer/threads.c =================================================================== RCS file: /mono/mono/mono/io-layer/threads.c,v retrieving revision 1.35 diff -u -b -r1.35 threads.c --- mono/io-layer/threads.c 3 Oct 2002 14:01:29 -0000 1.35 +++ mono/io-layer/threads.c 10 Oct 2002 15:49:28 -0000 @@ -263,6 +263,94 @@ return(handle); } +gpointer AttachThread(WapiSecurityAttributes *security G_GNUC_UNUSED, guint32 stacksize G_GNUC_UNUSED, + WapiThreadStart start, gpointer param, guint32 create, + guint32 *tid) +{ + struct _WapiHandle_thread *thread_handle; + struct _WapiHandlePrivate_thread *thread_private_handle; + gpointer handle; + gboolean ok; + int ret; + + mono_once(&thread_hash_once, thread_hash_init); + mono_once (&thread_ops_once, thread_ops_init); + + if(start==NULL) { + return(NULL); + } + + handle=_wapi_handle_new (WAPI_HANDLE_THREAD); + if(handle==_WAPI_HANDLE_INVALID) { + g_warning (G_GNUC_PRETTY_FUNCTION + ": error creating thread handle"); + return(NULL); + } + + _wapi_handle_lock_handle (handle); + + ok=_wapi_lookup_handle (handle, WAPI_HANDLE_THREAD, + (gpointer *)&thread_handle, + (gpointer *)&thread_private_handle); + if(ok==FALSE) { + g_warning (G_GNUC_PRETTY_FUNCTION + ": error looking up thread handle %p", handle); + _wapi_handle_unlock_handle (handle); + return(NULL); + } + + /* Hold a reference while the thread is active, because we use + * the handle to store thread exit information + */ + _wapi_handle_ref (handle); + + thread_handle->state=THREAD_STATE_START; + + /* Lock around the thread create, so that the new thread cant + * race us to look up the thread handle in GetCurrentThread() + */ + mono_mutex_lock(&thread_hash_mutex); + + ret=_wapi_timed_thread_attach(&thread_private_handle->thread, + create, start, thread_exit, param, + handle); + if(ret!=0) { +#ifdef DEBUG + g_message(G_GNUC_PRETTY_FUNCTION ": Thread attach error: %s", + strerror(ret)); +#endif + mono_mutex_unlock(&thread_hash_mutex); + _wapi_handle_unlock_handle (handle); + _wapi_handle_unref (handle); + + /* And again, because of the reference we took above */ + _wapi_handle_unref (handle); + return(NULL); + } + + g_hash_table_insert(thread_hash, &thread_private_handle->thread->id, + handle); + mono_mutex_unlock(&thread_hash_mutex); + +#ifdef DEBUG + g_message(G_GNUC_PRETTY_FUNCTION + ": Started thread handle %p thread %p ID %ld", handle, + thread_private_handle->thread, + thread_private_handle->thread->id); +#endif + + if(tid!=NULL) { +#ifdef PTHREAD_POINTER_ID + *tid=GPOINTER_TO_UINT(thread_private_handle->thread->id); +#else + *tid=thread_private_handle->thread->id; +#endif + } + + _wapi_handle_unlock_handle (handle); + + return(handle); +} gpointer OpenThread (guint32 access G_GNUC_UNUSED, gboolean inherit G_GNUC_UNUSED, guint32 tid) { gpointer ret=NULL; Index: mono/io-layer/threads.h =================================================================== RCS file: /mono/mono/mono/io-layer/threads.h,v retrieving revision 1.8 diff -u -b -r1.8 threads.h --- mono/io-layer/threads.h 3 Sep 2002 16:41:29 -0000 1.8 +++ mono/io-layer/threads.h 10 Oct 2002 15:49:28 -0000 @@ -40,6 +40,9 @@ extern gpointer CreateThread(WapiSecurityAttributes *security, guint32 stacksize, WapiThreadStart start, gpointer param, guint32 create, guint32 *tid); +extern gpointer AttachThread(WapiSecurityAttributes *security G_GNUC_UNUSED, guint32 stacksize G_GNUC_UNUSED, + WapiThreadStart start, gpointer param, guint32 create, + guint32 *tid); extern gpointer OpenThread (guint32 access, gboolean inherit, guint32 tid); extern void ExitThread(guint32 exitcode) G_GNUC_NORETURN; extern gboolean GetExitCodeThread(gpointer handle, guint32 *exitcode); Index: mono/io-layer/timed-thread.c =================================================================== RCS file: /mono/mono/mono/io-layer/timed-thread.c,v retrieving revision 1.10 diff -u -b -r1.10 timed-thread.c --- mono/io-layer/timed-thread.c 1 Oct 2002 15:59:51 -0000 1.10 +++ mono/io-layer/timed-thread.c 10 Oct 2002 15:49:32 -0000 @@ -131,6 +131,33 @@ return(0); } +int _wapi_timed_thread_attach(TimedThread **threadp, + guint32 create_flags, + guint32 (*start_routine)(gpointer), + void (*exit_routine)(guint32, gpointer), + gpointer arg, gpointer exit_userdata) +{ + TimedThread *thread; + + thread=(TimedThread *)g_new0(TimedThread, 1); + + mono_mutex_init(&thread->join_mutex, NULL); + pthread_cond_init(&thread->exit_cond, NULL); + thread->create_flags = create_flags; + sem_init (&thread->suspend_sem, 0, 0); + thread->start_routine = start_routine; + thread->exit_routine = exit_routine; + thread->arg = arg; + thread->exit_userdata = exit_userdata; + thread->exitstatus = 0; + thread->exiting = FALSE; + + *threadp = thread; + + thread->id = pthread_self(); + return(0); +} + int _wapi_timed_thread_join(TimedThread *thread, struct timespec *timeout, guint32 *exitstatus) { Index: mono/io-layer/timed-thread.h =================================================================== RCS file: /mono/mono/mono/io-layer/timed-thread.h,v retrieving revision 1.5 diff -u -b -r1.5 timed-thread.h --- mono/io-layer/timed-thread.h 1 Oct 2002 15:59:51 -0000 1.5 +++ mono/io-layer/timed-thread.h 10 Oct 2002 15:49:32 -0000 @@ -41,6 +41,11 @@ guint32 (*start_routine)(gpointer), void (*exit_routine)(guint32, gpointer), gpointer arg, gpointer exit_userdata); +extern int _wapi_timed_thread_attach(TimedThread **threadp, + guint32 create_flags, + guint32 (*start_routine)(gpointer), + void (*exit_routine)(guint32, gpointer), + gpointer arg, gpointer exit_userdata); extern int _wapi_timed_thread_join(TimedThread *thread, struct timespec *timeout, guint32 *exitstatus); Index: mono/jit/jit.c =================================================================== RCS file: /mono/mono/mono/jit/jit.c,v retrieving revision 1.256 diff -u -b -r1.256 jit.c --- mono/jit/jit.c 9 Oct 2002 00:45:17 -0000 1.256 +++ mono/jit/jit.c 10 Oct 2002 15:49:44 -0000 @@ -4038,6 +4038,30 @@ jit_tls->end_of_stack = stack_start; } +void (*mono_thread_attach_aborted_cb ) (MonoObject *obj) = NULL; + +static void +mono_thread_abort_dummy (MonoObject *obj) +{ + if (mono_thread_attach_aborted_cb) + mono_thread_attach_aborted_cb (obj); + else + mono_thread_abort (obj); +} + +static void +mono_thread_attach_cb (gpointer stack_start) +{ + MonoJitTlsData *jit_tls; + + jit_tls = g_new0 (MonoJitTlsData, 1); + + TlsSetValue (mono_jit_tls_id, jit_tls); + + jit_tls->abort_func = mono_thread_abort_dummy; + jit_tls->end_of_stack = stack_start; +} + static CRITICAL_SECTION ms; static void @@ -4123,7 +4147,7 @@ mono_install_stack_walk (mono_jit_walk_stack); domain = mono_init (file); - mono_runtime_init (domain, mono_thread_start_cb); + mono_runtime_init_with_attach (domain, mono_thread_start_cb, mono_thread_attach_cb); return domain; } Index: mono/jit/jit.h =================================================================== RCS file: /mono/mono/mono/jit/jit.h,v retrieving revision 1.84 diff -u -b -r1.84 jit.h --- mono/jit/jit.h 2 Aug 2002 14:16:20 -0000 1.84 +++ mono/jit/jit.h 10 Oct 2002 15:49:44 -0000 @@ -48,6 +48,8 @@ extern int mono_exc_esp_offset; +extern void (*mono_thread_attach_aborted_cb ) (MonoObject *obj); + typedef struct _MBTree MBTree; typedef enum { Index: mono/metadata/appdomain.c =================================================================== RCS file: /mono/mono/mono/metadata/appdomain.c,v retrieving revision 1.46 diff -u -b -r1.46 appdomain.c --- mono/metadata/appdomain.c 1 Sep 2002 20:47:55 -0000 1.46 +++ mono/metadata/appdomain.c 10 Oct 2002 15:49:48 -0000 @@ -37,7 +37,7 @@ * operational. */ void -mono_runtime_init (MonoDomain *domain, MonoThreadStartCB start_cb) +mono_runtime_init_with_attach (MonoDomain *domain, MonoThreadStartCB start_cb, MonoThreadStartCB attach_cb) { MonoAppDomainSetup *setup; MonoAppDomain *ad; @@ -57,7 +57,7 @@ g_assert (mono_delegate_semaphore != INVALID_HANDLE_VALUE); InitializeCriticalSection (&mono_delegate_section); - mono_thread_init (domain, start_cb); + mono_thread_init_with_attach (domain, start_cb, attach_cb); mono_network_init (); @@ -65,6 +65,12 @@ } void +mono_runtime_init (MonoDomain *domain, MonoThreadStartCB start_cb) +{ + mono_runtime_init_with_attach (domain, start_cb, NULL); +} + +void mono_runtime_cleanup (MonoDomain *domain) { mono_runtime_shutdown = 1; Index: mono/metadata/assembly.c =================================================================== RCS file: /mono/mono/mono/metadata/assembly.c,v retrieving revision 1.46 diff -u -b -r1.46 assembly.c Index: mono/metadata/gc.c =================================================================== RCS file: /mono/mono/mono/metadata/gc.c,v retrieving revision 1.17 diff -u -b -r1.17 gc.c --- mono/metadata/gc.c 26 Sep 2002 19:40:15 -0000 1.17 +++ mono/metadata/gc.c 10 Oct 2002 15:49:59 -0000 @@ -210,6 +210,7 @@ /*static CRITICAL_SECTION handle_section;*/ static guint32 next_handle = 0; static gpointer *gc_handles = NULL; +static guint8 *gc_handle_types = NULL; static guint32 array_size = 0; /* @@ -219,6 +220,13 @@ * 2 -> weak */ +typedef enum { + HANDLE_WEAK, + HANDLE_WEAK_TRACK, + HANDLE_NORMAL, + HANDLE_PINNED +} HandleType; + /* * FIXME: make thread safe and reuse the array entries. */ @@ -226,25 +234,23 @@ ves_icall_System_GCHandle_GetTarget (guint32 handle) { MonoObject *obj; + gint32 type; if (gc_handles) { + type = handle & 0x3; + g_assert (type == gc_handle_types [handle >> 2]); obj = gc_handles [handle >> 2]; if (!obj) return NULL; - if ((handle & 0x3) > 1) + + if ((type == HANDLE_WEAK) || (type == HANDLE_WEAK_TRACK)) return REVEAL_POINTER (obj); + else return obj; } return NULL; } -typedef enum { - HANDLE_WEAK, - HANDLE_WEAK_TRACK, - HANDLE_NORMAL, - HANDLE_PINNED -} HandleType; - guint32 ves_icall_System_GCHandle_GetTargetHandle (MonoObject *obj, guint32 handle, gint32 type) { @@ -254,15 +260,18 @@ if (idx >= array_size) { #if HAVE_BOEHM_GC gpointer *new_array; + guint8 *new_type_array; if (!array_size) array_size = 16; new_array = GC_malloc (sizeof (gpointer) * (array_size * 2)); + new_type_array = GC_malloc (sizeof (guint8) * (array_size * 2)); if (gc_handles) { int i; memcpy (new_array, gc_handles, sizeof (gpointer) * array_size); + memcpy (new_type_array, gc_handle_types, sizeof (guint8) * array_size); /* need to re-register links for weak refs. test if GC_realloc needs the same */ for (i = 0; i < array_size; ++i) { - if (((gulong)new_array [i]) & 0x1) { /* all and only disguised pointers have it set */ + if ((gc_handle_types[i] == HANDLE_WEAK) || (gc_handle_types[i] == HANDLE_WEAK_TRACK)) { /* all and only disguised pointers have it set */ GC_unregister_disappearing_link (&(gc_handles [i])); if (new_array [i] != (gpointer)-1) GC_general_register_disappearing_link (&(new_array [i]), REVEAL_POINTER (new_array [i])); @@ -271,21 +280,22 @@ } array_size *= 2; gc_handles = new_array; + gc_handle_types = new_type_array; #else g_error ("No GCHandle support built-in"); #endif } - h = idx << 2; /* resuse the type from the old target */ if (type == -1) type = handle & 0x3; + h = (idx << 2) | type; switch (type) { case HANDLE_WEAK: case HANDLE_WEAK_TRACK: - h |= 2; val = (gpointer)HIDE_POINTER (val); gc_handles [idx] = val; + gc_handle_types [idx] = type; #if HAVE_BOEHM_GC GC_general_register_disappearing_link (&(gc_handles [idx]), obj); #else @@ -293,8 +303,8 @@ #endif break; default: - h |= type; gc_handles [idx] = val; + gc_handle_types [idx] = type; break; } return h; @@ -304,25 +314,30 @@ ves_icall_System_GCHandle_FreeHandle (guint32 handle) { int idx = handle >> 2; + int type = handle & 0x3; #ifdef HAVE_BOEHM_GC - if ((handle & 0x3) > 1) + g_assert (type == gc_handle_types [idx]); + if ((type == HANDLE_WEAK) || (type == HANDLE_WEAK_TRACK)) GC_unregister_disappearing_link (&(gc_handles [idx])); #else g_error ("No GCHandle support"); #endif gc_handles [idx] = (gpointer)-1; + gc_handle_types [idx] = (guint8)-1; } gpointer ves_icall_System_GCHandle_GetAddrOfPinnedObject (guint32 handle) { MonoObject *obj; + int type = handle & 0x3; if (gc_handles) { obj = gc_handles [handle >> 2]; - if ((handle & 0x3) > 1) { + g_assert (gc_handle_types [handle >> 2] == type); + if ((type == HANDLE_WEAK) || (type == HANDLE_WEAK_TRACK)) { obj = REVEAL_POINTER (obj); if (obj == (MonoObject *) -1) return NULL; Index: mono/metadata/threads.c =================================================================== RCS file: /mono/mono/mono/metadata/threads.c,v retrieving revision 1.33 diff -u -b -r1.33 threads.c --- mono/metadata/threads.c 3 Oct 2002 14:01:29 -0000 1.33 +++ mono/metadata/threads.c 10 Oct 2002 15:50:03 -0000 @@ -61,6 +61,9 @@ /* function called at thread start */ static MonoThreadStartCB mono_thread_start_cb = NULL; +/* function called at thread attach */ +static MonoThreadStartCB mono_thread_attach_cb = NULL; + /* The TLS key that holds the LocalDataStoreSlot hash in each thread */ static guint32 slothash_key; @@ -187,7 +190,7 @@ } MonoThread * -mono_thread_create (MonoDomain *domain, gpointer func) +mono_thread_create_arg (MonoDomain *domain, gpointer func, void *arg) { MonoThread *thread; HANDLE thread_handle; @@ -201,7 +204,7 @@ start_info->func = func; start_info->obj = thread; start_info->domain = domain; - /* start_info->this needs to be set? */ + start_info->this = arg; thread_handle = CreateThread(NULL, 0, start_wrapper, start_info, 0, &tid); #ifdef THREAD_DEBUG @@ -218,6 +221,56 @@ return thread; } +static void +mono_attached_thread_cleanup (MonoObject *obj) +{ +} + +MonoThread * +mono_thread_attach (MonoDomain *domain) +{ + MonoThread *thread; + HANDLE thread_handle; + struct StartInfo *start_info; + guint32 tid; + + thread = (MonoThread *)mono_object_new (domain, + mono_defaults.thread_class); + + start_info=g_new0 (struct StartInfo, 1); + start_info->func = NULL; + start_info->obj = thread; + start_info->domain = domain; + start_info->this = NULL; + + thread_handle = AttachThread (NULL, 0, start_wrapper, start_info, 0, &tid); +#ifdef THREAD_DEBUG + g_message(G_GNUC_PRETTY_FUNCTION ": Started thread ID %d (handle %p)", + tid, thread_handle); +#endif + g_assert (thread_handle); + + thread->handle=thread_handle; + thread->tid=tid; + + handle_store(thread); + + TlsSetValue (current_object_key, thread); + mono_domain_set (domain); + thread->tid=GetCurrentThreadId (); + if (mono_thread_attach_cb) + mono_thread_attach_cb (-1); + return thread; +} + + +MonoThread * +mono_thread_create (MonoDomain *domain, gpointer func) +{ + return mono_thread_create_arg (domain, func, NULL); +} + + HANDLE ves_icall_System_Threading_Thread_Thread_internal(MonoThread *this, MonoObject *start) { @@ -995,7 +1048,7 @@ } } -void mono_thread_init(MonoDomain *domain, MonoThreadStartCB start_cb) +void mono_thread_init_with_attach (MonoDomain *domain, MonoThreadStartCB start_cb, MonoThreadStartCB attach_cb) { /* Build a System.Threading.Thread object instance to return * for the main line's Thread.CurrentThread property. @@ -1033,6 +1086,7 @@ TlsSetValue(current_object_key, main_thread); mono_thread_start_cb = start_cb; + mono_thread_attach_cb = attach_cb; slothash_key=TlsAlloc(); @@ -1044,6 +1098,11 @@ GetCurrentProcess (); } +void mono_thread_init(MonoDomain *domain, MonoThreadStartCB start_cb) +{ + mono_thread_init_with_attach (domain, start_cb, NULL); +} + #ifdef THREAD_DEBUG static void print_tids (gpointer key, gpointer value, gpointer user) { Index: mono/metadata/threads.h =================================================================== RCS file: /mono/mono/mono/metadata/threads.h,v retrieving revision 1.18 diff -u -b -r1.18 threads.h --- mono/metadata/threads.h 3 Sep 2002 16:41:29 -0000 1.18 +++ mono/metadata/threads.h 10 Oct 2002 15:50:03 -0000 @@ -21,6 +21,8 @@ MonoThread *mono_thread_current (void); MonoThread *mono_thread_create (MonoDomain *domain, gpointer func); +MonoThread *mono_thread_create_arg (MonoDomain *domain, gpointer func, void *arg); +MonoThread *mono_thread_attach (MonoDomain *domain); extern HANDLE ves_icall_System_Threading_Thread_Thread_internal(MonoThread *this, MonoObject *start); extern void ves_icall_System_Threading_Thread_Thread_free_internal(MonoThread *this, HANDLE thread); --=-=-=-- From thaynes@openlinksw.com (Tim Haynes) Fri Oct 11 15:36:30 2002 From: thaynes@openlinksw.com (Tim Haynes) (Tim Haynes) Date: Fri, 11 Oct 2002 15:36:30 +0100 Subject: [Mono-list] Proposed fix for bugzilla #32063 Message-ID: <87u1jthwk1.fsf@purple.uknet.private> --=-=-= Hi, Please find attached a short proposed fix for #32063, making System.Type.GetConstructors() return constructors if called without any parameters, as well. Cheers, ~Tim -- Product Development Consultant OpenLink Software Tel: +44 (0) 20 8681 7701 Web: Universal Data Access & Data Integration Technology Providers --=-=-= Content-Disposition: attachment; filename=b32063.diff Content-Description: fix for 32063 Index: class/corlib/System/Type.cs =================================================================== RCS file: /mono/mcs/class/corlib/System/Type.cs,v retrieving revision 1.60 diff -u -b -r1.60 Type.cs --- class/corlib/System/Type.cs 19 Sep 2002 14:04:42 -0000 1.60 +++ class/corlib/System/Type.cs 11 Oct 2002 13:08:06 -0000 @@ -763,7 +763,7 @@ public ConstructorInfo[] GetConstructors () { - return GetConstructors (BindingFlags.Public | BindingFlags.NonPublic); + return GetConstructors (BindingFlags.Public | BindingFlags.Instance); } public abstract ConstructorInfo[] GetConstructors (BindingFlags bindingAttr); --=-=-=-- From dick@ximian.com Fri Oct 11 16:54:58 2002 From: dick@ximian.com (Dick Porter) Date: 11 Oct 2002 16:54:58 +0100 Subject: [Mono-list] Patch for bugzilla 31265, plus some pthreads In-Reply-To: <87zntlhwri.fsf@purple.uknet.private> References: <87zntlhwri.fsf@purple.uknet.private> Message-ID: <1034351698.17088.105.camel@hagbard.apathetic.discordia.org.uk> On Fri, 2002-10-11 at 15:32, Tim Haynes wrote: > Also, there was a mono_thread_create, but no mono_thread_attach for > existing threads). Have copied the mono_thread_create and replaced a call t > pthread_create() with pthread_self(), which works. There is a callback to > be called on unhandled exception for example, which now can call a > user-registerable callback or the original callback (calling pthread_exit). > The code in the user callback mono_thread_attach_aborted_cb should do a > longjmp to unwind the stack to a frame above any Mono frames. Could you explain why this code is needed? Also, I can't find any MS documentation for AttachThread(). (The publicly-visible entry points in io-layer should only be from the windows API, because the rest of the code needs to be portable to windows.) Thanks, - Dick From groith@tcrz.net Fri Oct 11 17:17:13 2002 From: groith@tcrz.net (Guenther Roith) Date: Fri, 11 Oct 2002 18:17:13 +0200 Subject: [Mono-list] ODBC.NET Provider on Windows References: Message-ID: <001c01c27141$a8f88f30$010aa8c0@roithw2k> > Yes, it got me further, I still have a problem. However, I think you said > System.Data.Odbc does not have support for DSN-less connections yet. Well, I just tried with the mysql-Odbc-Driver, and it didn't work, too. Johannes From miguel@ximian.com Fri Oct 11 22:19:07 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 11 Oct 2002 17:19:07 -0400 Subject: [Mono-list] More help needed. Message-ID: <1034371147.14578.347.camel@erandi.boston.ximian.com> Hey guys I am using a method called System.Xml.XmlDocument.ImportNode, but Mono does not implement this bad boy yet. Could someone cook an implementation for this method? Miguel From miguel@ximian.com Fri Oct 11 22:27:26 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 11 Oct 2002 17:27:26 -0400 Subject: [Mono-list] New mailing list for Winforms development. Message-ID: <1034371646.14577.362.camel@erandi.boston.ximian.com> Hello guys, A new mailing list has been created to discuss the development of Winforms for Mono. The mailing list is mono-winforms-list@ximian.com. To subscribe send an email to mono-winforms-list-request@ximian.com best wishes, Miguel From weiqigao@networkusa.net Sat Oct 12 03:02:16 2002 From: weiqigao@networkusa.net (Weiqi Gao) Date: Fri, 11 Oct 2002 21:02:16 -0500 Subject: [Mono-list] Mono 0.16 Windows Installer Permission? Message-ID: <000001c27193$645f3ed0$0301a8c0@gao2001> The Windows installer for Mono 0.16, http://go-mono.org/archive/mono-0.16-stable.exe generated this: Forbidden You don't have permission to access /archive/mono-0.16-stable.exe on this server. ------------------------------------------------------------------------ -------- Apache/1.3.26 Server at go-mono.com Port 80 -- Weiqi Gao weiqigao@networkusa.net From danmorg@sc.rr.com Sat Oct 12 03:53:16 2002 From: danmorg@sc.rr.com (Daniel Morgan) Date: Fri, 11 Oct 2002 22:53:16 -0400 Subject: [Mono-list] ODBC.NET Provider on Windows In-Reply-To: Message-ID: Brian, It works on Windows too!!!! I compiled and ran the OdbcTest on .NET 1.1 beta on Windows and on Mono on Windows. It works on both. I had to use a DSN and change something in my DSN in ODBC Sources in the Control Panel. However, I made the authentication set to SQL Server (not NT) and set my default database to pubs. dbcon.ConnectionString = "DSN=LocalServer;UID=sa;PWD="; DanielMorgan@DANPC ~/mono/mcs/class/System.Data/Test $ mcs OdbcTest.cs -r System.Data.dll Compilation succeeded DanielMorgan@DANPC ~/mono/mcs/class/System.Data/Test $ mono OdbcTest.exe ODBCInit Complete. WARNING: Unknown type 0 Last Name: Cruz Last Name: Roulet Last Name: Devon Last Name: Domingues Last Name: Hernadez Last Name: Schmitt Last Name: Tonini Last Name: Roel Last Name: Lincoln Last Name: Chang Last Name: Thomas Last Name: Bennett Last Name: Nagy Last Name: Snyder Last Name: Labrune Last Name: Josephs Last Name: Jablonski Last Name: Brown Last Name: Lebihan Last Name: Larsson Last Name: Pereira Last Name: Rance Last Name: Paolino Last Name: Smith Last Name: Sommer Last Name: Karttunen Last Name: Pontes Last Name: Saveley Last Name: McKenna Last Name: Ibsen Last Name: Franken Last Name: Accorti Last Name: Koskitalo Last Name: Afonso Last Name: Parente Last Name: Cramer Last Name: Henriot Last Name: Mendel Last Name: Muller Last Name: Ottlieb Last Name: O'Rourke Last Name: Ashworth Last Name: Latimer Unhandled Exception: System.NotImplementedException: The requested feature is no t yet implemented in <0x0002b> 00 System.Data.Odbc.OdbcCommand:Dispose (bool) in <0x00015> 00 System.ComponentModel.Component:Dispose () in <0x00174> 00 Test.OdbcTest.OdbcTest:Main (string[]) -----Original Message----- From: mono-list-admin@ximian.com [mailto:mono-list-admin@ximian.com]On Behalf Of Daniel Morgan Sent: Friday, October 11, 2002 11:18 AM To: Brian Ritchie; Mono-List Subject: RE: [Mono-list] ODBC.NET Provider on Windows Yes, it got me further, I still have a problem. However, I think you said System.Data.Odbc does not have support for DSN-less connections yet. This is what I get now: DanielMorgan@DANPC ~/mono/mcs/class/System.Data/Test $ mono OdbcTest.exe ODBCInit Complete. ERROR: SQLConnect: ERROR: SQLAlloc(Prepare): ERROR: SQLPrepare: ERROR: SQLExecute: ERROR: SQLCancel: Unhandled Exception: System.NotImplementedException: The requested feature is no t yet implemented in <0x0002b> 00 System.Data.Odbc.OdbcCommand:Dispose (bool) in <0x00015> 00 System.ComponentModel.Component:Dispose () in <0x00174> 00 Test.OdbcTest.OdbcTest:Main (string[]) -----Original Message----- From: Brian Ritchie [mailto:brianlritchie@hotmail.com] Sent: Friday, October 11, 2002 10:28 AM To: Daniel Morgan; Mono-List Subject: Re: [Mono-list] ODBC.NET Provider on Windows Here's the fix... In libodbc.cs, the OdbcReturn enum needs to be a short. internal enum OdbcReturn : short { Error = -1, InvalidHandle = -2, StillExecuting = 2, NeedData = 99, Success = 0, SuccessWithInfo = 1 } Let me know if this works for you, Brian ----- Original Message ----- From: "Brian Ritchie" To: "Daniel Morgan" ; "Mono-List" Sent: Friday, October 11, 2002 9:17 AM Subject: Re: [Mono-list] ODBC.NET Provider on Windows > Guys, > > I'm able to duplicate the problem. The very first call into odbc32 is > failing. It is a pretty basic call...it only allocates the first handle. > So, it appears to be some sort of interop problem with the dll. I'm still > checking into it. Let me know if you have any thoughts. > > Brian > > ----- Original Message ----- > From: "Daniel Morgan" > To: "Mono-List" > Sent: Friday, October 11, 2002 3:49 AM > Subject: [Mono-list] ODBC.NET Provider on Windows > > > > Rodrigo and Brian > > > > I have tried to get the Odbc.net provider to use Microsoft Window's native > > ODBC library which is odbc32.dll by changing the DllImport from "libodbc" > to > > "odbc32". The library apparently loads, > > but I don't know what the errors are for. > > > > Any ideas? > > > > This is the results I got: > > > > DanielMorgan@DANPC ~/mono/mcs/class/System.Data/Test > > $ mono OdbcTest.exe > > ERROR: SQLAllocHandle: <528285696> > > ERROR: SQLSetEnvAttr: <528285696> > > ODBCInit Complete. > > ERROR: SQLAllocHandle(hdbc): <528285696> > > ERROR: SQLConnect: <65535> > > ERROR: SQLAlloc(Prepare): <528351231> > > ERROR: SQLPrepare: <528351230> > > ERROR: SQLExecute: <528351230> > > ERROR: SQLCancel: <528351230> > > > > Unhandled Exception: System.NotImplementedException: The requested feature > > is no > > t yet implemented > > in <0x0002b> 00 System.Data.Odbc.OdbcCommand:Dispose (bool) > > in <0x00015> 00 System.ComponentModel.Component:Dispose () > > in <0x00174> 00 Test.OdbcTest.OdbcTest:Main (string[]) > > > > I have a ODBC.net test named OdbcTest.cs that works on Windows XP > > using .NET 1.1 Beta, but not Mono: > > > > using System; > > using System.Data; > > using System.Data.Odbc; > > > > namespace Test.OdbcTest > > { > > class OdbcTest > > { > > [STAThread] > > static void Main(string[] args) > > { > > OdbcConnection dbcon = new OdbcConnection(); > > // connection string to a Microsoft SQL Server 2000 database > > dbcon.ConnectionString = > > "DRIVER={SQL Server};" + > > "SERVER=(local);" + > > "Trusted_connection=true;" + > > "DATABASE=pubs;"; > > > > dbcon.Open(); > > > > OdbcCommand dbcmd = new OdbcCommand(); > > dbcmd.Connection = dbcon; > > dbcmd.CommandType = CommandType.Text; > > dbcmd.CommandText = "SELECT lname FROM employee"; > > > > OdbcDataReader reader; > > reader = (OdbcDataReader) dbcmd.ExecuteReader(); > > > > while(reader.Read()) { > > Console.WriteLine("Last Name: " + reader[0].ToString()); > > } > > reader.Close(); > > dbcmd.Dispose(); > > dbcon.Close(); > > } > > } > > } > > > > > > > > _______________________________________________ > > Mono-list maillist - Mono-list@ximian.com > > http://lists.ximian.com/mailman/listinfo/mono-list > > > > _______________________________________________ > Mono-list maillist - Mono-list@ximian.com > http://lists.ximian.com/mailman/listinfo/mono-list > _______________________________________________ Mono-list maillist - Mono-list@ximian.com http://lists.ximian.com/mailman/listinfo/mono-list From Sebastien Pouliot Sat Oct 12 04:35:26 2002 From: Sebastien Pouliot (Sebastien Pouliot) Date: Fri, 11 Oct 2002 23:35:26 -0400 Subject: [Mono-list] ICryptoTransform Message-ID: <008601c271a0$67f6aa80$0301a8c0@einstein> The current definition of ICryptoTransform isn't correct as it doesn't inherit from IDisposable. I've not commited the modification because it will break many classes unless they are all patched at the same time. The affected classes are: RC2CryptoServiceProvider.cs(50,17): error CS0535: 'System.Security.Cryptography.RC2Impl' does not implement interface member 'System.IDisposable.Dispose()' HashAlgorithm.cs(14,24): error CS0535: 'System.Security.Cryptography.HashAlgorithm' does not implement interface member 'System.IDisposable.Dispose()' CryptoAPITransform.cs(14,22): error CS0535: 'System.Security.Cryptography.CryptoAPITransform' does not implement interface member 'System.IDisposable.Dispose()' RijndaelManaged.cs(84,17): error CS0535: 'System.Security.Cryptography.RijndaelController' does not implement interface member 'System.IDisposable.Dispose()' FromBase64Transform.cs(19,15): error CS0535: 'System.Security.Cryptography.FromBase64Transform' does not implement interface member 'System.IDisposable.Dispose()' ToBase64Transform.cs(14,15): error CS0535: 'System.Security.Cryptography.ToBase64Transform' does not implement interface member 'System.IDisposable.Dispose()' DESCryptoServiceProvider.cs(18,17): error CS0535: 'System.Security.Cryptography.DESTransformBase' does not implement interface member 'System.IDisposable.Dispose()' Andrew, are you still working on RC2 or Rijndael ? If so then we could sync the modification with your next commit. If not then I could make the change before my next one (for HashAlgorithm/KeyedHashAlgorithm/HMACSHA1). Anyone else working on one (or more) of those classes ? Note: Duncan, sorry I forgot to remove the extra Dispose on my previous commit :-( Sebastien Pouliot Security Architect, Motus Technologies, http://www.motus.com/ work: spouliot@motus.com home: spouliot@videotron.ca From weiqigao@networkusa.net Sat Oct 12 04:44:33 2002 From: weiqigao@networkusa.net (Weiqi Gao) Date: 11 Oct 2002 22:44:33 -0500 Subject: [Mono-list] Finalize() Message-ID: <1034394274.1633.20.camel@gao-2001> The following snippet: ==========8<==========8<==========8<==========8<========== class Foo { protected override void Finalize() { try { System.Console.WriteLine("Foo::Finalize()"); } finally { base.Finalize(); } } } class Bar : Foo { protected override void Finalize() { try { System.Console.WriteLine("Bar::Finalize()"); } finally { base.Finalize(); } } } class Test { static void Main() { new Bar(); } } ==========8<==========8<==========8<==========8<========== compiles under mcs but generates an error under csc. The mcs generated binary runs and gives this result: ==========8<==========8<==========8<==========8<========== Bar::Finalize() Foo::Finalize() Foo::Finalize() ==========8<==========8<==========8<==========8<========== Instead of generating a "You should not override object.Finalize()" error message as csc does, mcs not only compiles the method, but also add a call to base.Finalize() in the body of Finalize() in a finally block. Is this the desired behavior? -- Weiqi Gao weiqigao@networkusa.net From martin_aliger@email.cz Sat Oct 12 06:11:48 2002 From: martin_aliger@email.cz (Martin Aliger) Date: Sat, 12 Oct 2002 07:11:48 +0200 (CEST) Subject: [Mono-list] NAnt Message-ID: <3DA7AF14.000001.30745@email1.atc.cz> > Do you know what changes we have to do to Nant? Do you have a patch? > After the patch, does Mono build completely with the modified changes? Yes - there are severel patches, written by me and all submited to NAnt developers team and soon will be merged into nant cvs (I hope) [seems one change was not accepted in that form I suggest - but it is not important for mono] Yes - mono class libraries compiles and this should be used to compile mcs ad even nant itself :-) > > I can offer you a CVS account as well. > > Miguel Thank you! Unfortunetely my inet connection is through firewall/proxy wih HTTPS only tunnel. CVS does not support it as far as I know [someone from nant team refer to some 'patch' to cvs which solved something like this, but...] I got you know when nant will compile mono with their official release. Meantime we can use that modified version I send before. Unfortunatelly .build project must be changed as well (included in that .tgz) Martin ______________________________________________________________________________ Nej¹ir¹í nabídka PC komponent v ÈR - http://www.levi.cz Neváhejte a srovnejte mo¾nosti dne¹ního hardware. From pbaena@uol.com.ar Sat Oct 12 03:45:45 2002 From: pbaena@uol.com.ar (Pablo Baena) Date: 12 Oct 2002 02:45:45 +0000 Subject: [Mono-list] Re: [Gtk-sharp-list] ThreadNotify (A bug in Queue.Dequeue method) In-Reply-To: <1034305925.547.9.camel@hal> References: <1034231277.1305.16.camel@rain.vlad1.com> <1034275199.14577.97.camel@erandi.boston.ximian.com> <1034281481.1162.6.camel@rain.vlad1.com> <1034305925.547.9.camel@hal> Message-ID: <1034390745.579.15.camel@hal> The last problem I showed here is not ThreadNotify's fault. Seems to be a bug in Queue.Dequeue. If you look at the output of the test, you will notice it isn't accurate to the data in the queue when you use Dequeue, but the commented part with foreach works fine. Thank you! Pablo namespace test { using System; using System.IO; using System.Runtime.InteropServices; using System.Diagnostics; using System.Collections; class test { public static void Main(string[] args) { Queue queue = new Queue(); ProcessStartInfo psi = new ProcessStartInfo(); psi.FileName="ls"; psi.Arguments="/usr/doc"; psi.WorkingDirectory="/tmp/"; psi.RedirectStandardOutput=true; Process p = Process.Start(psi); string tmp; while ((tmp = p.StandardOutput.ReadLine())!=null) { Console.WriteLine("sending: "+tmp); queue.Enqueue(tmp); } /* foreach ( System.Object item in queue ) { Console.WriteLine("showing: {0}",item); } */ while(queue.Count>0){ tmp = (string) queue.Dequeue(); Console.WriteLine("showing: {0}",tmp); } } } } On Fri, 2002-10-11 at 03:12, Pablo Baena wrote: Tried this with gtk-sharp from CVS, doesn't seem to work neither. Am I doing it correctly? I think those lock statements are unnecesary though. ________________________________________________________________________ la vida es muy ironica vio? sip la verdad que se nos esta cagando de risa! y la voy a cagar a piñas From brianlritchie@hotmail.com Sat Oct 12 06:57:49 2002 From: brianlritchie@hotmail.com (Brian Ritchie) Date: Sat, 12 Oct 2002 01:57:49 -0400 Subject: [Mono-list] ODBC.NET Provider on Windows Message-ID: Great news!! I'm "power-leveling" the odbc code... - I've jacked in the transaction objects - I'm straightening out all of the SQL data type mappings. - DBNull works - I've implemented the Cancel method Do we have a #define to force conditional compilation on Linux/Windows? I'd like to setup the libodbc to point at odbc32 on windows. Or is there a better way? I'll be checking this stuff in this weekend. Brian >From: "Daniel Morgan" >To: "Brian Ritchie" , "Mono-List" > >Subject: RE: [Mono-list] ODBC.NET Provider on Windows >Date: Fri, 11 Oct 2002 22:53:16 -0400 > >Brian, > >It works on Windows too!!!! > >I compiled and ran the OdbcTest on .NET 1.1 beta on Windows and on Mono on >Windows. It works on both. I had to use a DSN and change something in my >DSN in ODBC Sources in the Control Panel. >However, I made the authentication set to SQL Server (not NT) and set my >default database to pubs. > > dbcon.ConnectionString = > "DSN=LocalServer;UID=sa;PWD="; > >DanielMorgan@DANPC ~/mono/mcs/class/System.Data/Test >$ mcs OdbcTest.cs -r System.Data.dll >Compilation succeeded > >DanielMorgan@DANPC ~/mono/mcs/class/System.Data/Test >$ mono OdbcTest.exe >ODBCInit Complete. >WARNING: Unknown type 0 >Last Name: Cruz > > > >Last Name: Roulet > > > >Last Name: Devon > > > >Last Name: Domingues > > > >Last Name: Hernadez > > > >Last Name: Schmitt > > > >Last Name: Tonini > > > >Last Name: Roel > > > >Last Name: Lincoln > > > >Last Name: Chang > > > >Last Name: Thomas > > > >Last Name: Bennett > > > >Last Name: Nagy > > > >Last Name: Snyder > > > >Last Name: Labrune > > > >Last Name: Josephs > > > >Last Name: Jablonski > > > >Last Name: Brown > > > >Last Name: Lebihan > > > >Last Name: Larsson > > > >Last Name: Pereira > > > >Last Name: Rance > > > >Last Name: Paolino > > > >Last Name: Smith > > > >Last Name: Sommer > > > >Last Name: Karttunen > > > >Last Name: Pontes > > > >Last Name: Saveley > > > >Last Name: McKenna > > > >Last Name: Ibsen > > > >Last Name: Franken > > > >Last Name: Accorti > > > >Last Name: Koskitalo > > > >Last Name: Afonso > > > >Last Name: Parente > > > >Last Name: Cramer > > > >Last Name: Henriot > > > >Last Name: Mendel > > > >Last Name: Muller > > > >Last Name: Ottlieb > > > >Last Name: O'Rourke > > > >Last Name: Ashworth > > > >Last Name: Latimer > > > > >Unhandled Exception: System.NotImplementedException: The requested feature >is no >t yet implemented >in <0x0002b> 00 System.Data.Odbc.OdbcCommand:Dispose (bool) >in <0x00015> 00 System.ComponentModel.Component:Dispose () >in <0x00174> 00 Test.OdbcTest.OdbcTest:Main (string[]) > > >-----Original Message----- >From: mono-list-admin@ximian.com [mailto:mono-list-admin@ximian.com]On >Behalf Of Daniel Morgan >Sent: Friday, October 11, 2002 11:18 AM >To: Brian Ritchie; Mono-List >Subject: RE: [Mono-list] ODBC.NET Provider on Windows > > >Yes, it got me further, I still have a problem. However, I think you said >System.Data.Odbc does not have support for DSN-less connections yet. > >This is what I get now: > >DanielMorgan@DANPC ~/mono/mcs/class/System.Data/Test >$ mono OdbcTest.exe >ODBCInit Complete. >ERROR: SQLConnect: >ERROR: SQLAlloc(Prepare): >ERROR: SQLPrepare: >ERROR: SQLExecute: >ERROR: SQLCancel: > >Unhandled Exception: System.NotImplementedException: The requested feature >is no >t yet implemented >in <0x0002b> 00 System.Data.Odbc.OdbcCommand:Dispose (bool) >in <0x00015> 00 System.ComponentModel.Component:Dispose () >in <0x00174> 00 Test.OdbcTest.OdbcTest:Main (string[]) > > >-----Original Message----- >From: Brian Ritchie [mailto:brianlritchie@hotmail.com] >Sent: Friday, October 11, 2002 10:28 AM >To: Daniel Morgan; Mono-List >Subject: Re: [Mono-list] ODBC.NET Provider on Windows > > >Here's the fix... > >In libodbc.cs, the OdbcReturn enum needs to be a short. > >internal enum OdbcReturn : short { >Error = -1, > >InvalidHandle = -2, > >StillExecuting = 2, > >NeedData = 99, > >Success = 0, > >SuccessWithInfo = 1 > >} > >Let me know if this works for you, > >Brian > >----- Original Message ----- >From: "Brian Ritchie" >To: "Daniel Morgan" ; "Mono-List" >Sent: Friday, October 11, 2002 9:17 AM >Subject: Re: [Mono-list] ODBC.NET Provider on Windows > > > > Guys, > > > > I'm able to duplicate the problem. The very first call into odbc32 is > > failing. It is a pretty basic call...it only allocates the first >handle. > > So, it appears to be some sort of interop problem with the dll. I'm >still > > checking into it. Let me know if you have any thoughts. > > > > Brian > > > > ----- Original Message ----- > > From: "Daniel Morgan" > > To: "Mono-List" > > Sent: Friday, October 11, 2002 3:49 AM > > Subject: [Mono-list] ODBC.NET Provider on Windows > > > > > > > Rodrigo and Brian > > > > > > I have tried to get the Odbc.net provider to use Microsoft Window's >native > > > ODBC library which is odbc32.dll by changing the DllImport from >"libodbc" > > to > > > "odbc32". The library apparently loads, > > > but I don't know what the errors are for. > > > > > > Any ideas? > > > > > > This is the results I got: > > > > > > DanielMorgan@DANPC ~/mono/mcs/class/System.Data/Test > > > $ mono OdbcTest.exe > > > ERROR: SQLAllocHandle: <528285696> > > > ERROR: SQLSetEnvAttr: <528285696> > > > ODBCInit Complete. > > > ERROR: SQLAllocHandle(hdbc): <528285696> > > > ERROR: SQLConnect: <65535> > > > ERROR: SQLAlloc(Prepare): <528351231> > > > ERROR: SQLPrepare: <528351230> > > > ERROR: SQLExecute: <528351230> > > > ERROR: SQLCancel: <528351230> > > > > > > Unhandled Exception: System.NotImplementedException: The requested >feature > > > is no > > > t yet implemented > > > in <0x0002b> 00 System.Data.Odbc.OdbcCommand:Dispose (bool) > > > in <0x00015> 00 System.ComponentModel.Component:Dispose () > > > in <0x00174> 00 Test.OdbcTest.OdbcTest:Main (string[]) > > > > > > I have a ODBC.net test named OdbcTest.cs that works on Windows XP > > > using .NET 1.1 Beta, but not Mono: > > > > > > using System; > > > using System.Data; > > > using System.Data.Odbc; > > > > > > namespace Test.OdbcTest > > > { > > > class OdbcTest > > > { > > > [STAThread] > > > static void Main(string[] args) > > > { > > > OdbcConnection dbcon = new OdbcConnection(); > > > // connection string to a Microsoft SQL Server 2000 database > > > dbcon.ConnectionString = > > > "DRIVER={SQL Server};" + > > > "SERVER=(local);" + > > > "Trusted_connection=true;" + > > > "DATABASE=pubs;"; > > > > > > dbcon.Open(); > > > > > > OdbcCommand dbcmd = new OdbcCommand(); > > > dbcmd.Connection = dbcon; > > > dbcmd.CommandType = CommandType.Text; > > > dbcmd.CommandText = "SELECT lname FROM employee"; > > > > > > OdbcDataReader reader; > > > reader = (OdbcDataReader) dbcmd.ExecuteReader(); > > > > > > while(reader.Read()) { > > > Console.WriteLine("Last Name: " + reader[0].ToString()); > > > } > > > reader.Close(); > > > dbcmd.Dispose(); > > > dbcon.Close(); > > > } > > > } > > > } > > > > > > > > > > > > _______________________________________________ > > > Mono-list maillist - Mono-list@ximian.com > > > http://lists.ximian.com/mailman/listinfo/mono-list > > > > > > > _______________________________________________ > > Mono-list maillist - Mono-list@ximian.com > > http://lists.ximian.com/mailman/listinfo/mono-list > > > > >_______________________________________________ >Mono-list maillist - Mono-list@ximian.com >http://lists.ximian.com/mailman/listinfo/mono-list > > >_______________________________________________ >Mono-list maillist - Mono-list@ximian.com >http://lists.ximian.com/mailman/listinfo/mono-list _________________________________________________________________ Send and receive Hotmail on your mobile device: http://mobile.msn.com From pbaena@uol.com.ar Sat Oct 12 04:05:27 2002 From: pbaena@uol.com.ar (Pablo Baena) Date: 12 Oct 2002 03:05:27 +0000 Subject: [Mono-list] Re: [Gtk-sharp-list] ThreadNotify (A bug in Queue.Dequeue method) In-Reply-To: <1034399701.1523.25.camel@rain.vlad1.com> References: <1034231277.1305.16.camel@rain.vlad1.com> <1034275199.14577.97.camel@erandi.boston.ximian.com> <1034281481.1162.6.camel@rain.vlad1.com> <1034305925.547.9.camel@hal> <1034390679.597.12.camel@hal> <1034399701.1523.25.camel@rain.vlad1.com> Message-ID: <1034391927.579.19.camel@hal> --=-EX51l+aqIlnlF7i904ay Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Followed your advise and tried this: namespace test { using System; using System.IO; using System.Runtime.InteropServices; using System.Diagnostics; using System.Collections; =09 class test { public static void Main(string[] args) { Queue queue =3D new Queue(); string tmp; for (int i=3D0;i<50;i++) { queue.Enqueue("Data #"+i); } /* foreach ( System.Object item in queue ) { Console.WriteLine("showing: {0}",item); } */ while(queue.Count>0){ tmp =3D (string) queue.Dequeue(); Console.WriteLine("showing: {0}",tmp);=09 } =09 } } } Problem is, the output I get is: showing: Data #0 showing: Data #1 showing: Data #2 showing: Data #3 showing: Data #4 showing: Data #5 showing: Data #6 showing: Data #7 showing: Data #8 showing: Data #9 showing: Data #10 showing: Data #11 showing: Data #12 showing: Data #13 showing: Data #14 showing: Data #15 showing: Data #0 showing: Data #1 showing: Data #2 showing: Data #3 showing: Data #4 showing: Data #5 showing: Data #6 showing: Data #7 showing: Data #8 showing: Data #9 showing: Data #10 showing: Data #11 showing: Data #12 showing: Data #13 showing: Data #14 showing: Data #15 showing: Data #0 showing: Data #1 showing: Data #2 showing: Data #3 showing: Data #4 showing: Data #5 showing: Data #6 showing: Data #7 showing: Data #8 showing: Data #9 showing: Data #10 showing: Data #11 showing: Data #12 showing: Data #13 showing: Data #14 showing: Data #15 showing: Data #0 showing: Data #1 On Sat, 2002-10-12 at 05:15, Vladimir Vukicevic wrote: On Fri, 2002-10-11 at 19:44, Pablo Baena wrote: > The last problem I showed here is not ThreadNotify's fault. Seems to > be a bug in Queue.Dequeue.=20 > If you look at the output of the test, you will notice it isn't > accurate to the data in the queue when you use Dequeue, but the > commented part with foreach works fine.=20 =20 This test seems to work fine for me... I have it putting in the lines o= f data and then dequeueing the same lines in the same order. The lock statements are necessary when you use the queue between threads; you want to lock (queue) { operations_on_queue_here; }, since the queue itself doesn't do any locking. What output are you seeing that's broken? I'd also suggest not using ls for a test case, because of the possibility of ls sending bizzarely formatted output that could be confusing the reader (the chances of this are almost zero, but still..) =20 - Vlad =20 --=20 Vladimir Vukicevic ________________________________________________________________________ la vida es muy ironica vio? sip la verdad que se nos esta cagando de risa! y la voy a cagar a pi=F1as --=-EX51l+aqIlnlF7i904ay Content-Type: text/html; charset=utf-8 Followed your advise and tried this:
namespace test
{
	using System;
	using System.IO;
	using System.Runtime.InteropServices;
	using System.Diagnostics;
	using System.Collections;
	
	class test
	{
		public static void Main(string[] args)
		{
			Queue queue = new Queue();
			string tmp;

			for (int i=0;i<50;i++) {
				queue.Enqueue("Data #"+i);
			}
			/*
			foreach ( System.Object item in queue ) {
				Console.WriteLine("showing: {0}",item);
			}
			*/
			while(queue.Count>0){
				tmp = (string) queue.Dequeue();
				Console.WriteLine("showing: {0}",tmp);	
			}
			
		}
	}
}

Problem is, the output I get is:
showing: Data #0
showing: Data #1
showing: Data #2
showing: Data #3
showing: Data #4
showing: Data #5
showing: Data #6
showing: Data #7
showing: Data #8
showing: Data #9
showing: Data #10
showing: Data #11
showing: Data #12
showing: Data #13
showing: Data #14
showing: Data #15
showing: Data #0
showing: Data #1
showing: Data #2
showing: Data #3
showing: Data #4
showing: Data #5
showing: Data #6
showing: Data #7
showing: Data #8
showing: Data #9
showing: Data #10
showing: Data #11
showing: Data #12
showing: Data #13
showing: Data #14
showing: Data #15
showing: Data #0
showing: Data #1
showing: Data #2
showing: Data #3
showing: Data #4
showing: Data #5
showing: Data #6
showing: Data #7
showing: Data #8
showing: Data #9
showing: Data #10
showing: Data #11
showing: Data #12
showing: Data #13
showing: Data #14
showing: Data #15
showing: Data #0
showing: Data #1

On Sat, 2002-10-12 at 05:15, Vladimir Vukicevic wrote:
On Fri, 2002-10-11 at 19:44, Pablo Baena wrote:
> The last problem I showed here is not ThreadNotify's fault. Seems to
> be a bug in Queue.Dequeue. 
> If you look at the output of the test, you will notice it isn't
> accurate to the data in the queue when you use Dequeue, but the
> commented part with foreach works fine. 

This test seems to work fine for me... I have it putting in the lines of
data and then dequeueing the same lines in the same order.  The lock
statements are necessary when you use the queue between threads; you
want to lock (queue) { operations_on_queue_here; }, since the queue
itself doesn't do any locking.  What output are you seeing that's
broken?  I'd also suggest not using ls for a test case, because of the
possibility of ls sending bizzarely formatted output that could be
confusing the reader (the chances of this are almost zero, but still..)

	- Vlad

-- 
Vladimir Vukicevic <vladimir@pobox.com>



<Tetsuo> la vida es muy ironica vio?
<Ranma> sip la verdad que se nos esta cagando de risa!
<Ranma> y la voy a cagar a piñas
--=-EX51l+aqIlnlF7i904ay-- From danmorg@sc.rr.com Sat Oct 12 07:19:17 2002 From: danmorg@sc.rr.com (Daniel Morgan) Date: Sat, 12 Oct 2002 02:19:17 -0400 Subject: [Mono-list] ODBC.NET Provider on Windows In-Reply-To: Message-ID: The mono module in cvs in directory data, there is a file config.in, you will see something like: Add the following line: In you DllImport where you have "libodbc", use "odbc32.dll" instead. On Windows, the mono runtime will use "odbc32.dll" while on on Linux the mono runtime will use "libodbc.so" based on the config file and what you use in your DllImport. -----Original Message----- From: Brian Ritchie [mailto:brianlritchie@hotmail.com] Sent: Saturday, October 12, 2002 1:58 AM To: danmorg@sc.rr.com; mono-list@ximian.com Subject: RE: [Mono-list] ODBC.NET Provider on Windows Great news!! I'm "power-leveling" the odbc code... - I've jacked in the transaction objects - I'm straightening out all of the SQL data type mappings. - DBNull works - I've implemented the Cancel method Do we have a #define to force conditional compilation on Linux/Windows? I'd like to setup the libodbc to point at odbc32 on windows. Or is there a better way? I'll be checking this stuff in this weekend. Brian >From: "Daniel Morgan" >To: "Brian Ritchie" , "Mono-List" > >Subject: RE: [Mono-list] ODBC.NET Provider on Windows >Date: Fri, 11 Oct 2002 22:53:16 -0400 > >Brian, > >It works on Windows too!!!! > >I compiled and ran the OdbcTest on .NET 1.1 beta on Windows and on Mono on >Windows. It works on both. I had to use a DSN and change something in my >DSN in ODBC Sources in the Control Panel. >However, I made the authentication set to SQL Server (not NT) and set my >default database to pubs. > > dbcon.ConnectionString = > "DSN=LocalServer;UID=sa;PWD="; > >DanielMorgan@DANPC ~/mono/mcs/class/System.Data/Test >$ mcs OdbcTest.cs -r System.Data.dll >Compilation succeeded > >DanielMorgan@DANPC ~/mono/mcs/class/System.Data/Test >$ mono OdbcTest.exe >ODBCInit Complete. >WARNING: Unknown type 0 >Last Name: Cruz > > > >Last Name: Roulet > > > >Last Name: Devon > > > >Last Name: Domingues > > > >Last Name: Hernadez > > > >Last Name: Schmitt > > > >Last Name: Tonini > > > >Last Name: Roel > > > >Last Name: Lincoln > > > >Last Name: Chang > > > >Last Name: Thomas > > > >Last Name: Bennett > > > >Last Name: Nagy > > > >Last Name: Snyder > > > >Last Name: Labrune > > > >Last Name: Josephs > > > >Last Name: Jablonski > > > >Last Name: Brown > > > >Last Name: Lebihan > > > >Last Name: Larsson > > > >Last Name: Pereira > > > >Last Name: Rance > > > >Last Name: Paolino > > > >Last Name: Smith > > > >Last Name: Sommer > > > >Last Name: Karttunen > > > >Last Name: Pontes > > > >Last Name: Saveley > > > >Last Name: McKenna > > > >Last Name: Ibsen > > > >Last Name: Franken > > > >Last Name: Accorti > > > >Last Name: Koskitalo > > > >Last Name: Afonso > > > >Last Name: Parente > > > >Last Name: Cramer > > > >Last Name: Henriot > > > >Last Name: Mendel > > > >Last Name: Muller > > > >Last Name: Ottlieb > > > >Last Name: O'Rourke > > > >Last Name: Ashworth > > > >Last Name: Latimer > > > > >Unhandled Exception: System.NotImplementedException: The requested feature >is no >t yet implemented >in <0x0002b> 00 System.Data.Odbc.OdbcCommand:Dispose (bool) >in <0x00015> 00 System.ComponentModel.Component:Dispose () >in <0x00174> 00 Test.OdbcTest.OdbcTest:Main (string[]) > > >-----Original Message----- >From: mono-list-admin@ximian.com [mailto:mono-list-admin@ximian.com]On >Behalf Of Daniel Morgan >Sent: Friday, October 11, 2002 11:18 AM >To: Brian Ritchie; Mono-List >Subject: RE: [Mono-list] ODBC.NET Provider on Windows > > >Yes, it got me further, I still have a problem. However, I think you said >System.Data.Odbc does not have support for DSN-less connections yet. > >This is what I get now: > >DanielMorgan@DANPC ~/mono/mcs/class/System.Data/Test >$ mono OdbcTest.exe >ODBCInit Complete. >ERROR: SQLConnect: >ERROR: SQLAlloc(Prepare): >ERROR: SQLPrepare: >ERROR: SQLExecute: >ERROR: SQLCancel: > >Unhandled Exception: System.NotImplementedException: The requested feature >is no >t yet implemented >in <0x0002b> 00 System.Data.Odbc.OdbcCommand:Dispose (bool) >in <0x00015> 00 System.ComponentModel.Component:Dispose () >in <0x00174> 00 Test.OdbcTest.OdbcTest:Main (string[]) > > >-----Original Message----- >From: Brian Ritchie [mailto:brianlritchie@hotmail.com] >Sent: Friday, October 11, 2002 10:28 AM >To: Daniel Morgan; Mono-List >Subject: Re: [Mono-list] ODBC.NET Provider on Windows > > >Here's the fix... > >In libodbc.cs, the OdbcReturn enum needs to be a short. > >internal enum OdbcReturn : short { >Error = -1, > >InvalidHandle = -2, > >StillExecuting = 2, > >NeedData = 99, > >Success = 0, > >SuccessWithInfo = 1 > >} > >Let me know if this works for you, > >Brian > >----- Original Message ----- >From: "Brian Ritchie" >To: "Daniel Morgan" ; "Mono-List" >Sent: Friday, October 11, 2002 9:17 AM >Subject: Re: [Mono-list] ODBC.NET Provider on Windows > > > > Guys, > > > > I'm able to duplicate the problem. The very first call into odbc32 is > > failing. It is a pretty basic call...it only allocates the first >handle. > > So, it appears to be some sort of interop problem with the dll. I'm >still > > checking into it. Let me know if you have any thoughts. > > > > Brian > > > > ----- Original Message ----- > > From: "Daniel Morgan" > > To: "Mono-List" > > Sent: Friday, October 11, 2002 3:49 AM > > Subject: [Mono-list] ODBC.NET Provider on Windows > > > > > > > Rodrigo and Brian > > > > > > I have tried to get the Odbc.net provider to use Microsoft Window's >native > > > ODBC library which is odbc32.dll by changing the DllImport from >"libodbc" > > to > > > "odbc32". The library apparently loads, > > > but I don't know what the errors are for. > > > > > > Any ideas? > > > > > > This is the results I got: > > > > > > DanielMorgan@DANPC ~/mono/mcs/class/System.Data/Test > > > $ mono OdbcTest.exe > > > ERROR: SQLAllocHandle: <528285696> > > > ERROR: SQLSetEnvAttr: <528285696> > > > ODBCInit Complete. > > > ERROR: SQLAllocHandle(hdbc): <528285696> > > > ERROR: SQLConnect: <65535> > > > ERROR: SQLAlloc(Prepare): <528351231> > > > ERROR: SQLPrepare: <528351230> > > > ERROR: SQLExecute: <528351230> > > > ERROR: SQLCancel: <528351230> > > > > > > Unhandled Exception: System.NotImplementedException: The requested >feature > > > is no > > > t yet implemented > > > in <0x0002b> 00 System.Data.Odbc.OdbcCommand:Dispose (bool) > > > in <0x00015> 00 System.ComponentModel.Component:Dispose () > > > in <0x00174> 00 Test.OdbcTest.OdbcTest:Main (string[]) > > > > > > I have a ODBC.net test named OdbcTest.cs that works on Windows XP > > > using .NET 1.1 Beta, but not Mono: > > > > > > using System; > > > using System.Data; > > > using System.Data.Odbc; > > > > > > namespace Test.OdbcTest > > > { > > > class OdbcTest > > > { > > > [STAThread] > > > static void Main(string[] args) > > > { > > > OdbcConnection dbcon = new OdbcConnection(); > > > // connection string to a Microsoft SQL Server 2000 database > > > dbcon.ConnectionString = > > > "DRIVER={SQL Server};" + > > > "SERVER=(local);" + > > > "Trusted_connection=true;" + > > > "DATABASE=pubs;"; > > > > > > dbcon.Open(); > > > > > > OdbcCommand dbcmd = new OdbcCommand(); > > > dbcmd.Connection = dbcon; > > > dbcmd.CommandType = CommandType.Text; > > > dbcmd.CommandText = "SELECT lname FROM employee"; > > > > > > OdbcDataReader reader; > > > reader = (OdbcDataReader) dbcmd.ExecuteReader(); > > > > > > while(reader.Read()) { > > > Console.WriteLine("Last Name: " + reader[0].ToString()); > > > } > > > reader.Close(); > > > dbcmd.Dispose(); > > > dbcon.Close(); > > > } > > > } > > > } > > > > > > > > > > > > _______________________________________________ > > > Mono-list maillist - Mono-list@ximian.com > > > http://lists.ximian.com/mailman/listinfo/mono-list > > > > > > > _______________________________________________ > > Mono-list maillist - Mono-list@ximian.com > > http://lists.ximian.com/mailman/listinfo/mono-list > > > > >_______________________________________________ >Mono-list maillist - Mono-list@ximian.com >http://lists.ximian.com/mailman/listinfo/mono-list > > >_______________________________________________ >Mono-list maillist - Mono-list@ximian.com >http://lists.ximian.com/mailman/listinfo/mono-list _________________________________________________________________ Send and receive Hotmail on your mobile device: http://mobile.msn.com From brianlritchie@hotmail.com Sat Oct 12 08:07:24 2002 From: brianlritchie@hotmail.com (Brian Ritchie) Date: Sat, 12 Oct 2002 03:07:24 -0400 Subject: [Mono-list] ODBC.NET Provider on Windows Message-ID: Thanks for the info...I should have known you guys would already have this figured out :-) >From: "Daniel Morgan" >To: "Brian Ritchie" , >Subject: RE: [Mono-list] ODBC.NET Provider on Windows >Date: Sat, 12 Oct 2002 02:19:17 -0400 > >The mono module in cvs in directory data, there is a file config.in, you >will see something like: > > > > > > > > >Add the following line: > > >In you DllImport where you have "libodbc", use "odbc32.dll" instead. > >On Windows, the mono runtime will use "odbc32.dll" while on on Linux the >mono runtime will use "libodbc.so" based on the config file and what you >use >in your DllImport. > >-----Original Message----- >From: Brian Ritchie [mailto:brianlritchie@hotmail.com] >Sent: Saturday, October 12, 2002 1:58 AM >To: danmorg@sc.rr.com; mono-list@ximian.com >Subject: RE: [Mono-list] ODBC.NET Provider on Windows > > >Great news!! > >I'm "power-leveling" the odbc code... >- I've jacked in the transaction objects >- I'm straightening out all of the SQL data type mappings. >- DBNull works >- I've implemented the Cancel method > >Do we have a #define to force conditional compilation on Linux/Windows? >I'd >like to setup the libodbc to point at odbc32 on windows. Or is there a >better way? > >I'll be checking this stuff in this weekend. > >Brian > > > >From: "Daniel Morgan" > >To: "Brian Ritchie" , "Mono-List" > > > >Subject: RE: [Mono-list] ODBC.NET Provider on Windows > >Date: Fri, 11 Oct 2002 22:53:16 -0400 > > > >Brian, > > > >It works on Windows too!!!! > > > >I compiled and ran the OdbcTest on .NET 1.1 beta on Windows and on Mono >on > >Windows. It works on both. I had to use a DSN and change something in >my > >DSN in ODBC Sources in the Control Panel. > >However, I made the authentication set to SQL Server (not NT) and set my > >default database to pubs. > > > > dbcon.ConnectionString = > > "DSN=LocalServer;UID=sa;PWD="; > > > >DanielMorgan@DANPC ~/mono/mcs/class/System.Data/Test > >$ mcs OdbcTest.cs -r System.Data.dll > >Compilation succeeded > > > >DanielMorgan@DANPC ~/mono/mcs/class/System.Data/Test > >$ mono OdbcTest.exe > >ODBCInit Complete. > >WARNING: Unknown type 0 > >Last Name: Cruz > > > > > > > >Last Name: Roulet > > > > > > > >Last Name: Devon > > > > > > > >Last Name: Domingues > > > > > > > >Last Name: Hernadez > > > > > > > >Last Name: Schmitt > > > > > > > >Last Name: Tonini > > > > > > > >Last Name: Roel > > > > > > > >Last Name: Lincoln > > > > > > > >Last Name: Chang > > > > > > > >Last Name: Thomas > > > > > > > >Last Name: Bennett > > > > > > > >Last Name: Nagy > > > > > > > >Last Name: Snyder > > > > > > > >Last Name: Labrune > > > > > > > >Last Name: Josephs > > > > > > > >Last Name: Jablonski > > > > > > > >Last Name: Brown > > > > > > > >Last Name: Lebihan > > > > > > > >Last Name: Larsson > > > > > > > >Last Name: Pereira > > > > > > > >Last Name: Rance > > > > > > > >Last Name: Paolino > > > > > > > >Last Name: Smith > > > > > > > >Last Name: Sommer > > > > > > > >Last Name: Karttunen > > > > > > > >Last Name: Pontes > > > > > > > >Last Name: Saveley > > > > > > > >Last Name: McKenna > > > > > > > >Last Name: Ibsen > > > > > > > >Last Name: Franken > > > > > > > >Last Name: Accorti > > > > > > > >Last Name: Koskitalo > > > > > > > >Last Name: Afonso > > > > > > > >Last Name: Parente > > > > > > > >Last Name: Cramer > > > > > > > >Last Name: Henriot > > > > > > > >Last Name: Mendel > > > > > > > >Last Name: Muller > > > > > > > >Last Name: Ottlieb > > > > > > > >Last Name: O'Rourke > > > > > > > >Last Name: Ashworth > > > > > > > >Last Name: Latimer > > > > > > > > > >Unhandled Exception: System.NotImplementedException: The requested >feature > >is no > >t yet implemented > >in <0x0002b> 00 System.Data.Odbc.OdbcCommand:Dispose (bool) > >in <0x00015> 00 System.ComponentModel.Component:Dispose () > >in <0x00174> 00 Test.OdbcTest.OdbcTest:Main (string[]) > > > > > >-----Original Message----- > >From: mono-list-admin@ximian.com [mailto:mono-list-admin@ximian.com]On > >Behalf Of Daniel Morgan > >Sent: Friday, October 11, 2002 11:18 AM > >To: Brian Ritchie; Mono-List > >Subject: RE: [Mono-list] ODBC.NET Provider on Windows > > > > > >Yes, it got me further, I still have a problem. However, I think you >said > >System.Data.Odbc does not have support for DSN-less connections yet. > > > >This is what I get now: > > > >DanielMorgan@DANPC ~/mono/mcs/class/System.Data/Test > >$ mono OdbcTest.exe > >ODBCInit Complete. > >ERROR: SQLConnect: > >ERROR: SQLAlloc(Prepare): > >ERROR: SQLPrepare: > >ERROR: SQLExecute: > >ERROR: SQLCancel: > > > >Unhandled Exception: System.NotImplementedException: The requested >feature > >is no > >t yet implemented > >in <0x0002b> 00 System.Data.Odbc.OdbcCommand:Dispose (bool) > >in <0x00015> 00 System.ComponentModel.Component:Dispose () > >in <0x00174> 00 Test.OdbcTest.OdbcTest:Main (string[]) > > > > > >-----Original Message----- > >From: Brian Ritchie [mailto:brianlritchie@hotmail.com] > >Sent: Friday, October 11, 2002 10:28 AM > >To: Daniel Morgan; Mono-List > >Subject: Re: [Mono-list] ODBC.NET Provider on Windows > > > > > >Here's the fix... > > > >In libodbc.cs, the OdbcReturn enum needs to be a short. > > > >internal enum OdbcReturn : short { > >Error = -1, > > > >InvalidHandle = -2, > > > >StillExecuting = 2, > > > >NeedData = 99, > > > >Success = 0, > > > >SuccessWithInfo = 1 > > > >} > > > >Let me know if this works for you, > > > >Brian > > > >----- Original Message ----- > >From: "Brian Ritchie" > >To: "Daniel Morgan" ; "Mono-List" > > >Sent: Friday, October 11, 2002 9:17 AM > >Subject: Re: [Mono-list] ODBC.NET Provider on Windows > > > > > > > Guys, > > > > > > I'm able to duplicate the problem. The very first call into odbc32 is > > > failing. It is a pretty basic call...it only allocates the first > >handle. > > > So, it appears to be some sort of interop problem with the dll. I'm > >still > > > checking into it. Let me know if you have any thoughts. > > > > > > Brian > > > > > > ----- Original Message ----- > > > From: "Daniel Morgan" > > > To: "Mono-List" > > > Sent: Friday, October 11, 2002 3:49 AM > > > Subject: [Mono-list] ODBC.NET Provider on Windows > > > > > > > > > > Rodrigo and Brian > > > > > > > > I have tried to get the Odbc.net provider to use Microsoft Window's > >native > > > > ODBC library which is odbc32.dll by changing the DllImport from > >"libodbc" > > > to > > > > "odbc32". The library apparently loads, > > > > but I don't know what the errors are for. > > > > > > > > Any ideas? > > > > > > > > This is the results I got: > > > > > > > > DanielMorgan@DANPC ~/mono/mcs/class/System.Data/Test > > > > $ mono OdbcTest.exe > > > > ERROR: SQLAllocHandle: <528285696> > > > > ERROR: SQLSetEnvAttr: <528285696> > > > > ODBCInit Complete. > > > > ERROR: SQLAllocHandle(hdbc): <528285696> > > > > ERROR: SQLConnect: <65535> > > > > ERROR: SQLAlloc(Prepare): <528351231> > > > > ERROR: SQLPrepare: <528351230> > > > > ERROR: SQLExecute: <528351230> > > > > ERROR: SQLCancel: <528351230> > > > > > > > > Unhandled Exception: System.NotImplementedException: The requested > >feature > > > > is no > > > > t yet implemented > > > > in <0x0002b> 00 System.Data.Odbc.OdbcCommand:Dispose (bool) > > > > in <0x00015> 00 System.ComponentModel.Component:Dispose () > > > > in <0x00174> 00 Test.OdbcTest.OdbcTest:Main (string[]) > > > > > > > > I have a ODBC.net test named OdbcTest.cs that works on Windows XP > > > > using .NET 1.1 Beta, but not Mono: > > > > > > > > using System; > > > > using System.Data; > > > > using System.Data.Odbc; > > > > > > > > namespace Test.OdbcTest > > > > { > > > > class OdbcTest > > > > { > > > > [STAThread] > > > > static void Main(string[] args) > > > > { > > > > OdbcConnection dbcon = new OdbcConnection(); > > > > // connection string to a Microsoft SQL Server 2000 database > > > > dbcon.ConnectionString = > > > > "DRIVER={SQL Server};" + > > > > "SERVER=(local);" + > > > > "Trusted_connection=true;" + > > > > "DATABASE=pubs;"; > > > > > > > > dbcon.Open(); > > > > > > > > OdbcCommand dbcmd = new OdbcCommand(); > > > > dbcmd.Connection = dbcon; > > > > dbcmd.CommandType = CommandType.Text; > > > > dbcmd.CommandText = "SELECT lname FROM employee"; > > > > > > > > OdbcDataReader reader; > > > > reader = (OdbcDataReader) dbcmd.ExecuteReader(); > > > > > > > > while(reader.Read()) { > > > > Console.WriteLine("Last Name: " + reader[0].ToString()); > > > > } > > > > reader.Close(); > > > > dbcmd.Dispose(); > > > > dbcon.Close(); > > > > } > > > > } > > > > } > > > > > > > > > > > > > > > > _______________________________________________ > > > > Mono-list maillist - Mono-list@ximian.com > > > > http://lists.ximian.com/mailman/listinfo/mono-list > > > > > > > > > > _______________________________________________ > > > Mono-list maillist - Mono-list@ximian.com > > > http://lists.ximian.com/mailman/listinfo/mono-list > > > > > > > > >_______________________________________________ > >Mono-list maillist - Mono-list@ximian.com > >http://lists.ximian.com/mailman/listinfo/mono-list > > > > > >_______________________________________________ > >Mono-list maillist - Mono-list@ximian.com > >http://lists.ximian.com/mailman/listinfo/mono-list > > > > >_________________________________________________________________ >Send and receive Hotmail on your mobile device: http://mobile.msn.com _________________________________________________________________ MSN Photos is the easiest way to share and print your photos: http://photos.msn.com/support/worldwide.aspx From vladimir@pobox.com Sat Oct 12 06:40:13 2002 From: vladimir@pobox.com (Vladimir Vukicevic) Date: 11 Oct 2002 22:40:13 -0700 Subject: [Mono-list] Re: [Gtk-sharp-list] ThreadNotify (A bug in Queue.Dequeue method) In-Reply-To: <1034391927.579.19.camel@hal> References: <1034231277.1305.16.camel@rain.vlad1.com> <1034275199.14577.97.camel@erandi.boston.ximian.com> <1034281481.1162.6.camel@rain.vlad1.com> <1034305925.547.9.camel@hal> <1034390679.597.12.camel@hal> <1034399701.1523.25.camel@rain.vlad1.com> <1034391927.579.19.camel@hal> Message-ID: <1034401213.1513.27.camel@rain.vlad1.com> On Fri, 2002-10-11 at 20:05, Pablo Baena wrote: > Followed your advise and tried this: *huh*. Weird, ok, i'm able to duplicate this. I'll take a look. Thanks, - Vlad -- Vladimir Vukicevic From andy@nobugs.org Sat Oct 12 10:49:52 2002 From: andy@nobugs.org (Andrew Birkett) Date: 12 Oct 2002 10:49:52 +0100 Subject: [Mono-list] ICryptoTransform In-Reply-To: <008601c271a0$67f6aa80$0301a8c0@einstein> References: <008601c271a0$67f6aa80$0301a8c0@einstein> Message-ID: <1034416194.21195.5.camel@localhost.localdomain> On Sat, 2002-10-12 at 04:35, Sebastien Pouliot wrote: > Andrew, are you still working on RC2 or Rijndael ? No, not just now. I'm currently trying to get sml.net (http://www.cl.cam.ac.uk/Research/TSG/SMLNET/) to work with mono. Andrew From bronson@rinspin.com Sat Oct 12 12:46:13 2002 From: bronson@rinspin.com (Scott Bronson) Date: 12 Oct 2002 04:46:13 -0700 Subject: [Mono-list] Help needed with XSLT transformations (documentation browser) In-Reply-To: <1034302508.14577.313.camel@erandi.boston.ximian.com> References: <1034302508.14577.313.camel@erandi.boston.ximian.com> Message-ID: <1034423173.1574.32.camel@emma> --=-XAUNgAovMeMFgTAa+vou Content-Type: text/plain Content-Transfer-Encoding: 7bit Here is a very, very, VERY basic start. Don't expect much. It's a super quick demo that shows a little of what's possible. If you tell me more about what you want to end up with, I can fill this in. Especially, if you tell me how you want to store the files, I can modify it to generate the correct links. My XSLT is somewhat green so suggestions are appreciated. - Scott On Thu, 2002-10-10 at 19:15, Miguel de Icaza wrote: > Hello guys, > > I was going to do this manually, but the more code I wrote, the more > I realized that this is the kind of thing that should really be done > with Xslt. But I do not know Xslt, nor "better practices" with Xslt, > and I fear that this will have a fair amount of duplication. > > I have attached the ECMA documentation for Type.xml, the idea of > what I want to achieve is to process the XML document and extract a > number of things from it: > > * The type page, something like: > > http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemtypeclasstopic.asp > > * The methods page, something like: > > http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemTypeMethodsTopic.asp > > * The fields page, something like: > > http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemTypeFieldsTopic.asp > > * The properties page, something like: > > http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemTypePropertiesTopic.asp > > Then the tricky ones, given a member (field, property, method, > constructor, operator, do not worry about matching the method signature > correctly, we will figure that out later), render the page with the > data. > > This is a sample for the property: > > http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemtypeclassassemblytopic.asp > > Can someone help? > > Miguel. > > > ---- > > > > > BCL > > mscorlib > [00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 ] > 1.0.x.x > none > > > CLSCompliantAttribute(true) > 0 > > > > This type is safe for multithreaded operations. > > > Provides information about a type. > > > The class is abstract, as is the > class and its subclasses , , , > and . and > are subclasses of . The runtime > provides non-public implementations of these classes. For example, is typed > as returning a object. The > returned object is actually an instance of the non-public runtime type that > implements . > A conforming CLI program which is written to run on only the Kernel profile > cannot subclass . This only applies > to conforming programs not conforming implementations. > A object that represents a type is unique; that is, two > object > references refer to the same object if and only if they represent the same type. > This allows for comparison of > objects using reference > equality. > > An instance of > can represent any one of the following > types: > > > > > Classes > > > > > Value types > > > > > Arrays > > > > > Interfaces > > > > > Pointers > > > > > Enumerations > > > The following table shows what members of a base class are returned by the > methods that return members of types, such as and > . > > > > Member Type > Static > Non-Static > > > Constructor > No > No > > > Field > No > Yes. A field is always > hide-by-name-and-signature. > > > Event > Not applicable > The common type system rule is > that the inheritance of an event is the same as that of > the accessors that implement the event. > Reflection treats events as hide-by-name-and-signature. > > > Method > No > Yes. A method (both virtual and non-virtual) > can be hide-by-name or hide-by-name-and-signature. > > > Nested Type > No > No > > > Property > Not applicable > The common type system > rule is that the inheritance is the same as that of the > accessors that implement the property. Reflection treats > properties as hide-by-name-and-signature. > > > > For reflection, properties and events are hide-by-name-and-signature. If a > property has both a get and a set accessor in the base class, but the derived > class has only a get accessor, the derived class property hides the base class > property, and the setter on the base class will not be accessible. > > > > > System.Object > System.Reflection.MemberInfo > Reflection > > > > > > > > Field > > System.Object > > > > > Represents a missing value in the information. > > > This field is read-only. > Use the > field for invocation through reflection to ensure that a call will be made > with the default value of a parameter as specified in the metadata. If the field is specified for a > parameter value and there is no default value for that parameter, a is > thrown. > > > 1 > Reflection > > > > > Field > > System.Char > > > > > Specifies the character that separates elements in the fully qualified name > of a > . > > > This field is read-only. > > > 1 > Reflection > > > > > Field > > System.Type > > > > > Returns an empty array of type . > > > This field is read-only. > The empty array returned by this field is used to specify that > lookup methods in the class, such as and , > search for members that do not take parameters. For example, to locate the public instance constructor that takes no > parameters, invoke ( | , , , > ). > > > 1 > Reflection > > > > > Method > > System.Object > > > > > > > > > > > > > > Invokes or > accesses a member defined on the type represented by the current instance > that matches the specified binding criteria. > > > A containing the name of the constructor or method to invoke, or property or field to access. If the type represented by the current instance has a default member, specify to invoke that member. For more information on default members, see . > > > A bitwise combination of values that control the binding process. If zero is specified, | is used by default. > > A on which to invoke the member that matches the other specified criteria. If the matching member is , this parameter is ignored. > An array of objects containing the arguments to pass to the member to be invoked. The elements of this array are of the same number and in the same order by assignment-compatible type as specified by the contract of the member to be bound if and only if is . If is not , the order of the elements in corresponds to the order of the parameters specified in . Specify an empty array or for a member that takes no parameters. > > The only defined value for this parameter is . > > > The only defined value for this parameter is . > > An array of objects containing the names of the parameters to which the values in are passed. These names are processed in a case-sensitive manner and have a one-to-one correspondence with the elements of . Specify an empty array or for a member that takes no parameters. Specify to have this parameter ignored. > > A > containing the return value of the invoked or accessed member. If the member > does not have a return value, returns a containing . > > > > is . > > > > has more than one dimension. > -or- > > is not a valid value. > -or- > The member to be invoked is a constructor and is not specified in . > -or- > The member to be invoked is a method that is not a type initializer or instance constructor, and is not specified in . > -or- > The member to be accessed is a field, and neither nor is specified in . > -or- > The member to be accessed is a property, and neither nor is specified in . > -or- > > contains and at least one of , , , , or . > -or- > > contains both and . > -or- > > contains both and . > -or- > > contains and at least one of or . > -or- > > contains and has more than one element. > -or- > > .Length > .Length . > -or- > At least one element in is . > -or- > At least one element in is not assignment-compatible with the corresponding parameter in . > > A field or property matching the specified criteria was not found. > A method matching the specified criteria cannot be found. > The requested member is non-public and the caller does not have the required permission. > The member matching the specified criteria cannot be invoked on . > The member matching the specified criteria threw an exception. > More than one member matches the specified criteria. > > > calls a constructor or a method , gets or sets a property , gets or sets a field, or gets or sets an element of an array. > The binder finds all of the matching members. These > members are found based upon the type of binding specified by . The is > responsible for selecting the method to be invoked. The default binder selects > the most specific match. The set of members is then filtered by name, number of > arguments, and a set of search modifiers defined in the binder. After the member is selected, it is invoked or accessed. > Accessibility is checked at that point. Access restrictions are ignored for fully trusted code; that is, private constructors, methods, fields, and properties can be accessed and invoked via reflection whenever the code is fully trusted. > The following are used to define which > members to include in the search: > > > > Specify either or > to get a return value other than . > > > > Specify to include public members in > the search. > > > > Specify to include non-public members > (that is, private and protected members) in the search. > > > > Specify to include > static members declared in ancestors in the search. > > > The following values can be used to change how the > search works: > > > > to search only the members > declared in the type, not members that were simply inherited. > > > > to ignore the case of > . > > > > For more information, see . > > > Each parameter in the array is assigned the value in the > corresponding element in the array. If the length of is > greater than the length of , the remaining argument values > are passed in order. > A member will be found only > if the number of parameters in the member declaration equals the number of > arguments in the args array (unless default arguments are defined on the > member). Also, The type of each argument is required to be convertible by > the binder to the type > of the parameter. > It is required that the caller specify values for as > follows: > > > > Action > BindingFlags > > > Invoke a constructor. > > . This > flag is not valid with the other flags in this table. If this flag is > specified, is ignored. > > > Invoke a method. > > . This > flag if not valid with , , or . > > > Define a field value. > > . This > flag is not valid with , , or . > > > Return a field value. > > . This > flag is not valid with , , or . > > > Set a property. > > . This > flag is not valid with , , or . > > > Get a property. > > . This > flag is not valid with , , or . > > > > > For more information, see . > > > > > can be used to invoke methods with > parameters that have default values. To bind to these methods, must be specified. For a parameter that has a > default value, the caller can supply a value or supply > > to use the default value. > > can be used to set a field to a > particular value by specifying . For example, to set a public instance field named F on class C, where F is a string, the value is set using the following statement: > > typeof(C).InvokeMember("F", BindingFlags.SetField, null, C, new Object{ > "strings new value"}, null, null, null); > > A string array F can be initialized as follows: > > typeof(C).InvokeMember("F", BindingFlags.SetField, null, C, new Object{new > String[]{"a","z","c","d"}, null, null, null); > > Use to set the value of an element in an array by specifying the index of the value and the new value for the element as follows: > > typeof(C).InvokeMember("F", BindingFlags.SetField, null, C, new Object{1, > "b"}, null, null, null); > > The preceding statement changes "z" in array > F to "b". > > > Requires permission to retrieve information on non-public members of types in loaded assemblies. See . > > The following example demonstrates the use of to > construct a , obtain its property, invoke on it, and > then set its value using the field. > using System; > using System.Reflection; > > class InvokeMemberExample > { > static void Main(string[] args) > { > // Create the parameter arrays that will > // be passed to InvokeMember. > char[] cAry = > new char[] {'A',' ','s','t','r','i','n','g'}; > object[] oAry = new object[] {cAry, 0, cAry.Length}; > > Type t = typeof(string); > > // Invoke the constructor of a string. > string str = > (string)t.InvokeMember(null, BindingFlags.Instance | > BindingFlags.Public | BindingFlags.CreateInstance, null, > null, oAry, null, null, null); > Console.WriteLine("The string is \"{0}\".", str); > > // Access a property of the string. > int i = > (int) t.InvokeMember("Length", BindingFlags.Instance | > BindingFlags.Public | BindingFlags.GetProperty, null, > str, null, null, null, null); > Console.WriteLine("The length of the string is {0}.", i); > > // Invoke a method on the string. > string newStr = "new "; > object[] oAry2 = new Object[] {2, newStr}; > str = (string) t.InvokeMember("Insert", BindingFlags.Instance | > BindingFlags.Public | BindingFlags.InvokeMethod, null, str, > oAry2, null, null, null); > Console.WriteLine("The modified string is \"{0}\".", str); > > // Access a field of the string. > str = (string) t.InvokeMember("Empty", BindingFlags.Static | > BindingFlags.Public | BindingFlags.GetField, null, str, > null); > Console.WriteLine("The empty string is \"{0}\".", str); > > } > } > > The output is > > The string is "A string". > The length of the string is 8. > The modified string is "A new string" > The empty string is "". > > > > 1 > Reflection > > > > > Method > > System.Reflection.MemberInfo[] > > > > > > > Returns an array of objects that reflect the members that are > defined in the type represented by the current instance and match the specified > binding constraints. > > > A bitwise combination of values that control the binding process. If zero is specified, this method returns . > > > An array of objects that reflect the members > defined in the type represented by the current instance that match the > constraints of . If no members match these constraints, > returns an empty array. If the type represented by the current instance is from > a loaded assembly and the caller does not have sufficient permission to reflect > on non-public objects in loaded assemblies, returns only public members. > > > The following are used to define which > members to include in the search: > > > > > Specify either or > to get a return value other than . > > > > > Specify to include public members in > the search. > > > > > Specify to include non-public members > (that is, private and protected members) in the search. > > > > > Specify to include > static members declared in ancestors in the search. > > > The following values can be used to change how the > search works: > > > > to search only the members > declared in the type, not members that were simply inherited. > > > > For more information, see . > > > As described above. > > > Requires permission to retrieve information on non-public members of types in loaded assemblies. See . > > 1 > Reflection > > > > > Method > > System.Reflection.MemberInfo[] > > > > > > > > Returns an array of objects that reflect the members defined in > the type represented by the current instance that have the specified name > and match the specified binding constraints. > > A containing the name of the member to be returned. > > A bitwise combination of values that control the binding process. If zero is specified, this method returns . > > > An array of objects that reflect the members > named , are defined in the type represented by the current instance > and match the constraints of . > If no members match these constraints, returns an empty array. > If the selected member is non-public, the type reflected by the current instance is from a > loaded assembly and the caller does not have sufficient permission to reflect on > non-public objects in loaded assemblies, returns . > > > is . > > The following are used to define which > members to include in the search: > > > > Specify either or > to get a return value other than . > > > > Specify to include public members in > the search. > > > > Specify to include non-public members > (that is, private and protected members) in the search. > > > > Specify to include > static members declared in ancestors in the search. > > > The following values can be used to change how the > search works: > > > > to search only the members > declared in the type, not members that were simply inherited. > > > > to ignore the case of > . > > > > For more information, see . > > > As described above. > > > Requires permission to retrieve information on non-public members of types in loaded assemblies. See . > > 1 > Reflection > > > > > Method > > System.Reflection.PropertyInfo[] > > > > > > > Returns an array of objects that reflect the properties > defined for the type represented by the current instance that match the specified > binding constraints. > > > A bitwise combination of values that control the binding process. If zero is specified, this method returns . > > > An array of objects that reflect the properties > defined in the type represented by the current instance and match the > constraints of . If no matching properties are found, > returns an empty array. If the type represented by the current instance is from > a loaded assembly and the caller does not have permission to reflect on > non-public objects in loaded assemblies, returns only public properties. > > > The following are used to define which > members to include in the search: > > > > > Specify either or > to get a return value other than . > > > > > Specify to include public members in > the search. > > > > > Specify to include non-public members > (that is, private and protected members) in the search. > > > > > Specify to include > static members declared in ancestors in the search. > > > The following values can be used to change how the > search works: > > > > to search only the members > declared in the type, not members that were simply inherited. > > > > For more information, see . > > > A property is considered by > reflection to be if it has at least one accessor that is > . Otherwise, the property is not > . > > > Requires permission to retrieve information on non-public members of types in loaded assemblies. See . > > 1 > Reflection > > > > > Method > > System.Reflection.PropertyInfo > > > > > > > > > > > > Returns a object that reflects the property > defined in the type represented by the current instance that matches the specified search > criteria . > > A containing the name of the property to be returned. > > A bitwise combination of values that control the binding process. If zero is specified, this method returns . > > > A object that defines a set of properties and enables the binding, coercion of argument types, and invocation of members using reflection. Specify to use the . > > A object that represents the type of the property to be returned. > > An array of objects. The elements in the array are of the same number, in the same order, and represent the same types as the parameters for the indexer to be returned. Specify to obtain a property that is not indexed. > > The only defined value for this parameter is . > > A object > reflecting the property that is defined in the type represented by the > current instance and matches the specified criteria. If no matching property is > found, returns . If the type reflected by the current > instance is contained in a loaded assembly, the property that matches the > specified criteria is not public, and the caller does not have sufficient > permission, returns . > > More than one property matching the specified criteria was found. > > > or is , or at least one of the elements in is . > > > > has more than one dimension. > > > The following are used to define which > members to include in the search: > > > > > Specify either or > to get a return value other than . > > > > > Specify to include public members in > the search. > > > > > Specify to include non-public members > (that is, private and protected members) in the search. > > > > > Specify to include > static members declared in ancestors in the search. > > > The following values can be used to change how the > search works: > > > > to search only the members > declared in the type, not members that were simply inherited. > > > > to ignore the case of > . > > > > For more information, see . > > This version of is equivalent to (, , , > , , ). > The search for is case-sensitive. > Different programming languages use different syntax to > specify indexed properties. Internally, this property is referred to by the name > "Item" in the metadata. Therefore, any attempt to retrieve an indexed property > using reflection is required to specify this internal > name in order for the to be returned correctly. > > Requires permission to retrieve information on non-public members of types in loaded assemblies. See . > > 1 > Reflection > > > > > Method > > System.Reflection.PropertyInfo > > > > > > > > Returns a object that reflects the property defined > in the type represented by the current instance that matches the specified search > criteria. > > A containing the name of the property to be returned. > > A bitwise combination of values that control the binding process. If zero is specified, this method returns . > > > A > object reflecting the property defined in the type represented by > the current instance that matches the specified criteria. If no matching property is > found, returns . If the type reflected by the current > instance is contained in a loaded assembly, the property that matches the > specified criteria is not public, and the caller does not have sufficient > permission, returns . > > More than one property matching the specified criteria was found. > > > is . > > > The following are used to define which > members to include in the search: > > > > > Specify either or > to get a return value other than . > > > > > Specify to include public members in > the search. > > > > > Specify to include non-public members > (that is, private and protected members) in the search. > > > > > Specify to include > static members declared in ancestors in the search. > > > The following values can be used to change how the > search works: > > > > to search only the members > declared in the type, not members that were simply inherited. > > > > to ignore the case of > . > > > > For more information, see . > > This version of is equivalent to (, , > , , , > ). > The search for is case-sensitive. > > Requires permission to retrieve information on non-public members of types in loaded assemblies. See . > > 1 > Reflection > > > > > Method > > System.Reflection.FieldInfo[] > > > > > > > Returns an array of objects that reflect the fields that are > defined in the type represented by the current instance and match the specified > binding constraints. > > > A bitwise combination of values that control the binding process. If zero is specified, this method returns . > > > An array of objects that reflect the fields that are > defined in the type represented by the current instance and match the > constraints of . If no fields match > these constraints, returns an empty array. If the type represented by the > current instance is from a loaded assembly and the caller does not have > sufficient permission to reflect on non-public objects in loaded assemblies, > returns only public fields. > > > The following are used to define which > fields to include in the search: > > > > > Specify either or in > order to get a return value other than . > > > > > Specify to include public fields in > the search. > > > > > Specify to include non-public fields > (that is, private and protected fields) in the search. > > > > > Specify to include > static members declared in ancestors in the search. > > > The following values can be used to change how the > search works: > > > > to search only the fields > declared in the type, not fields that were simply inherited. > > > > For more information, see . > > > As described above. > > > Requires permission to retrieve information on non-public members of a type in loaded assemblies. See . > > 1 > Reflection > > > > > Method > > System.Reflection.FieldInfo > > > > > > > > Returns a object reflecting the field that has the > specified name, is defined in the type represented by the current instance, and > matches the specified binding constraints. > > A containing the name of the field to be returned. > > A bitwise combination of values that control the binding process. If zero is specified, this method returns . > > > A object reflecting the field that is named > , is defined in the type represented by the current instance, and > matches the constraints of . If a field matching these criteria > cannot be found, returns . If the field is not public, the current type is > from a loaded assembly, and the caller does not have sufficient permission, > returns . > > > is . > > The following are used to define which > fields to include in the search: > > > > Specify either or > to get a return value other than . > > > > Specify to include public fields in > the search. > > > > Specify to include non-public fields > (that is, private and protected fields) in the search. > > > > Specify to > include static members declared in ancestors in the search. > > > The following values can be used to change how the > search works: > > > > to search only the fields > declared in the type, not fields that were simply inherited. > > > > to ignore the case of > . > > > > For more information, see . > > > As described above. > > > Requires permission to retrieve information on non-public members of types in loaded assemblies. See . > > 1 > Reflection > > > > > Method > > System.Reflection.MethodInfo[] > > > > > > > Returns an array of objects that reflect the methods defined in the type > represented by the current instance that match the specified binding constraints. > > > A bitwise combination of values that control the binding process. If zero is specified, this method returns . > > > An array of objects reflecting the methods defined in the type > represented by the current instance that match the constraints of > . If no such methods found, returns an > empty array. If the type represented by the current instance is from a loaded > assembly and the caller does not have permission to reflect on non-public > objects in loaded assemblies, returns only public methods. > > > The following are used to define which > members to include in the search: > > > > > Specify either or > to get a return value other than . > > > > > Specify to include public members in > the search. > > > > > Specify to include non-public members > (that is, private and protected members) in the search. > > > > > Specify to include > static members declared in ancestors in the search. > > > The following values can be used to change how the > search works: > > > > to search only the members > declared in the type, not members that were simply inherited. > > > > For more information, see . > > > As described above. > > > Requires permission to retrieve information on non-public members of types in loaded assemblies. See . > > 1 > Reflection > > > > > Method > > System.Reflection.MethodInfo > > > > > > > > Returns a object that reflects the method that has the > specified name and is defined in the type represented by the current > instance. > > A containing the name of the method to be returned. > > A bitwise combination of values that control the binding process. If zero is specified, this method returns . > > > A object > that reflects the method that is defined > in the type represented by the current instance and matches the specified > criteria, if found; otherwise, . > > More than one method matching the specified criteria was found. > > is . > > The following are used to define which > members to include in the search: > > > > > Specify either or > to get a return value other than . > > > > > Specify to include public members in > the search. > > > > > Specify to include non-public members > (that is, private and protected members) in the search. > > > > > Specify to include > static members declared in ancestors in the search. > > > The following values can be used to change how the > search works: > > > > to search only the members > declared in the type, not members that were simply inherited. > > > > to ignore the case of > . > > > > For more information, see . > > This version of is equivalent to (, , > , , ). > > Requires permission to retrieve information on non-public members of types in loaded assemblies. See . > > 1 > Reflection > > > > > Method > > System.Reflection.MethodInfo > > > > > > > > > > > Returns a object that reflects the method that matches the > specified criteria and is defined in the type represented by the current > instance. > > A containing the name of the method to be returned. > > A bitwise combination of values that control the binding process. If zero is specified, this method returns . > > > A object that defines a set of properties and enables the binding, coercion of argument types, and invocation of members using reflection. Specify to use the . > > > An array of objects. The elements in the array are of the same number, in the same order, and represent the same types as the parameters for the method to be returned. > > The only defined value for this parameter is . > > A object that reflects > the method defined in the type represented by the current instance that > matches the specified criteria. If no method matching the specified criteria is found, returns > . If the > selected method is non-public, the type reflected by > the current instance is from a loaded assembly, and the caller > does not have permission to reflect on non-public objects in loaded assemblies, > returns . > > More than one method matching the specified criteria was found. > > > or is . > -or- > At least one of the elements in is . > > > > has more than one dimension. > > > The following are used to define which > members to include in the search: > > > > > Specify either or > to get a return value other than . > > > > > Specify to include public members in > the search. > > > > > Specify to include non-public members > (that is, private and protected members) in the search. > > > > > Specify to include > static members declared in ancestors in the search. > > > The following values can be used to change how the > search works: > > > > to search only the members > declared in the type, not members that were simply inherited. > > > > to ignore the case of > . > > > > For more information, see . > > > Requires permission to retrieve information on non-public members of types in loaded assemblies. See . > > 1 > Reflection > > > > > Method > > System.Boolean > > > > > > > Determines whether an instance of the current can be assigned > from an instance of the specified . > > > The to compare with the current . > > > if is a null reference. > > if one or more of the following > statements are true; otherwise . > > > > > If and the current represent the same type. > > > > > If the current is in the inheritance hierarchy of . > > > > > If the current is an interface and supports that > interface. > > > > > > The following example demonstrates the > method using arrays. > using System; > class ArrayTypeTest { > public static void Main() { > int i = 1; > int [] array10 = new int [10]; > int [] array2 = new int[2]; > int [,]array22 = new int[2,2]; > int [,]array24 = new int[2,4]; > int [,,]array333 = new int[3,3,3]; > Type array10Type = array10.GetType(); > Type array2Type = array2.GetType(); > Type array22Type = array22.GetType(); > Type array24Type = array24.GetType(); > Type array333Type = array333.GetType(); > > // If X and Y are not both arrays, then false > Console.WriteLine("int[2] is assignable from int? {0} ", array2Type.IsAssignableFrom(i.GetType())); > // If X and Y have same type and rank, then true. > Console.WriteLine("int[2] is assignable from int[10]? {0} ", array2Type.IsAssignableFrom(array10Type)); > Console.WriteLine("int[2,2] is assignable from int[2,4]? {0}", array22Type.IsAssignableFrom(array24Type)); > Console.WriteLine("int[2,4] is assignable from int[2,2]? {0}", array24Type.IsAssignableFrom(array22Type)); > Console.WriteLine(""); > // If X and Y do not have the same rank, then false. > Console.WriteLine("int[2,2] is assignable from int[10]? {0}", array22Type.IsAssignableFrom(array10Type)); > Console.WriteLine("int[2,2] is assignable from int[3,3,3]? {0}", array22Type.IsAssignableFrom(array333Type)); > Console.WriteLine("int[3,3,3] is assignable from int[2,2]? {0}", array333Type.IsAssignableFrom(array22Type)); > } > } > > The output is > > int[2] is assignable from int? False > int[2] is assignable from int[10]? True > int[2,2] is assignable from int[2,4]? True > int[2,4] is assignable from int[2,2]? True > int[2,2] is assignable from int[10]? False > int[2,2] is assignable from int[3,3,3]? False > int[3,3,3] is assignable from int[2,2]? False > > > > 0 > > > > > Method > > System.Boolean > > > > > > > Determines whether the specified object is an instance > of the current . > > > The object to compare with the current . > > > if either of the following > statements is true; otherwise . > > > > > > If the current is in the inheritance hierarchy of . > > > > > If the current is an interface and supports that > interface. > > > If is a null reference, returns . > > > > As described above. > > > > The following example demonstrates the > method. > using System; > public interface IFoo { } > public class MyClass : IFoo {} > public class MyDerivedClass : MyClass {} > class IsInstanceTest { > public static void Main() { > Type ifooType=typeof(IFoo); > MyClass mc = new MyClass(); > Type mcType = mc.GetType(); > MyClass mdc = new MyDerivedClass(); > Type mdcType = mdc.GetType(); > int [] array = new int [10]; > Type arrayType = typeof(Array); > Console.WriteLine("int[] is instance of Array? {0}", arrayType.IsInstanceOfType(array)); > Console.WriteLine("myclass instance is instance of MyClass? {0}", mcType.IsInstanceOfType(mc)); > Console.WriteLine("myderivedclass instance is instance of MyClass? {0}", mcType.IsInstanceOfType(mdc)); > Console.WriteLine("myclass instance is instance of IFoo? {0}", ifooType.IsInstanceOfType(mc)); > Console.WriteLine("myderivedclass instance is instance of IFoo? {0}", ifooType.IsInstanceOfType(mdc)); > } > } > > The output is > > int[] is instance of Array? True > myclass instance is instance of MyClass? True > myderivedclass instance is instance of MyClass? True > myclass instance is instance of IFoo? True > myderivedclass instance is instance of IFoo? True > > > > 0 > > > > > Method > > System.Boolean > > > > > > > Determines whether the current derives from the > specified . > > The to compare with the current . > > > if and the current > represent > classes, and the class represented by the current derives from the class represented by > ; otherwise . Returns if > and the current represent the same class. > > > The following example demonstrates the > method. > using System; > public interface IFoo { } > public interface IBar:IFoo{} > public class MyClass : IFoo {} > public class MyDerivedClass : MyClass {} > class IsSubclassTest { > public static void Main() { > Type ifooType = typeof(IFoo); > Type ibarType = typeof(IBar); > MyClass mc = new MyClass(); > Type mcType = mc.GetType(); > MyClass mdc = new MyDerivedClass(); > Type mdcType = mdc.GetType(); > int [] array = new int [10]; > Type arrayOfIntsType = array.GetType(); > Type arrayType = typeof(Array); > > Console.WriteLine("Array is subclass of int[]? {0}", arrayType.IsSubclassOf(arrayOfIntsType)); > Console.WriteLine("int [] is subclass of Array? {0}", arrayOfIntsType.IsSubclassOf(arrayType)); > Console.WriteLine("IFoo is subclass of IBar? {0}", ifooType.IsSubclassOf(ibarType)); > Console.WriteLine("myclass is subclass of MyClass? {0}", mcType.IsSubclassOf(mcType)); > Console.WriteLine("myderivedclass is subclass of MyClass? {0}", mdcType.IsSubclassOf(mcType)); > } > } > > The output is > > Array is subclass of int[]? False > int [] is subclass of Array? True > IFoo is subclass of IBar? False > myclass is subclass of MyClass? False > myderivedclass is subclass of MyClass? True > > > > 0 > > > > > Method > > System.Boolean > > > > > When overridden in a derived class, implements the property and > determines whether the current encompasses or > refers to another type; that is, > whether the current is an array, a pointer, or is passed by > reference. > > > > if the is an array, a pointer, or is passed by reference; otherwise, . > > > > For example, > ("System.Int32[]").HasElementTypeImpl returns > , but ("System.Int32").HasElementTypeImpl returns > . also returns for "System.Int32*" and "System.Int32&". > > > > 1 > Reflection > > > > > Method > > System.Type > > > > > Returns the element type of the current > . > > > A that represents > the type used to create the current instance if the current > instance represents an array, pointer, or an argument > passed by reference. Otherwise, returns > . > > > The following example demonstrates the > method. > using System; > class TestType { > public static void Main() { > int[] array = {1,2,3}; > Type t = array.GetType(); > Type t2 = t.GetElementType(); > Console.WriteLine("{0} element type is {1}",array, t2.ToString()); > > TestType newMe = new TestType(); > t = newMe.GetType(); > t2 = t.GetElementType(); > Console.WriteLine("{0} element type is {1}", newMe, t2==null? "null" : t2.ToString()); > } > } > > The output is > > System.Int32[] element type is System.Int32 > TestType element type is null > > > > 0 > > > > > Method > > System.Boolean > > > > > Reserved. > > > > > > > > This abstract method is required to be present for > legacy implementations. Conforming implementations are permitted to throw the > > as their implementation. > > > 1 > Reflection > > > > > Method > > System.Boolean > > > > > When overridden in a derived class, implements the property and determines whether the > is one of the primitive types. > > > > if the is one of the primitive types; otherwise, . > > > > This method > returns if the underlying type of the current instance is > one of the following: , , , , , , , , , , , and . > > > > 1 > Reflection > > > > > Method > > System.Boolean > > > > > When overridden in a derived class, implements the property and determines whether the > is a pointer. > > > > if the is a pointer; otherwise, . > > > > As described above. > > > > 1 > Reflection > > > > > Method > > System.Boolean > > > > > When overridden in a derived class, implements the > property and determines whether the is passed by reference. > > > > if the is passed by reference; otherwise, . > > > > As described above. > > > > 1 > Reflection > > > > > Method > > System.Boolean > > > > > When overridden in a derived class implements the property returning a > value that indicates whether > the type represented by the current instance is an array. > > > > if the is an array; otherwise, . > > > An instance of the class is required to return because it is an object, not an > array.As described above. > > > 1 > Reflection > > > > > Method > > System.Reflection.TypeAttributes > > > > > When overridden in a derived type implements the > property and returns the attributes specified for the type represented by the current instance. > > > A value that signifies the attributes of the > type represented by the current instance. > > > > This property is read-only. > This method returns a value that indicates the attributes set in > the metadata of the type represented by the current > instance. > > > Use this property to determine the > visibility, semantics, and layout format of the type represented by the > current. Also use this property to determine if the type represented by > the current instance has a special name. > > > > 1 > Reflection > > > > > Method > > System.Reflection.MemberInfo[] > > > > > Returns an array of objects that reflect the default members > defined in the type represented by the current instance. > > > An array of objects reflecting the default members of the > type represented by the current instance. If the type represented by the current > instance does not have any default members, returns an empty array. > > > > The members returned > by this method have the > attribute. > > > > 1 > Reflection > > > > > Method > > System.Type > > > > > > > > Returns a nested types defined in the type represented by the current instance that match the specified binding constraints. > > A containing the name of the nested type to return. Specify the unqualified name of the nested type. For example, for a type B nested within A, if typeA represents the type object for A, the correct invocation is typeA.GetNestedType("B"). > > A bitwise combination of values that control the binding process. If zero is specified, this method returns . > > > A object representing the nested type that > matches the specified criteria, if found; otherwise, . If the selected nested > type is non-public, the current instance represents a type contained in a loaded > assembly and the caller does not have sufficient permissions, returns > > . > > > is . > > The following are used to define which > members to include in the search: > > > > > Specify either or > to get a return value other than . > > > > > Specify to include public members in > the search. > > > > > Specify to include non-public members > (that is, private and protected members) in the search. > > > > > Specify to include > static members declared in ancestors in the search. > > > The following values can be used to change how the > search works: > > > > to search only the members > declared in the type, not members that were simply inherited. > > > > to ignore the case of > . > > > > For more information, see . > > > Requires permission to retrieve information on non-public members of types in loaded assemblies. See . > > 1 > Reflection > > > > > Method > > System.Type[] > > > > > > > Returns an array containing the nested types defined in > the type represented by the current instance that match the specified binding constraints. > > > A bitwise combination of values that control the binding process. If zero is specified, this method returns . > > > An array of objects representing all types nested within the type > represented by the current instance that match the specified binding constraints, > if any. Otherwise, returns an empty array. If the type reflected by the current instance is > contained in a loaded assembly, the type that matches the specified criteria is > not public, and the caller does not have sufficient permission, returns only > public types. > > > The following are used to define which > members to include in the search: > > > > > Specify to include public members in > the search. > > > > > Specify to include non-public members > (that is, private and protected members) in the search. > > > > > Specify to include > static members declared in ancestors in the search. > > > The following values can be used to change how the > search works: > > > > to search only the members > declared in the type, not members that were simply inherited. > > > > For more information, see . > > > Requires permission to retrieve information on non-public members of types in loaded assemblies. See . > > 1 > Reflection > > > > > Method > > System.Reflection.PropertyInfo > > > > > > > > > > > > When overridden in a derived class implements the > > method and returns a object that reflects the property defined > in the type represented by the current instance that matches the specified search > criteria. > > A containing the name of the property to be returned. > > A bitwise combination of values that control the binding process. If zero is specified, this method returns . > > > A object that defines a set of properties and enables the binding, coercion of argument types, and invocation of members using reflection. Specify to use the . > > A object that represents the type of the property to be returned. > > An array of objects. The elements in the array are of the same number, in the same order, and represent the same types as the parameters for the indexer to be returned. Specify to obtain a property that is not indexed. > > The only defined value for this parameter is . > > A object representing the property that matches the > specified search criteria, if found; otherwise, . If the type reflected by the current > instance is from a loaded assembly, the matching property is not > public, and the caller does not have permission to reflect on non-public > objects in loaded assemblies, returns . > > More than one property matching the specified criteria was found. > > > or is , or at least one of the elements in is . > > > > has more than one dimension. > > > The following are used to define which > members to include in the search: > > > > > Specify either or > to get a return value other than . > > > > > Specify to include public members in > the search. > > > > > Specify to include non-public members > (that is, private and protected members) in the search. > > > > > Specify to include > static members declared in ancestors in the search. > > > The following values can be used to change how the > search works: > > > > to search only the members > declared in the type, not members that were simply inherited. > > > > to ignore the case of > . > > > > For more information, see . > > > Different > programming languages use different syntax to specify indexed properties . > Internally, this property is referred to by the name "Item" in the metadata. > Therefore, any attempt to retrieve an indexed property using reflection is required to > specify this internal name in order for the to be returned correctly. > > > > Requires permission to retrieve information on non-public members of types in loaded assemblies. See . > > 1 > Reflection > > > > > Method > > System.Reflection.EventInfo[] > > > > > > > Returns an array of objects that reflect the events that are > defined in the type represented by the current instance and match the specified > binding constraints. > > > A bitwise combination of values that control the binding process. If zero is specified, this method returns null. > > > An array of objects that reflect the events that are > defined in the type represented by the current instance and match the > constraints of . If no events match > these constraints, returns an empty array. If the type reflected by the current > instance is from a loaded assembly and the caller does not have permission to > reflect on non-public objects in loaded assemblies, returns only public > events. > > > The following are used to define which > events to include in the search: > > > > > Specify either or > to get a return value other than . > > > > > Specify to include public events in > the search. > > > > > Specify to include non-public > events (that is, private and protected events) in the > search. > > > > For more information, see . > > > As described above. > > > Requires permission to retrieve information on non-public members of types in loaded assemblies. See . > > 1 > Reflection > > > > > Method > > System.Reflection.EventInfo[] > > > > > Returns an array of objects that reflect the public events > defined in the type represented by the current instance. > > > An array of objects that reflect the public events > defined in the type represented by the current instance. If no public events > are defined in the type represented by the current instance, returns an empty > array. > > > > As described above. > > > This version of is > equivalent to ( | | ). > > > > 1 > Reflection > > > > > Method > > System.Reflection.EventInfo > > > > > > > > Returns a object reflecting the event that has the > specified name, is defined in the type represented by the current instance, and > matches the specified binding constraints. > > A containing the name of the event to be returned. > > A bitwise combination of values that control the binding process. If zero is specified, this method returns null. > > > A object reflecting the event that is named > , is defined in the type represented by the current instance, and > matches the constraints of . If an event > matching these criteria is not found, returns . If the event is not > public, the current instance represents > a type from a loaded assembly, and the caller does not have sufficient > permission, returns . > > > is . > > The following are used to define which > events to include in the search: > > > > > Specify either or > to get a return value other than . > > > > > Specify to include public events in > the search. > > > > > Specify to include non-public > events(that is, private and protected events) in the search. > > > > Specify to include to include > static members declared in ancestors in the search. > > > The following value can be used to change how the > search works: > > > > to search only the events > declared on the type, not events that were simply inherited. > > > > For more information, see . > > > As described above. > > > Requires permission to retrieve information on non-public members of types in loaded assemblies. See . > > 1 > Reflection > > > > > Method > > System.Type[] > > > > > Returns all interfaces implemented or inherited by the > type represented by the current instance. > > > An array of objects representing the interfaces implemented or > inherited by the type represented by the current instance. If no interfaces are > found, returns an empty array. > > > 1 > Reflection > > > > > Method > > System.Type > > > > > > > > Returns the specified interface, > specifying whether to do a case-sensitive search. > > A containing the name of the interface to return. > > A where indicates that the name search is to be done case-insensitively, and performs a case-sensitive search. > > > A object representing > the interface with the specified name, implemented or inherited by the type > represented by the instance, if found; otherwise, . > > > is . > > 1 > Reflection > > > > > Method > > System.Reflection.ConstructorInfo[] > > > > > > > Returns an array of constructors defined in the type represented by the > current instance, under the specified binding constraints. > > > A bitwise combination of values that control the binding process. If zero is specified, this method returns . > > > An array of objects that reflect the constructors that > are defined in the type represented by the current instance and match the > constraints of . If and are specified, this array > includes the type initializer if it is defined. If no constructors meeting the > constraints of are defined in the type represented by the > current instance, returns an empty array. If the type represented by the current > instance is contained in a loaded assembly, the constructors that match the > specified criteria are not public, and the caller does not have sufficient > permission, returns . > > > The following are used to define which > constructors to include in the search: > > > > > Specify either or > to get a return value other than . > > > > > Specify to include public constructors > in the search. > > > > > Specify to include non-public > constructors (that is, private and protected constructors) in the > search. > > > > For more information, see . > > > As described above. > > > Requires permission to retrieve information on non-public members of types in loaded assemblies. See . > > 1 > Reflection > > > > > Method > > System.Int32 > > > > > Returns the number of dimensions in the current . > > > A containing the number of dimensions in the current > . > > The current is not an array. > > 0 > > > > > Method > > System.Int32 > > > > > Generates a hash code for the current instance. > > > A > containing the hash code for this instance. > > > The algorithm used to > generate the hash code is unspecified. > > This method > overrides > . > > > > 0 > > > > > Method > > System.String > > > > > Returns a representation of the current . > > > > Returns . > > > > This method > overrides > . > > > > 0 > > > > > Method > > System.Type > > > > > > > > > Returns the > with the specified name, optionally performing a case-sensitive search > and throwing an exception if an error occurs while loading the . > > A containing the name of the to return. > > A . Specify to throw a if an error occurs while loading the . Specify to ignore errors while loading the . > > > A . Specify to perform a case-insensitive search for Specify to perform a case-sensitive search for . > > > The with the specified name, if found; otherwise, . If the > requested type is non-public and the caller does not have permission to reflect non-public objects > outside the current assembly, this method returns . > > > is . > A type initializer was invoked and threw an exception. > > is and an error was encountered while loading the selected . > > > can be a simple > type name, a fully qualified name, or a complex name that includes an assembly > name. > returns a fully qualified type name including nested types > and the assembly name. > If includes only the name of the , this method searches in the > calling object's assembly, then in the mscorlib.dll assembly. If > > is fully qualified with the partial or complete assembly name, this > method searches in the specified assembly. > > > > > The following table shows calls to > for various types. > > > To Get > Use > > > An > unmanaged pointer to > > Type.GetType("MyType*") > > > > An > unmanaged pointer to a pointer to > > Type.GetType("MyType**") > > > > A > managed pointer > or > reference to > > Type.GetType("MyType&"). Note that unlike pointers, references are > limited to one level. > > > A parent class and a nested class > > Type.GetType("MyParentClass+MyNestedClass") > > > > A one-dimensional array with a lower bound of 0 > > Type.GetType("MyArray[]") > > > > A one-dimensional array with an unknown lower bound > > Type.GetType("MyArray[*]") > > > > An n-dimensional array > A comma (,) inside the brackets a total of n-1 > times. For example, System.Object[,,] represents a three-dimensional > > array. > > > A > two-dimensional array's array > > Type.GetType("MyArray[][]") > > > > A rectangular two-dimensional array with unknown lower bounds > > Type.GetType("MyArray[*,*]")or Type.GetType("MyArray[,]") > > > > > Requires permission to retrieve information on non-public members of types in loaded assemblies. See . > > 1 > Reflection > > > > > Method > > System.Type > > > > > > > > Returns the with the specified name, optionally throwing an > exception if an error occurs while loading the . > > A containing the case-sensitive name of the to return. > > A . Specify to throw a if an error occurs while loading the . Specify to ignore errors while loading the . > > > The with the specified name, if found; otherwise, . If the > requested type is non-public and the caller does not have permission to reflect non-public objects > outside the current assembly, this method returns . > > > is . > A type initializer was invoked and threw an exception. > > is and an error was encountered while loading the . > > This method is equivalent to (, , > ). > > can be a simple > type name, a fully qualified name, or a complex name that includes an assembly > name specification. If includes only the name of the , this method searches in the > calling object's assembly, then in the mscorlib.dll assembly. If > > is fully qualified with the partial or complete assembly name, this method > searches in the specified assembly. > > > can return a fully > qualified type name including nested types and the assembly name. For complete > details, see (, , ). > > > Requires permission to retrieve information on non-public objects. See > > 1 > Reflection > > > > > Method > > System.Type > > > > > > > Returns the with the specified name. > > A containing the case-sensitive name of the to return. > > The with the specified name, if found; otherwise, . If the > requested type is non-public and the caller does not have permission to reflect > non-public objects outside the current assembly, this method returns > . > > > is . > A type initializer was invoked and threw an exception. > > This method is equivalent to (, , > ). > > can be a simple > type name, a type name that includes a namespace, or a complex name that > includes an assembly name specification. If includes only the name of the , this method > searches in the calling object's assembly, then in the mscorlib.dll assembly. If > > is fully qualified with the partial or complete assembly name, this method > searches in the specified assembly. > > > can return a fully qualified type name including > nested types and the assembly name. For complete details, see (, , ). > > > Requires permission to retrieve information on non-public members of types in loaded assemblies. See . > > 1 > Reflection > > > > > Method > > > System.Object > > > > > > > > > > > > Invokes the specified member, using the specified binding constraints > and matching the specified argument list and culture. > > > A containing the name of the constructor or method to invoke, or property or field to access. If the type represented by the current instance has a default member, specify to invoke that member. For more information on default members, see . > > > A bitwise combination of values that control the binding process. If zero is specified, | is used by default. > > > A object that defines a set of properties and enables the binding, coercion of argument types, and invocation of members using reflection. Specify to use the . > > A on which to invoke the member that matches the other specified criteria. If the matching member is , this parameter is ignored. > An array of objects containing the arguments to pass to the member to be invoked. The elements of this array are of the same number and in the same order by assignment-compatible type as specified by the contract of the member to be bound. Specify an empty array or for a member that has no parameters. > > The only defined value for this parameter is . > > > A > containing the return value of the invoked member. If the invoked member does > not have a return value, returns a containing . > > > > > is . > > > > has more than one dimension. > -or- > > is not a valid value. > -or- > The member to be invoked is a constructor and is not specified in . > -or- > The member to be invoked is a method that is not a type initializer or instance constructor, and is not specified in . > -or- > The member to be accessed is a field, and neither nor is specified in . > -or- > The member to be accessed is a property, and neither nor is specified in . > -or- > > contains and at least one of , , , , or . > -or- > > contains both and . > -or- > > contains both and . > -or- > > contains and at least one of or . > -or- > > contains and has more than one element. > > A field or property matching the specified criteria was not found. > A method matching the specified criteria was not found. > The requested member is non-public and the caller does not have the required permission. > The member matching the specified criteria cannot be invoked on . > The member matching the specified criteria threw an exception. > More than one member matches the specified criteria. > > This version of is equivalent to ( > , , , , , > , , ). > > Requires permission to retrieve information on non-public members of types in loaded assemblies. See . > > For an example that demonstrates > , see ( > , , > , , [], [], , []). > > > > 1 > Reflection > > > > > Method > > > System.Object > > > > > > > > > > > Invokes the specified member, using the specified binding constraints and > matching the specified argument list. > > > A containing the name of the constructor or method to invoke, or property or field to access. If the type represented by the current instance has a default member, specify to invoke that member. For more information on default members, see . > > A bitwise combination of values that control the binding process. If zero is specified, | is used by default. > > A object that defines a set of properties and enables the binding, coercion of argument types, and invocation of members using reflection. Specify to use the . > > A on which to invoke the member that matches the other specified criteria. If the matching member is , this parameter is ignored. > An array of objects containing the arguments to pass to the member to be invoked. The elements of this array are of the same number and in the same order by assignment-compatible type as specified by the contract of the member to be bound. Specify an empty array or for a member that has no parameters. > > A > containing the return value of the invoked member. If the invoked member does > not have a return value, returns a containing . > > > > is . > > > > has more than one dimension. > -or- > > is not a valid value. > -or- > The member to be invoked is a constructor and is not specified in . > -or- > The member to be invoked is a method that is not a type initializer or instance constructor, and is not specified in . > -or- > The member to be accessed is a field, and neither nor is specified in . > -or- > The member to be accessed is a property, and neither nor is specified in . > -or- > > contains and at least one of , , , , or . > -or- > > contains both and . > -or- > > contains both and . > -or- > > contains and at least one of or . > -or- > > contains and has more than one element. > > A field or property matching the specified criteria was not found. > A method matching the specified criteria cannot be found. > The requested member is non-public and the caller does not have the required permission. > The member matching the specified criteria cannot be invoked on . > The member matching the specified criteria threw an exception. > More than one member matches the specified criteria. > > This version of is equivalent to (, , , > , , , , > ). > > For a demonstration of the use of > , see the example for ( > , , > , , [], [], , []). > > > Requires permission to retrieve information on non-public members of types in loaded assemblies. See . > > 1 > Reflection > > > > > Method > > System.RuntimeTypeHandle > > > > > > > Returns the handle for the of the specified object. > > The object for which to get the type handle. > > The for the of the specified . > > > The handle is valid only in the application domain in which it was obtained. > > > 1 > RuntimeInfrastructure > > > > > Method > > System.Type > > > > > > > Gets the referenced by the specified type handle. > > The object that refers to the desired . > > The referenced by the specified . > > > is . > The requested type is non-public and outside the current assembly, and the caller does not have the required permission. > A type initializer was invoked and threw an exception. > > The handles are valid only in the application domain in which they were obtained. > > Requires permission to retrieve information on non-public objects. See > > 1 > RuntimeInfrastructure > > > > > Method > > System.Reflection.ConstructorInfo > > > > > > > > > > Returns a constructor defined in the type represented by the current > instance. The parameters of the constructor match the specified argument types > and modifiers, under the specified binding constraints. > > > A bitwise combination of values that control the binding process. If zero is specified, this method returns null. > > > A object that defines a set of properties and enables the binding, coercion of argument types, and invocation of members using reflection. Specify to use the . > > > An array of objects. The elements in the array are of the same number, in the same order, and represent the same types as the parameters for the constructor to be returned. > > The only defined value for this parameter is . > > A object that reflects the constructor > that matches the specified criteria. If an exact match does not exist, > will attempt to coerce the parameter types specified in > to select a match. If is unable to select a > match, returns . If the type represented by the current > instance is contained in a loaded assembly, the constructor that matches the > specified criteria is not public, and the caller does not have sufficient > permissions, returns . > > > > is , or at least one of the elements in is . > > > > has more than one dimension. > > > The following are used to define which > constructors to include in the search: > > > > > Specify either or > to get a return value other than . > > > > > Specify to include public constructors > in the search. > > > > > Specify to include non-public > constructors (that is, private and protected constructors) in the > search. > > > > For more information, see . > > > Requires permission to retrieve information on non-public members of types in loaded assemblies. See . > > 1 > Reflection > > > > > Method > > System.Reflection.ConstructorInfo > > > > > > > Returns a public instance constructor defined in the type represented by the > current instance. The parameters of the constructor match the specified argument > types. > > > An array of objects. The elements in the array are of the same number, in the same order, and represent the same types as the parameters for the constructor to be returned. Specify to obtain a constructor that takes no parameters. > > > A object representing the public instance > constructor whose parameters match exactly the types in , if found; > otherwise, . If the type represented by the current > instance is contained in a loaded assembly, the constructor that matches the > specified criteria is not public, and the caller does not have sufficient > permissions, returns . > > > > is , or at least one of the elements in is . > > > > has more than one dimension. > > > This version of is equivalent to ( | , , > , ). > > > Requires permission to retrieve information on non-public members of types in loaded assemblies. See . > > 1 > Reflection > > > > > Method > > System.Reflection.ConstructorInfo[] > > > > > Returns an array of the public constructors defined in the type represented > by the current instance. > > > An array of objects that reflect the public constructors > defined in the type represented by the current instance. If no public > constructors are defined in the type represented by the current instance, > returns an empty array. > > > This version of is equivalent to ( | ). > > > 1 > Reflection > > > > > Method > > System.Reflection.MethodInfo > > > > > > > > > Returns a object that reflects the public method that > has the specified name and is defined in the type represented by the current > instance. > > A containing the name of the public method to be returned. > > An array of objects. The elements in the array are of the same number, in the same order, and represent the same types as the parameters for the method to be returned. > > The only defined value for this parameter is . > > A object reflecting the public method that is > defined in the type represented by the current instance and matches the > specified criteria, if found; otherwise, . > > More than one method matching the specified criteria was found. > > > or is . > -or- > At least one of the elements in is . > > > > has more than one dimension. > > > The default binder does not process > . > The search for is case-sensitive. > This version of is equivalent to ( , | | , , , ). > > > 1 > Reflection > > > > > Method > > System.Reflection.MethodInfo > > > > > > > > Returns a object that reflects the public method defined in > the type represented by the current instance that has the specified name and parameter > information. > > A containing the name of the public method to be returned. > > An array of objects. The elements in the array are of the same number, in the same order, and represent the same types as the parameters for the method to be returned. > > > A object reflecting > the public method defined in the type represented by the current instance > that matches the specified criteria. If no public method matching the specified criteria > is found, returns . > > More than one method matching the specified criteria was found. > > > or is . > -or- > At least one of the elements in is . > > > > has more than one dimension. > > > The search for is case-sensitive. > This version of is equivalent to (, | | , , > , ). > > > 1 > Reflection > > > > > Method > > System.Reflection.MethodInfo > > > > > > > Returns a object that reflects the public method that > has the specified name and is defined in the type represented by the current > instance. > > A containing the name of the public method to be returned. > > A object reflecting the public method that is > defined in the type represented by the current instance and has the specified > name, if found; otherwise, . > > More than one method matching the specified criteria was found. > > is . > > The search for is case-sensitive. > This version of is equivalent to (, | | , , > , ). > > > 1 > Reflection > > > > > Method > > System.Reflection.MethodInfo[] > > > > > Returns the public methods defined in the type represented by the current > instance. > > > An array of objects reflecting the public methods defined in the > type represented by the current instance under the constraints of > . If no methods matching the constraints are found, returns an > empty array. > > > This version of is equivalent to ( | | ). > > > 1 > Reflection > > > > > Method > > System.Reflection.FieldInfo > > > > > > > Returns a object reflecting the field that has the > specified name and is defined in the type represented by the current > instance. > > A containing the name of the field to be returned. > > A object reflecting the field that is named > and is defined in the type represented by the current instance, if > found; otherwise, . If the selected field is non-public, the type represented by the > current instance is from a loaded assembly and the caller does not have > sufficient permission to reflect on non-public objects in loaded assemblies, > returns . > > > is . > > The search for is case-sensitive. > This version of is equivalent to ( > , | | ). > > Requires permission to retrieve information on non-public members of types in loaded assemblies. See . > > 1 > Reflection > > > > > Method > > System.Reflection.FieldInfo[] > > > > > Returns an array of objects that reflect the public fields > defined in the type represented by the current instance. > > > An array of objects that reflect the public fields > defined in the type represented by the current instance. If no public fields > are defined in the type represented by the current instance, returns an empty > array. > > > This version of is equivalent to ( | | ). > > > 1 > Reflection > > > > > Method > > System.Type > > > > > > > Searches for the interface with the specified name. > > > A containing the name of the interface to get. > > A object > representing the interface with the specified name, implemented or inherited by > the current , if found; otherwise, . > > > > is . > > The search for is case-sensitive. > > > > 1 > Reflection > > > > > Method > > System.Reflection.EventInfo > > > > > > > Returns a object reflecting the public event that has the > specified name and is defined in the type represented by the current > instance. > > A containing the name of the public event to be returned. > > A object > reflecting the public event that is named > and is defined in the type represented by the current instance, if > found; otherwise, . > > > is . > > This version of is equivalent to ( , | | ). > The search for is case-sensitive. > > > 1 > Reflection > > > > > Method > > System.Reflection.PropertyInfo > > > > > > > > > Returns a object that reflects the public property > defined in the type represented by the current instance that matches the specified search > criteria. > > A containing the name of the public property to be returned. > A object that represents the type of the public property to be returned. > > An array of objects. The elements in the array are of the same number, in the same order, and represent the same types as the parameters for the indexer to be returned. Specify for a property that is not indexed. > > > A object > reflecting the public property defined in the type represented by > the current instance that matches the specified criteria. If no matching property is > found, returns . > > More than one property matching the specified criteria was found. > > > or is , or at least one of the elements in is . > > > has more than one dimension. > > This version of is equivalent to (, | | , > , , , > ). > The search for is case-sensitive. > Different programming languages use different syntax to > specify indexed properties. Internally, this property is referred to by the name > "Item" in the metadata. Therefore, any attempt to retrieve an indexed > property using reflection is required to > specify this internal name in order for the to be returned correctly. > > > 1 > Reflection > > > > > Method > > System.Reflection.PropertyInfo > > > > > > > > Returns a object that reflects the public property defined > in the type represented by the current instance that matches the specified search > criteria. > > A containing the name of the public property to be returned. > > An array of objects. The elements in the array are of the same number, in the same order, and represent the same types as the parameters for the indexer to be returned. Specify to obtain a property that is not indexed. > > > A object reflecting the public property defined > on the type represented by the current instance that matches the specified > criteria. If no matching property is found, returns . > > More than one property matching the specified criteria was found. > > > or is , or at least one of the elements in is . > > > > has more than one dimension. > > > This version of is equivalent to (, | | , > , , , > ). > The search for is case-sensitive. > Different programming languages use different syntax to > specify indexed properties. Internally, this property is referred to by the name > "Item" in the metadata. Therefore, any attempt to retrieve an indexed property > using reflection is required to > specify this internal name in order for the to be returned correctly. > > > 1 > Reflection > > > > > Method > > System.Reflection.PropertyInfo > > > > > > > > Returns a > object that reflects the public property defined in the type represented by the current > instance that matches the specified search criteria. > > A containing the name of the property to be returned. > A object that represents the type of the property to be returned. > > A object reflecting the public property defined > on the type represented by the current instance that matches the specified > criteria. If no matching property is found, returns . > > More than one property matching the specified criteria was found. > > > is . > > > This version of is equivalent to (, | | , > , , , > ). > The search for is case-sensitive. > > > 1 > Reflection > > > > > Method > > System.Reflection.PropertyInfo > > > > > > > Returns a object that reflects the public > property defined in the type represented by the current instance that has the specified > name. > > A containing the name of the property to be returned. > > A object reflecting the public property defined > on the type represented by the current instance that has the specified name. If > no matching property is found, returns . > > More than one property matching the specified criteria was found. > > > is . > > > This version of is equivalent to (, | | , > , , , > ). > The search for is case-sensitive. > > > 1 > Reflection > > > > > Method > > System.Reflection.PropertyInfo[] > > > > > Returns an array of objects that reflect the public properties > defined in the type represented by the current instance. > > > An array of > objects that reflect the public properties defined in the type > represented by the current instance. If no public properties are found, returns > an empty array. > > > This version of is equivalent to ( > | | ). > A property is considered by reflection > to be if it has at least one accessor that is > . Otherwise, the property is considered to be not > . > > > 1 > Reflection > > > > > Method > > System.Type[] > > > > > Returns all the public types nested within the current . > > > An array of objects representing all public types nested within the type > represented by the current instance, if any. Otherwise, returns an empty array. > > > This version of is equivalent to (). > > > 1 > Reflection > > > > > Method > > System.Type > > > > > > > Returns the public nested type defined in the type represented by the current instance > > A containing the name of the public nested type to return. Specify the unqualified name of the nested type. For example, for a type B nested within A, if typeA represents the type object for A, the correct invocation is typeA.GetNestedType("B"). > > A object > representing the public nested type with the specified > name, if found; otherwise, . > > > is . > > The search for is case-sensitive. > This version of is equivalent to (, ). > > > 1 > Reflection > > > > > Method > > System.Reflection.MemberInfo[] > > > > > > > Returns an array of objects that reflect the public members that > have the specified name and are defined in the type represented by the current > instance. > > A containing the name of the members to be returned. > > An array of objects that reflect the public members that > are named and are defined in the type represented by the current instance. If no public > members with the specified name are defined in the type represented by the > current instance, returns an empty array. > > > is . > > This version of is equivalent to ( , | | ). > The search for is case-sensitive. > > > 1 > Reflection > > > > > Method > > System.Reflection.MemberInfo[] > > > > > Returns an array of objects that reflect the public members > defined in the type represented by the current instance. > > > An array of objects that reflect the public members > defined in the type represented by the current instance. If no public members > are defined in the type represented by the current instance, returns an empty > array. > > > This version of is equivalent to ( | | ). > > > 1 > Reflection > > > > > Method > > System.Type[] > > > > > > > Returns the types of the objects in the specified array. > > > An array of objects whose types are to be returned. > > An array of objects representing the types of the corresponding > elements in . If a requested type is not public > and the caller does not have permission to > reflect non-public objects outside the current assembly, the corresponding element in the > array returned by this method will be . > > > > is . > The type initializers were invoked and at least one threw an exception. > Requires permission to retrieve information on non-public members of types in loaded assemblies. See . > > 1 > Reflection > > > > > Method > > System.Boolean > > > > > > > Determines if the underlying system type of the current is the same as the > underlying system type of the specified . > > The whose underlying system type is to be compared with the underlying system type of the current . > > > if the underlying system type of is the same > as the underlying system type of the current ; otherwise, . > > > 1 > Reflection > > > > > Constructor > > > > > Constructs a new instance of the class. > > > > 1 > Reflection > > > > > Property > > System.Type > > > > > Gets the type that declares the type represented by the current instance. > > > The object for > the class that declares the type represented by the current > instance. If the type is a nested type, this property returns the enclosing type; otherwise, returns > the current instance. > > > > This property overrides . > > > > The following example demonstrates the > property. > using System; > using System.Reflection; > > public abstract class DeclaringTypeTest{ > public abstract class MyClassA { > public abstract int m(); > } > public abstract class MyClassB : MyClassA { > } > public static void Main() { > Console.WriteLine("Declaring type of m is {0}", > typeof(MyClassB).GetMethod("m").DeclaringType); > } > } > > The output is > > Declaring type of m is DeclaringTypeTest+MyClassA > > > > 1 > Reflection > > > > > Property > > System.Type > > > > > Gets the type that was used to obtain the current > instance. > > > The object > through which the current instance was obtained. > > > This property is read-only. > > This property > overrides . > > > > The following example demonstrates the property. Although the method is > declared in , its reflected type is obtained from > . > using System; > using System.Reflection; > public abstract class ReflectedTypeTest { > public abstract class MyClassA { > public abstract int m(); > } > public abstract class MyClassB : MyClassA { > } > public static void Main(string[] args) { > Console.WriteLine("Reflected type of m is {0}", > typeof(MyClassB).GetMethod("m").ReflectedType); > } > } > > The output is > > Reflected type of m is ReflectedTypeTest+MyClassB > > > > 1 > Reflection > > > > > Property > > System.Reflection.Binder > > > > > Gets the default binder used by the system. > > > The default used by the system. > > > This property is read-only. > Reflection models the accessibility rules of the common > type system. For example, if the caller is in the same assembly, the caller does > not need special permissions for internal members. Otherwise, the caller needs > > . This is consistent with lookup of members that > are protected, private, and so on. > > The general principle is that > typically performs only widening coercions, > which never lose data. An example of a widening coercion is coercing a > value that is a 32-bit signed integer to a value that is a 64-bit signed integer. > This is distinguished from a narrowing coercion, which may lose data. An > example of a narrowing coercion is coercing a 64-bit signed integer to a 32-bit > signed integer. > > The following table lists the coercions performed by the default binder's implementation of > . > > > Source Type > Target Type > > > Any type > Its base type. > > > Any type > The interface it implements. > > > Char > Unt16, UInt32, Int32, UInt64, Int64, Single, Double > > > Byte > Char, Unt16, Int16, UInt32, Int32, UInt64, Int64, Single, Double > > > SByte > Int16, Int32, Int64, Single, Double > > > UInt16 > UInt32, Int32, UInt64, Int64, Single, Double > > > Int16 > Int32, Int64, Single, Double > > > UInt32 > UInt64, Int64, Single, Double > > > Int32 > Int64, Single, Double > > > UInt64 > Single, Double > > > Int64 > Single, Double > > > Single > Double > > > Non-reference > By-reference. > > > > > 1 > Reflection > > > > > Property > > System.Reflection.Module > > > > > Gets the module in which the current is defined. > > > A that reflects the module in which the current is defined. > > > > This property is > read-only. > > > > 1 > Reflection > > > > > Property > > System.Reflection.Assembly > > > > > Gets the that the type is declared in. > > > A instance that describes assembly containing the current type. > > > > This property is read-only. > > > > 1 > RuntimeInfrastructure > > > > > Property > > System.RuntimeTypeHandle > > > > > Gets the handle for the current . > > > The for the current . > > > This property is read-only. > The encapsulates a pointer to an internal data structure that represents the type. This > handle is unique during the process lifetime. The handle is valid only in > the application domain in which it was obtained. > > > 1 > RuntimeInfrastructure > > > > > Property > > System.String > > > > > Gets the fully qualified name of the type represented by > the current instance. > > > A containing the fully qualified name of the . > > > > For example, the > fully qualified name of the C# string type is "System.String". > > > This property is > read-only. > > > > The following example demonstrates using the > property. > using System; > class TestType { > public static void Main() { > Type t = typeof(Array); > Console.WriteLine("Full name of Array type is {0}",t.FullName); > } > } > > The output is > > Full name of > Array type is System.Array > > > > 0 > > > > > Property > > System.String > > > > > Gets the namespace of the . > > > A containing the namespace of the current . > > > > A namespace is a > logical design-time naming convenience, used mainly to define scope in an > application and organize classes and other types in a hierarchical structure. > From the viewpoint of the system, there are no namespaces. > > > This property is > read-only. > > > > 1 > Reflection > > > > > Property > > System.String > > > > > Gets the fully qualified name of the type represented by > the current instance > including the name of the assembly from which the was loaded. > > > A containing the > fully qualified name of the type represented by the current instance, > including the name of the assembly from which the was loaded. > > > > > This property is read-only. > Compilers emit the simple name of a nested class, and reflection constructs a > mangled name when queried, in accordance with the following conventions. > > > Delimiter > Meaning > > > Backslash (\) > Escape character. > > > Comma (,) > Precedes the Assembly name. > > > Plus sign (+) > Precedes a nested class. > > > Period (.) > Denotes namespace identifiers. > > > > For example, the fully qualified name for a class might look like this: > TopNamespace.SubNameSpace.ContainingClass+NestedClass,MyAssembly > If the namespace were TopNamespace.Sub+Namespace, then the string would > have to precede the plus sign (+) with an escape character (\) to prevent > it from being interpreted as a nesting separator. Reflection > emits this string as follows: > TopNamespace.Sub\+Namespace.ContainingClass+NestedClass,MyAssembly > A "++" becomes "\+\+", and a "\" becomes "\\". > > Type names are permitted to include trailing characters that denote > additional information about the type, such as whether the type is a reference > type, a pointer type or an array type. To retrieve the type name without these > trailing characters, use t.GetElementType().ToString(), where > is the type. > Spaces are significant in all type name components except the assembly > name. In the assembly name, spaces before the ',' separator are significant, but > spaces after the ',' separator are ignored. > > > The name returned by this method can be persisted and later used to load the . > To search for and load a , use either with the type name only or with > the assembly qualified type name. with the type name only will look for > the > in the caller's assembly and then in the System assembly. with the > assembly qualified type name will look for the in any assembly. > > > > 1 > Reflection > > > > > Property > > System.Type > > > > > Gets the base of the current . > > > A object > representing the type from which the current directly inherits, or > > if the current represents the class. > > > > This property is read-only. > > > > The following example demonstrates using the > property. > using System; > class TestType { > public static void Main() { > Type t = typeof(int); > Console.WriteLine("{0} inherits from {1}", t,t.BaseType); > } > } > > The output is > > System.Int32 > inherits from System.ValueType > > > > 0 > > > > > Property > > System.Reflection.ConstructorInfo > > > > > Gets the initializer for thetype > represented by the current instance. > > > A containing the name of the static > constructor for the type represented by the current instance > > > This property is read-only. > > Type initializers are available through , > , , and . > > > > 1 > Reflection > > > > > Property > > System.Reflection.TypeAttributes > > > > > Gets the attributes associated with the type represented > by the current instance. > > > A object representing the attribute set of the . > > > This property is read-only. > > > 1 > Reflection > > > > > Property > > System.Boolean > > > > > Gets a value indicating whether the top-level is not declared public. > > > > if the > top-level is not declared public; otherwise, . > > > This property is read-only. > > > 1 > Reflection > > > > > Property > > System.Boolean > > > > > Gets a value indicating whether the top-level is declared public. > > > > if the top-level is declared public; otherwise, . > > > This property is read-only. > > > 1 > Reflection > > > > > Property > > System.Boolean > > > > > Gets a value indicating > whether the current is a public nested class. > > > > if > the class is nested and declared public; otherwise, . > > > This property is read-only. > > > 1 > Reflection > > > > > Property > > System.Boolean > > > > > Gets a value indicating whether the current is nested and declared private. > > > > if the is nested and declared private; otherwise, . > > > This property is read-only. > > > 1 > Reflection > > > > > Property > > System.Boolean > > > > > Gets a value indicating whether the current is nested and visible only within its > own family. > > > > if the is nested > and visible only within its own family; otherwise, . > > > This property is read-only. > A object's family is defined as all objects of the exact > same and of its subclasses. > > > 1 > Reflection > > > > > Property > > System.Boolean > > > > > Gets a value indicating whether the current is nested and visible only within its own assembly. > > > > if the is nested and visible only within its own assembly; otherwise, . > > > This property is read-only. > > > 1 > Reflection > > > > > Property > > System.Boolean > > > > > Gets a value indicating whether the current is nested and visible only to classes that belong to both its own family and > its own assembly. > > > > if the is nested > and visible only to classes that belong to both its own family and its own assembly; otherwise, . > > > This property is read-only. > A object's family is defined as all objects of the exact > same and of its subclasses. > > > 1 > Reflection > > > > > Property > > System.Boolean > > > > > Gets a value indicating whether the current is nested and visible only to classes that belong to either its > own family or to its own assembly. > > > > if the is nested > and visible only to classes that belong to its own family or to its own assembly; otherwise, . > > > This property is read-only. > A object's family is defined as all objects of the exact > same and of its subclasses. > > > 1 > Reflection > > > > > Property > > System.Boolean > > > > > Gets a value indicating > whether the type layout attribute is specified for the . > > > > if the type > layout attribute is specified for the current ; otherwise, . > > > This property is read-only. > > The attribute specifies that the system > selects the layout the objects of the type. Types marked with this attribute indicate that the > system will choose the appropriate way to lay out the type; any layout information > that may have been specified is ignored. > > > > 1 > Reflection > > > > > Property > > System.Boolean > > > > > Gets a value indicating > whether the type layout attribute is specified for the . > > > > if the type layout attribute > is specified for the current > ; otherwise, > . > > > This property is read-only. > > The attribute is used > to indicate that > the system is to preserve field order as emitted, but otherwise the specific offsets are calculated based on the type > of the field; these may be shifted by explicit offset, padding, or alignment information. > > > > 1 > Reflection > > > > > Property > > System.Boolean > > > > > Gets a value indicating > whether the type layout attribute is specified for the . > > > > if the type layout attribute is specified for the current ; otherwise, > . > > > This property is read-only. > > Types marked with the attribute cause > the system to ignore field sequence and to use the explicit layout rules provided, > in the form of field offsets, overall class size and alignment. > > > > 1 > Reflection > > > > > Property > > System.Boolean > > > > > Gets a value that indicates whether the current represents a class. > > > > if the current represents a class; > otherwise . > > > This property is read-only. > Note that this property returns for > instances > representing and . > > > 0 > > > > > Property > > System.Boolean > > > > > Gets a value that indicates whether the current represents an interface. > > > > if the current represents an > interface; otherwise . > > > This property is read-only. > > > 0 > > > > > Property > > System.Boolean > > > > > Gets a value that indicates whether the current represents a value type. > > > > if the current represents a value > type (structure); otherwise . > > > This property is read-only. > This property returns true for enumerations, but not for > the type > itself, which is a class. For an example > that demonstrates this behavior, see > . > > > 0 > > > > > Property > > System.Boolean > > > > > Gets a value indicating > whether the type represented by the current instance is abstract and is required to be overridden. > > > > if the is abstract; otherwise, . > > > This property is read-only. > > > 1 > Reflection > > > > > Property > > System.Boolean > > > > > Gets a value indicating whether the current is declared sealed. > > > > if the is declared sealed; otherwise, . > > > 1 > Reflection > > > > > Property > > System.Boolean > > > > > Gets a value that indicates whether the current represents an enumeration. > > > > if the current represents an > enumeration; otherwise . > > > This property is read-only. > This property returns for an enumeration, but not > for the > type itself, which is a class. > > > The following example demonstrates using the > property. > using System; > public enum Color { > Red, Blue, Green > } > class TestType { > public static void Main() { > Type colorType = typeof(Color); > Type enumType = typeof(Enum); > Console.WriteLine("Color is enum ? {0}", colorType.IsEnum); > Console.WriteLine("Color is valueType? {0}", colorType.IsValueType); > Console.WriteLine("Enum is enum Type? {0}", enumType.IsEnum); > Console.WriteLine("Enum is value? {0}", enumType.IsValueType); > } > } > > The output is > > Color is enum ? True > Color is valueType? True > Enum is enum Type? False > Enum is value? False > > > > 0 > > > > > Property > > System.Boolean > > > > > Gets a value indicating whether the current has a name that requires special handling. > > > > if the has a name that requires special handling; otherwise, . > > > This property is read-only. > > Names that begin with or contain an > underscore character (_) are examples of type names that > might require special treatment by some tools. > > > > 1 > Reflection > > > > > Property > > System.Boolean > > > > > Gets a value indicating whether the was imported from another class. > > > > if the was imported from another class; otherwise, . > > > This property is read-only. > > > 1 > Reflection > > > > > Property > > System.Boolean > > > > > Gets a value that indicates whether the current represents an array. > > > > if the current represents an > array; otherwise . > > > This property is read-only. > This property returns for an array of objects, but > not for the > type itself, which is a class. > > > The following example demonstrates using the > property. > using System; > class TestType { > public static void Main() { > int [] array = {1,2,3,4}; > Type at = typeof(Array); > Type t = array.GetType(); > Console.WriteLine("Type is {0}. IsArray? {1}", at, at.IsArray); > Console.WriteLine("Type is {0}. IsArray? {1}", t, t.IsArray); > } > } > > The output is > > Type is System.Array. IsArray? False > Type is System.Int32[]. IsArray? True > > > > 0 > > > > > Property > > System.Boolean > > > > > Gets a value indicating whether the is > passed by reference. > > > > if the is passed by reference; otherwise, . > > > This property is read-only. > > > 1 > Reflection > > > > > Property > > System.Boolean > > > > > Gets a value that indicates whether the current represents a pointer. > > > This property is read-only. > > if the current represents a > pointer; otherwise . > > > This property is read-only. > > > 0 > > > > > Property > > System.Boolean > > > > > Gets a value indicating whether the current is one of the primitive types. > > > > if the is one of the primitive types; otherwise, . > > > This property is read-only. > The primitive types are , , , , , , , , , , , and . > > > 1 > Reflection > > > > > Property > > System.Boolean > > > > > Gets a value indicating whether the type represented by the > current instance encompasses or refers > to another type; that is, whether the current is an array, a pointer, or is passed by reference. > > > > if the is an array, a pointer, or is passed by reference; otherwise, . > > > This property is read-only. > > For example, (" []").HasElementType returns > , but (" ").HasElementType returns > . also returns > for "Int32*" and "Int32&". > > > > 1 > Reflection > > > > > Property > > System.Boolean > > > > > Gets a value indicating whether the current type is marshaled by reference. > > > > if the is marshaled by reference; otherwise, . > > > This property is read-only. > > > 1 > Reflection > > > > > Property > > System.Type > > > > > Returns the system-supplied type > that represents the current type. > > > The underlying system type for the . > > > This property is read-only. > > As described > above. > > > > 1 > Reflection > > > 0 > --=-XAUNgAovMeMFgTAa+vou Content-Disposition: attachment; filename=xsl.tar.gz Content-Type: application/x-gzip; name=xsl.tar.gz Content-Transfer-Encoding: base64 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 AM== --=-XAUNgAovMeMFgTAa+vou-- From rodrigo@ximian.com Sat Oct 12 12:55:17 2002 From: rodrigo@ximian.com (Rodrigo Moya) Date: 12 Oct 2002 13:55:17 +0200 Subject: [Mono-list] ODBC.NET Provider on Windows In-Reply-To: References: Message-ID: <1034423717.12218.38.camel@localhost> On Sat, 2002-10-12 at 07:57, Brian Ritchie wrote: > Great news!! > > I'm "power-leveling" the odbc code... > - I've jacked in the transaction objects > - I'm straightening out all of the SQL data type mappings. > - DBNull works > - I've implemented the Cancel method > > Do we have a #define to force conditional compilation on Linux/Windows? I'd > like to setup the libodbc to point at odbc32 on windows. Or is there a > better way? > I think using a config entry for mapping the library names is the correct way. Other people will tell you for sure. > I'll be checking this stuff in this weekend. > cool! Thanks a lot for your work cheers -- Rodrigo Moya From bronson@rinspin.com Sat Oct 12 20:55:08 2002 From: bronson@rinspin.com (Scott Bronson) Date: 12 Oct 2002 12:55:08 -0700 Subject: [Mono-list] Help needed with XSLT transformations (documentation browser) In-Reply-To: <1034423173.1574.32.camel@emma> References: <1034302508.14577.313.camel@erandi.boston.ximian.com> <1034423173.1574.32.camel@emma> Message-ID: <1034452509.4349.26.camel@emma> On Sat, 2002-10-12 at 04:46, Scott Bronson wrote: > Here is a very, very, VERY basic start. Don't expect much. It's a > super quick demo that shows a little of what's possible. Whoops, sorry guys. I didn't realize Evo quoted the entire Types.xml file in the reply. Weird. I'll try to keep mailbombs to a minimum in the future... My questions, a bit more lucid: 1) How do you want the transformed data stored? Need to know this to know how to generate URLs. 2) What sort of output do you want? Right now, I'm just shoving out some really bad HTML. I figure you'll want some sort of parseable XML or at the very least presentable CSS/xhtml. Have you got an example of what you want? 3) Where can I find the other XML files? Is there a DTD or spec or something? I've only tested against Types.xml. From piersh@friskit.com Sat Oct 12 23:44:30 2002 From: piersh@friskit.com (Piers Haken) Date: Sat, 12 Oct 2002 15:44:30 -0700 Subject: [Mono-list] Help needed with XSLT transformations(documentation browser) Message-ID: <9891913C5BFE87429D71E37F08210CB92974EE@zeus.sfhq.friskit.com> The file you're looking for is ftp://ftp.ecma.ch/ecma-st/Ecma-335-xml.zip It contains the whole spec as one file: All.xml. Piers. > -----Original Message----- > From: Scott Bronson [mailto:bronson@rinspin.com] > Sent: Saturday, October 12, 2002 12:55 PM > To: Miguel de Icaza; mono-list@ximian.com; Adam Treat > Subject: Re: [Mono-list] Help needed with XSLT > transformations(documentation browser) > > > On Sat, 2002-10-12 at 04:46, Scott Bronson wrote: > > Here is a very, very, VERY basic start. Don't expect much. It's a > > super quick demo that shows a little of what's possible. > > Whoops, sorry guys. I didn't realize Evo quoted the entire > Types.xml file in the reply. Weird. I'll try to keep > mailbombs to a minimum in the future... > > > My questions, a bit more lucid: > > 1) How do you want the transformed data stored? > Need to know this to know how to generate URLs. > > 2) What sort of output do you want? Right now, I'm just shoving > out some really bad HTML. I figure you'll want some sort of > parseable XML or at the very least presentable CSS/xhtml. > Have you got an example of what you want? > > 3) Where can I find the other XML files? Is there a DTD or spec > or something? I've only tested against Types.xml. > > > > > _______________________________________________ > Mono-list maillist - Mono-list@ximian.com > http://lists.ximian.com/mailman/listinfo/mono-list > From manyoso@yahoo.com Sat Oct 12 23:41:00 2002 From: manyoso@yahoo.com (Adam Treat) Date: Sat, 12 Oct 2002 18:41:00 -0400 Subject: [Mono-list] Help needed with XSLT transformations(documentation browser) In-Reply-To: <9891913C5BFE87429D71E37F08210CB92974EE@zeus.sfhq.friskit.com> References: <9891913C5BFE87429D71E37F08210CB92974EE@zeus.sfhq.friskit.com> Message-ID: <200210121841.00151.manyoso@yahoo.com> Well, no. Miguel is placing the All.xml into the monodoc module where every type is broken out into its own file. Please have a look in the cvs monodoc module for other examples. Adam On Saturday 12 October 2002 06:44 pm, Piers Haken wrote: > The file you're looking for is > ftp://ftp.ecma.ch/ecma-st/Ecma-335-xml.zip > > It contains the whole spec as one file: All.xml. > > Piers. > > > -----Original Message----- > > From: Scott Bronson [mailto:bronson@rinspin.com] > > Sent: Saturday, October 12, 2002 12:55 PM > > To: Miguel de Icaza; mono-list@ximian.com; Adam Treat > > Subject: Re: [Mono-list] Help needed with XSLT > > transformations(documentation browser) > > > > On Sat, 2002-10-12 at 04:46, Scott Bronson wrote: > > > Here is a very, very, VERY basic start. Don't expect much. It's a > > > super quick demo that shows a little of what's possible. > > > > Whoops, sorry guys. I didn't realize Evo quoted the entire > > Types.xml file in the reply. Weird. I'll try to keep > > mailbombs to a minimum in the future... > > > > > > My questions, a bit more lucid: > > > > 1) How do you want the transformed data stored? > > Need to know this to know how to generate URLs. > > > > 2) What sort of output do you want? Right now, I'm just shoving > > out some really bad HTML. I figure you'll want some sort of > > parseable XML or at the very least presentable CSS/xhtml. > > Have you got an example of what you want? > > > > 3) Where can I find the other XML files? Is there a DTD or spec > > or something? I've only tested against Types.xml. > > > > > > > > > > _______________________________________________ > > Mono-list maillist - Mono-list@ximian.com > > http://lists.ximian.com/mailman/listinfo/mono-list From manyoso@yahoo.com Sat Oct 12 23:54:54 2002 From: manyoso@yahoo.com (Adam Treat) Date: Sat, 12 Oct 2002 18:54:54 -0400 Subject: [Mono-list] Help needed with XSLT transformations (documentation browser) In-Reply-To: <1034452509.4349.26.camel@emma> References: <1034302508.14577.313.camel@erandi.boston.ximian.com> <1034423173.1574.32.camel@emma> <1034452509.4349.26.camel@emma> Message-ID: <200210121854.54859.manyoso@yahoo.com> On Saturday 12 October 2002 03:55 pm, Scott Bronson wrote: > On Sat, 2002-10-12 at 04:46, Scott Bronson wrote: > > Here is a very, very, VERY basic start. Don't expect much. It's a > > super quick demo that shows a little of what's possible. > > Whoops, sorry guys. I didn't realize Evo quoted the entire Types.xml > file in the reply. Weird. I'll try to keep mailbombs to a minimum in > the future... > > > My questions, a bit more lucid: > > 1) How do you want the transformed data stored? > Need to know this to know how to generate URLs. IMHO, every type should have it's own file. Miguel would probably want every member to have it's own file too, but am not sure about that. Many people are clamoring for an msdn like documentation and this would require members to be broken out into individual html files, but many others like javadoc style... So for linking you'd probably have something like Object > 2) What sort of output do you want? Right now, I'm just shoving > out some really bad HTML. I figure you'll want some sort of > parseable XML or at the very least presentable CSS/xhtml. > Have you got an example of what you want? My preference is css/xhtml or compliant css/html ie, it should follow web standards and work in all major browsers. > 3) Where can I find the other XML files? Is there a DTD or spec > or something? I've only tested against Types.xml. The monodoc module in cvs. From miguel@ximian.com Sat Oct 12 23:59:37 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 12 Oct 2002 18:59:37 -0400 Subject: [Mono-list] Help needed with XSLT transformations (documentation browser) In-Reply-To: <1034452509.4349.26.camel@emma> References: <1034302508.14577.313.camel@erandi.boston.ximian.com> <1034423173.1574.32.camel@emma> <1034452509.4349.26.camel@emma> Message-ID: <1034463576.14577.444.camel@erandi.boston.ximian.com> Hello! > My questions, a bit more lucid: > > 1) How do you want the transformed data stored? > Need to know this to know how to generate URLs. Well, the various "scripts" should be used to generate different presentations (class info, complete class dumping, specific member, member summary). So just assume that you can jump to all of those entry points. I would like to only ship the XML files, and have our documentation browser generate the various presentations on the flight using the XSLT transformations. > 2) What sort of output do you want? Right now, I'm just shoving > out some really bad HTML. I figure you'll want some sort of > parseable XML or at the very least presentable CSS/xhtml. > Have you got an example of what you want? CSS/HTML I think is best, feel free to use CSS liberally, and I will nicely ask Jakub from Ximian to design a nice look for the documentation. Structurally-wise, I think that following the MSDN model is sound. > 3) Where can I find the other XML files? Is there a DTD or spec > or something? I've only tested against Types.xml. I have now checked in all the XML files into the Mono CVS repository in the module `monodoc' (I had forgotten to push it to the anoncvs servers, but am forcing a push right now). Miguel From miguel@ximian.com Sun Oct 13 00:00:41 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 12 Oct 2002 19:00:41 -0400 Subject: [Mono-list] Help needed with XSLT transformations (documentation browser) In-Reply-To: <200210121854.54859.manyoso@yahoo.com> References: <1034302508.14577.313.camel@erandi.boston.ximian.com> <1034423173.1574.32.camel@emma> <1034452509.4349.26.camel@emma> <200210121854.54859.manyoso@yahoo.com> Message-ID: <1034463640.14577.446.camel@erandi.boston.ximian.com> Hello! > member to have it's own file too, but am not sure about that. Many people > are clamoring for an msdn like documentation and this would require members > to be broken out into individual html files, but many others like javadoc > style... > > So for linking you'd probably have something like href="RelativePath/System.Object.html">Object Do not worry too much about the a href, since we are going to be the ones parsing this information on the flight, just make up something, as we will be the ones resolving the link anyways: Miguel From bronson@rinspin.com Sun Oct 13 00:05:39 2002 From: bronson@rinspin.com (Scott Bronson) Date: 12 Oct 2002 16:05:39 -0700 Subject: [Mono-list] Help needed with XSLT transformations (documentation browser) In-Reply-To: <200210121854.54859.manyoso@yahoo.com> References: <1034302508.14577.313.camel@erandi.boston.ximian.com> <1034423173.1574.32.camel@emma> <1034452509.4349.26.camel@emma> <200210121854.54859.manyoso@yahoo.com> Message-ID: <1034463939.4349.35.camel@emma> On Sat, 2002-10-12 at 15:54, Adam Treat wrote: > On Saturday 12 October 2002 03:55 pm, Scott Bronson wrote: > > 2) What sort of output do you want? Right now, I'm just shoving > > out some really bad HTML. > My preference is css/xhtml or compliant css/html ie, it should follow web > standards and work in all major browsers. OK, I can definitely do the XSLT. I'm not a web designer though. High quality HTML/CSS is not in my toolbox. If you guys could send me a style sheet and a *tiny* example of an HTML file showing the desired colors, headings, font choices, tables spacing, etc., I can use that as a guide to generate the rest. - Scott From bronson@rinspin.com Sun Oct 13 00:21:47 2002 From: bronson@rinspin.com (Scott Bronson) Date: 12 Oct 2002 16:21:47 -0700 Subject: [Mono-list] Help needed with XSLT transformations (documentation browser) In-Reply-To: <1034463576.14577.444.camel@erandi.boston.ximian.com> References: <1034302508.14577.313.camel@erandi.boston.ximian.com> <1034423173.1574.32.camel@emma> <1034452509.4349.26.camel@emma> <1034463576.14577.444.camel@erandi.boston.ximian.com> Message-ID: <1034464908.4349.38.camel@emma> OK, that's enough to get me started. I'm looking forward to Jakub's style sheet... - Scott On Sat, 2002-10-12 at 15:59, Miguel de Icaza wrote: > Hello! > > > My questions, a bit more lucid: > > > > 1) How do you want the transformed data stored? > > Need to know this to know how to generate URLs. > > Well, the various "scripts" should be used to generate different > presentations (class info, complete class dumping, specific member, > member summary). So just assume that you can jump to all of those entry > points. > > I would like to only ship the XML files, and have our documentation > browser generate the various presentations on the flight using the XSLT > transformations. > > > 2) What sort of output do you want? Right now, I'm just shoving > > out some really bad HTML. I figure you'll want some sort of > > parseable XML or at the very least presentable CSS/xhtml. > > Have you got an example of what you want? > > CSS/HTML I think is best, feel free to use CSS liberally, and I will > nicely ask Jakub from Ximian to design a nice look for the > documentation. > > Structurally-wise, I think that following the MSDN model is sound. > > > 3) Where can I find the other XML files? Is there a DTD or spec > > or something? I've only tested against Types.xml. > > I have now checked in all the XML files into the Mono CVS repository in > the module `monodoc' (I had forgotten to push it to the anoncvs servers, > but am forcing a push right now). > > Miguel > From danmorg@sc.rr.com Sun Oct 13 07:38:14 2002 From: danmorg@sc.rr.com (Daniel Morgan) Date: Sun, 13 Oct 2002 02:38:14 -0400 Subject: [Mono-list] CNet Article "C# Standardization Moves Ahead" (ISO C# and CLI) Message-ID: CNet news.com "C# standardization moves ahead" By Stephen Shankland The news article is at: http://news.com.com/2100-1001-961737.html However, I found the link at: http://developers.slashdot.org/developers/02/10/11/150256.shtml?tid=156 Some interesting tid bits I found I have commented on below. "Last week, an ISO subcommittee cleared the way for final ratification by the full ISO of C# and the required underpinnings called the Common Language Infrastructure (CLI), said John Montgomery, group product manager for the .Net Developer Platform at Microsoft." Cool. ISO C# and CLI standards. "Analysts said the C# and CLI submissions from Microsoft to ECMA and now ISO define only a subset of the .Net Framework that makes it possible to share data with applications on other operating systems. Not included, for example, is software needed to define a Windows or Web graphical user interface... Also missing from the submission is the .Net code needed to access databases" And I'm sure there are many other neccessary pieces missing from the C# and CLI submissions. What are they? Good thing Mono is implementing many of these missing pieces, such as, Windows Forms based on winelib, ASP.NET, and ADO.NET. "Microsoft is... including the .Net Framework, with Service Pack 1 for the Windows XP operating system." I never did like "Service Packs" to include new fuctionality. They should only contain bug fixes. However, we know that .NET will be included with any new operating systems from Microsoft now. Those new operating systems will not contain Java. If you want Java, you will have to download it. Microsoft has also "released a version of the CLI--the software apparatus to run C# programs--under its "shared source" license. That license permits people to see how Microsoft programmers wrote the software and to tinker with it, but not to sell products using it." However, Microsoft is considering to allow people to sell products with the shared-source CLI for a price. "Microsoft has attracted some unusual allies to C# and the CLI, including advocates of open-source software who often are opposed to Microsoft's proprietary approach to software. Among the allies is desktop Linux specialist Ximian, which with help from Hewlett-Packard and Intel is working to clone much of the C# environment in a project called Mono." I didn't realize that HP (or is it HPQ now?) and Intel were helping Ximian with Mono. Is this true? Moreover, those are my thoughts on the article, what do you think? From groith@tcrz.net Sun Oct 13 08:21:44 2002 From: groith@tcrz.net (Guenther Roith) Date: Sun, 13 Oct 2002 09:21:44 +0200 Subject: [Mono-list] CNet Article "C# Standardization Moves Ahead" (ISO C# and CLI) References: Message-ID: <001e01c27289$2f8beae0$010aa8c0@roithw2k> > "Microsoft has attracted some unusual allies to C# and the CLI, including > advocates of open-source software who often are opposed to Microsoft's > proprietary approach to software. Among the allies is desktop Linux > specialist Ximian, which with help from Hewlett-Packard and Intel is working > to clone much of the C# environment in a project called Mono." > > I didn't realize that HP (or is it HPQ now?) and Intel were helping Ximian > with Mono. Is this true? That was the reason for BSD-license change in January. But I don't know if it helped ;-) Johannes From projekt@earthlink.net Sun Oct 13 15:27:47 2002 From: projekt@earthlink.net (John Duncan) Date: Sun, 13 Oct 2002 10:27:47 -0400 Subject: [Mono-list] MacOS X and nonresponsiveness Message-ID: Hi Everyone, I thought I should mention my general reason for not responding to messages regarding MacOS X development. I've been keeping the messages and I intend to respond to them provided they are not outdated when I get to doing so. But I've been going through some tough personal times and I haven't been able to do any development, let alone mono, recently. Sorry for the immense delays. John From danmorg@sc.rr.com Sun Oct 13 22:17:05 2002 From: danmorg@sc.rr.com (Daniel Morgan) Date: Sun, 13 Oct 2002 17:17:05 -0400 Subject: [Mono-list] Update of SQL# and the MySQL ADO.NET Provider in Mono Message-ID: Hey, For those wanting to see SQL# using the MySQL ADO.NET Provider working in Mono. SQL# has better formatting of the output then it did before. It was buggy before. Numbers are right-justified now. DateTime is expressed in ISO format "YYYY-MM-DD HH:MM:SS". Any column longer than 32 characters is truncated to 32 characters. Here is the output of running it: DanielMorgan@DANPC ~/mono/mcs/class/System.Data/Test $ mcs SqlSharpCli.cs -r System.Data.dll Compilation succeeded DanielMorgan@DANPC ~/mono/mcs/class/System.Data/Test $ mono SqlSharpCli.exe Welcome to SQL#. The interactive SQL command-line client for Mono.Data. See http://www.go-mono.com/ for more details. Type: \Q to quit \ConnectionString to set the ConnectionString \Provider to set the Provider: {OleDb,SqlClient,MySql,Odbc, Oracle,PostgreSql,Sqlite) \Open to open the connection \Close to close the connection \Execute to execute SQL command(s)/queries(s) \h to show this help. \defaults to show default variables. The default Provider is POSTGRESQL The default ConnectionString is: "host=localhost;dbname=test;user=postgres" SQL# \provider mysql The default Provider is LOADEXTPROVIDER Assembly: Mono.Data.MySql Connection Class: Mono.Data.MySql.MySqlConnection SQL# \connectionstring dbname=test SQL# \open Attempt to open connection... Loading external provider... External provider loaded. Open was successfull. SQL# select int_value,datetime_value,text_value,double_value SQL# from mono_mysql_test SQL# \e Execute SQL: select int_value,datetime_value,text_value,double_value from mono_mysql_test Display any result sets... Display the result set 1 Fields in Query Result: 4 int_value datetime_value text_value double_value ========= =================== ========== ============ 777 2002-12-31 11:15:07 smell 2.2 4 2002-12-31 11:15:07 smell 2.2 94 2003-11-23 10:24:45 nope 92.2 Rows retrieved: 3 SQL# From Sebastien Pouliot Mon Oct 14 00:15:21 2002 From: Sebastien Pouliot (Sebastien Pouliot) Date: Sun, 13 Oct 2002 19:15:21 -0400 Subject: [Mono-list] Any info on MACTripleDES or PKCS1MaskGenerationMethod ? Message-ID: <005d01c2730e$67b58180$0301a8c0@einstein> Hello all, 1. MACTripleDES I'm a little confused by MACTripleDES as there are many variant out there (CBC, CFB, with/without IV, encrypting the last block, ...) depending which standard you choose from: like FIPS81, FIPS113 and ANSI X9.19. Has any body used this class to exchange data with another system (not using the .NET framework)? 2. PKCS1MaskGenerationMethod This one is a bugger! I couldn't find a single sample using this class on the net. This isn't surprising because it normally only used when encrypting a value (using RSA) which is something that we can't do using the framework (as RSACryptoServiceProvider.EncryptValue throws a NotSupportedException). Right now I'm beginning to doubt that Microsoft is using this class in the framework as all their asymmetric crypto comes from CryptoAPI (unmanaged) why do they need this class ? Anyway I'll commit the "pkcs official" version (the one that generate the same output as the test vectors supplied with PKCS#1) as it is required for other PKCS#1 related classes. But we may have to change this IF i'm wrong! Sebastien Pouliot Security Architect, Motus Technologies, http://www.motus.com/ work: spouliot@motus.com home: spouliot@videotron.ca From brianlritchie@hotmail.com Mon Oct 14 05:06:25 2002 From: brianlritchie@hotmail.com (Brian Ritchie) Date: Mon, 14 Oct 2002 00:06:25 -0400 Subject: [Mono-list] SchemaTable support Message-ID: Daniel, I've implemented the SchemaTable support using your MySQL code as a guide. I need to move the following line directly under the NewRow(): dataTableSchema.Rows.Add (schemaRow); It was throwing the following exception: System.Data.RowNotInTableException: Cannot perform this operation on a row not in the table. I was using the MS.NET System.Data when I got the exception. The Mono class must not be checking for this. Brian _________________________________________________________________ MSN Photos is the easiest way to share and print your photos: http://photos.msn.com/support/worldwide.aspx From brianlritchie@hotmail.com Mon Oct 14 06:00:18 2002 From: brianlritchie@hotmail.com (Brian Ritchie) Date: Mon, 14 Oct 2002 01:00:18 -0400 Subject: [Mono-list] ODBC.NET Data Provider Update Message-ID: For those that are following the life and times of the ODBC provider... I've updated the provider significantly. It should now work on Linux and Windows. SqlSharp has also been updated to work with the provider. Here's the low down... - Added OdbcTransaction Object and moved transaction logic out of connection and into new object. - Support for DSN-less connection strings - Fixed OdbcType enum to have correct values - General cleanup on all objects - Implemented Cancel in OdbcCommand - Added DBNull support - Updated OdbcType enum with values from header files. - Modified column description code to happen dynamically as a column is accessed instead of describing all columns when the query opens - Works with SqlSharp - Implemented GetSchemaTable for OdbcDataReader Known Issues: - Transaction Isolation Level isn't handled - A number of data types are returned as strings instead of native types - Parameter support is weak -- only supports int types - ExecuteReader: CommandBehavior isn't implemented - ExecuteScalar not implemented - Need better error handling Happy Hacking... Brian _________________________________________________________________ Join the world’s largest e-mail service with MSN Hotmail. http://www.hotmail.com From bronson@rinspin.com Mon Oct 14 08:22:39 2002 From: bronson@rinspin.com (Scott Bronson) Date: 14 Oct 2002 00:22:39 -0700 Subject: [Mono-list] Help needed with XSLT transformations (documentation browser) In-Reply-To: <1034463576.14577.444.camel@erandi.boston.ximian.com> References: <1034302508.14577.313.camel@erandi.boston.ximian.com> <1034423173.1574.32.camel@emma> <1034452509.4349.26.camel@emma> <1034463576.14577.444.camel@erandi.boston.ximian.com> Message-ID: <1034580160.4348.71.camel@emma> --=-MIBDmR7iduu5GJDQEAUq Content-Type: text/plain Content-Transfer-Encoding: 7bit I played around with mscorlib.xml today. Enclosed are some files to generate a really raw set of index pages. On Sat, 2002-10-12 at 15:59, Miguel de Icaza wrote: > Well, the various "scripts" should be used to generate different > presentations (class info, complete class dumping, specific member, > member summary). So just assume that you can jump to all of those entry > points. OK, right now they're generating static html files, locally browsable. All the information needed to generate the files is contained in the link, i.e. > I would like to only ship the XML files, and have our documentation > browser generate the various presentations on the flight using the XSLT > transformations. It takes both Sablotron and xalan C++ the better part of a second just to read in mscorlib.xml (Athlon 1800, 512 Mb RAM). Breakdown: parsing the input files takes 900 ms, the transform takes 150 ms. I can cut this down by doing a pre-transform and caching the results. Where did mscorlib.xml come from? Can we add class summaries to it? Right now, if I want to create a page that lists classes and their summaries > > 3) Where can I find the other XML files? Is there a DTD or spec > > or something? I've only tested against Types.xml. > > I have now checked in all the XML files into the Mono CVS repository in > the module `monodoc' (I had forgotten to push it to the anoncvs servers, > but am forcing a push right now). --=-MIBDmR7iduu5GJDQEAUq Content-Disposition: attachment; filename=generate-index.pl Content-Transfer-Encoding: quoted-printable Content-Type: text/x-perl; name=generate-index.pl; charset=ANSI_X3.4-1968 #!/usr/bin/perl -w my $xml =3D 'mscorlib.xml'; open(FH, "xalan -Q -XSL list-namespaces.xsl -IN $xml |") or die "Could not list namespaces: $!\n"; my @arr =3D ; close FH; print "Generating (root)\n"; system("xalan -Q -XSL show-namespace.xsl -IN $xml -OUT show-namespace.xsl--= [].html") =3D=3D 0 or die "Could not run xalan: returned $?\n"; for(@arr) { chomp; print "Generating $_\n"; system("xalan -Q -XSL show-namespace.xsl -IN $xml -PARAM ns \"'$_'\" -OU= T show-namespace.xsl--[$_].html") =3D=3D 0 or die "Could not run xalan: ret= urned $?\n"; } --=-MIBDmR7iduu5GJDQEAUq-- From thaynes@openlinksw.com (Tim Haynes) Mon Oct 14 09:48:55 2002 From: thaynes@openlinksw.com (Tim Haynes) (Tim Haynes) Date: Mon, 14 Oct 2002 09:48:55 +0100 Subject: [Mono-list] Patch for bugzilla 31265, plus some pthreads In-Reply-To: <1034351698.17088.105.camel@hagbard.apathetic.discordia.org.uk> (Dick Porter's message of "11 Oct 2002 16:54:58 +0100") References: <87zntlhwri.fsf@purple.uknet.private> <1034351698.17088.105.camel@hagbard.apathetic.discordia.org.uk> Message-ID: <871y6tiex4.fsf@purple.uknet.private> Dick Porter writes: > On Fri, 2002-10-11 at 15:32, Tim Haynes wrote: >> Also, there was a mono_thread_create, but no mono_thread_attach for >> existing threads). Have copied the mono_thread_create and replaced a >> call t pthread_create() with pthread_self(), which works. There is a >> callback to be called on unhandled exception for example, which now can >> call a user-registerable callback or the original callback (calling >> pthread_exit). The code in the user callback >> mono_thread_attach_aborted_cb should do a longjmp to unwind the stack to >> a frame above any Mono frames. > > Could you explain why this code is needed? Suppose an already multithreaded program needs to host the Mono runtime. In order to issue mono calls from an exitsing thread it needs a mono environment (usually setup by mono_jit_init). But since mono jit_init can only be called once per process, it has to create the environment somehow (or it should create a new thread by calling mono_thread_create, pass the info to its start function and wait for it - but just imagine what it would be like if we create/wait/destry a pthread for each operation!). That's where the mono_thread_attach comes in handy. Cheers, ~Tim -- Product Development Consultant OpenLink Software Tel: +44 (0) 20 8681 7701 Web: Universal Data Access & Data Integration Technology Providers From bronson@rinspin.com Mon Oct 14 10:47:20 2002 From: bronson@rinspin.com (Scott Bronson) Date: 14 Oct 2002 02:47:20 -0700 Subject: [Mono-list] Help needed with XSLT transformations (documentation browser) In-Reply-To: <1034463576.14577.444.camel@erandi.boston.ximian.com> References: <1034302508.14577.313.camel@erandi.boston.ximian.com> <1034423173.1574.32.camel@emma> <1034452509.4349.26.camel@emma> <1034463576.14577.444.camel@erandi.boston.ximian.com> Message-ID: <1034588843.4348.245.camel@emma> --=-D6KG3KbByjBKQU8DxRPU Content-Type: text/plain Content-Transfer-Encoding: 7bit Crud! Who puts the attach button right next to the send button?! Where did the mscorlib.xml file come from? Is there any chance we can add the class summaries to it? It will be a disaster if I need to open each individual class.xml file and read the summaries when generating index pages. Here are the attachments. Put these in monodoc/class/corlib and run generate-index.pl to create a very, very crude set of index files from mscorlib.xml. Here's the output as of tonight: http://www.rinspin.com/~bronson/mono/xsl-test-1/show-namespace.xsl--%5B%5D.html This output is utter crap, of course! This is just to demonstrate the mechanism. I'm using links of the form: System.IO This says to run show-namespace.xsl on mscorlib.xml passing System.IO as the "ns" parameter (this generates the index for the System.IO namespace). The output can either be saved to disk and navigated using a traditional web browser or dynamically re-generated on demand from the information in the filename. Should be the best of both worlds. School is going to be tough this week; I'm afraid I won't have much time for hacking until Thursday afternoon... --=-D6KG3KbByjBKQU8DxRPU Content-Disposition: attachment; filename=generate-index.pl Content-Transfer-Encoding: quoted-printable Content-Type: text/x-perl; name=generate-index.pl; charset=ANSI_X3.4-1968 #!/usr/bin/perl -w my $xml =3D 'mscorlib.xml'; open(FH, "xalan -Q -XSL list-namespaces.xsl -IN $xml |") or die "Could not list namespaces: $!\n"; my @arr =3D ; close FH; print "Generating (root)\n"; system("xalan -Q -XSL show-namespace.xsl -IN $xml -OUT show-namespace.xsl--= [].html") =3D=3D 0 or die "Could not run xalan: returned $?\n"; for(@arr) { chomp; print "Generating $_\n"; system("xalan -Q -XSL show-namespace.xsl -IN $xml -PARAM ns \"'$_'\" -OU= T show-namespace.xsl--[$_].html") =3D=3D 0 or die "Could not run xalan: ret= urned $?\n"; } --=-D6KG3KbByjBKQU8DxRPU Content-Disposition: attachment; filename=list-namespaces.xsl Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; name=list-namespaces.xsl; charset=ANSI_X3.4-1968 --=-D6KG3KbByjBKQU8DxRPU Content-Disposition: attachment; filename=show-namespace.xsl Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; name=show-namespace.xsl; charset=ANSI_X3.4-1968 <xsl:call-template name=3D"print-namespace"/>

Subnamespaces

ClassDescription
No classes!
(unavailable)
(root namespace) namespace .. (parent) .. (parent)
--=-D6KG3KbByjBKQU8DxRPU-- From dick@ximian.com Mon Oct 14 11:01:55 2002 From: dick@ximian.com (Dick Porter) Date: 14 Oct 2002 11:01:55 +0100 Subject: [Mono-list] Patch for bugzilla 31265, plus some pthreads In-Reply-To: <871y6tiex4.fsf@purple.uknet.private> References: <87zntlhwri.fsf@purple.uknet.private> <1034351698.17088.105.camel@hagbard.apathetic.discordia.org.uk> <871y6tiex4.fsf@purple.uknet.private> Message-ID: <1034589715.5380.119.camel@hagbard.apathetic.discordia.org.uk> On Mon, 2002-10-14 at 09:48, Tim Haynes wrote: > Dick Porter writes: > > Could you explain why this code is needed? > > Suppose an already multithreaded program needs to host the Mono runtime. In > order to issue mono calls from an exitsing thread it needs a mono > environment (usually setup by mono_jit_init). OK. You still need to answer the second part though :) - Dick From ggb@tid.es Mon Oct 14 12:52:00 2002 From: ggb@tid.es (=?us-ascii?Q?Gustavo_Garcia_Bernardo?=) Date: Mon, 14 Oct 2002 13:52:00 +0200 Subject: [Mono-list] Bug in HttpWebRequest.cs and System.Timers namespace In-Reply-To: <1034588843.4348.245.camel@emma> Message-ID: Hi everybody, 1. I think there is a bug in HttpWebRequest. Line 572 should be "webRequest.actualUri.PathAndQuery" instead actual "webRequest.actualUri.AbsolutePath". Without this change is imposible to do HTTP GET request sending key=value pairs (like a HTML form). 2. I'm interested in implement the System.Timers namespace. Are there any problem? What is the procedure? I implement it and send you? Thanks a lot. Best regards. Gustavo Garcia (From Spain) From gkodinov@openlinksw.co.uk Mon Oct 14 13:59:49 2002 From: gkodinov@openlinksw.co.uk (George Kodinov) Date: Mon, 14 Oct 2002 15:59:49 +0300 Subject: [Mono-list] System.Object not serializable ? Message-ID: <3DAABFC5.9060100@openlinksw.co.uk> Hi, While looking at the implementation of the System.Object in Mono I've noticed that it is not marked as [Serializable]. This is true for most of the system classes (example : System.String). I know serialization isn't implemented currently, but shouldn't the classes be marked accordingly ? Best Regards, George Kodinov From ginga@kit.hi-ho.ne.jp Mon Oct 14 14:29:33 2002 From: ginga@kit.hi-ho.ne.jp (Atsushi Enomoto) Date: Mon, 14 Oct 2002 22:29:33 +0900 Subject: [Mono-list] Re: More help needed. In-Reply-To: <1034371147.14578.347.camel@erandi.boston.ximian.com> References: <1034371147.14578.347.camel@erandi.boston.ximian.com> Message-ID: <20021014222416.528B.GINGA@kit.hi-ho.ne.jp> --------_3DAAC39652B30519E008_MULTIPART_MIXED_ Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit > I am using a method called System.Xml.XmlDocument.ImportNode, but > Mono does not implement this bad boy yet. Could someone cook an > implementation for this method? 2 days ago, I failed to send this easy implementation code to the ML, but only to send to Miguel himself. Now I made some tests and some modifications. Miguel, I found two bugs that code in copying attributes, so please update that code. ____________________ Atsushi ENOMOTO --------_3DAAC39652B30519E008_MULTIPART_MIXED_ Content-Type: application/octet-stream; name="XmlDocument.diff" Content-Disposition: attachment; filename="XmlDocument.diff" Content-Transfer-Encoding: base64 LS0tIFhtbERvY3VtZW50LmNzCTIwMDItMTAtMTQgMjI6MDM6NTYuMDAwMDAwMDAwICswOTAwCisr KyBuZXdYbWxEb2N1bWVudC5jcwkyMDAyLTEwLTE0IDIyOjEyOjE2LjAwMDAwMDAwMCArMDkwMApA QCAtMzk1LDExICszOTUsMTcgQEAKIAkJW01vbm9UT0RPXQogCQlwdWJsaWMgdmlydHVhbCBYbWxO b2RlIEltcG9ydE5vZGUgKFhtbE5vZGUgbm9kZSwgYm9vbCBkZWVwKQogCQl7CisJCQkvLyBIb3cg dG8gcmVzb2x2ZSBkZWZhdWx0IGF0dHJpYnV0ZSB2YWx1ZXM/CiAJCQlzd2l0Y2gobm9kZS5Ob2Rl VHlwZSkKIAkJCXsKIAkJCQljYXNlIFhtbE5vZGVUeXBlLkF0dHJpYnV0ZToKLQkJCQkJWG1sQXR0 cmlidXRlIGEgPSBub2RlIGFzIFhtbEF0dHJpYnV0ZTsKLQkJCQkJcmV0dXJuIHRoaXMuQ3JlYXRl QXR0cmlidXRlKGEuUHJlZml4LCBhLkxvY2FsTmFtZSwgYS5OYW1lc3BhY2VVUkkpOworCQkJCQl7 CisJCQkJCQlYbWxBdHRyaWJ1dGUgc3JjX2F0dCA9IG5vZGUgYXMgWG1sQXR0cmlidXRlOworCQkJ CQkJWG1sQXR0cmlidXRlIGRzdF9hdHQgPSB0aGlzLkNyZWF0ZUF0dHJpYnV0ZShzcmNfYXR0LlBy ZWZpeCwgc3JjX2F0dC5Mb2NhbE5hbWUsIHNyY19hdHQuTmFtZXNwYWNlVVJJKTsKKwkJCQkJCS8v IFRPRE86IHJlc29sdmUgZGVmYXVsdCBhdHRyaWJ1dGUgdmFsdWVzCisJCQkJCQlkc3RfYXR0LlZh bHVlID0gc3JjX2F0dC5WYWx1ZTsKKwkJCQkJCXJldHVybiBkc3RfYXR0OworCQkJCQl9CiAKIAkJ CQljYXNlIFhtbE5vZGVUeXBlLkNEQVRBOgogCQkJCQlyZXR1cm4gdGhpcy5DcmVhdGVDRGF0YVNl Y3Rpb24obm9kZS5WYWx1ZSk7CkBAIC00MTEsNDMgKzQxNyw1NCBAQAogCQkJCQl0aHJvdyBuZXcg WG1sRXhjZXB0aW9uKCJEb2N1bWVudCBjYW5ub3QgYmUgaW1wb3J0ZWQuIik7CiAKIAkJCQljYXNl IFhtbE5vZGVUeXBlLkRvY3VtZW50RnJhZ21lbnQ6Ci0JCQkJCVhtbERvY3VtZW50RnJhZ21lbnQg ZGYgPSB0aGlzLkNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKLQkJCQkJaWYoZGVlcCkKIAkJCQkJ ewotCQkJCQkJZm9yZWFjaChYbWxOb2RlIG4gaW4gbm9kZS5DaGlsZE5vZGVzKQorCQkJCQkJWG1s RG9jdW1lbnRGcmFnbWVudCBkZiA9IHRoaXMuQ3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOworCQkJ CQkJaWYoZGVlcCkKIAkJCQkJCXsKLQkJCQkJCQlkZi5BcHBlbmRDaGlsZCh0aGlzLkltcG9ydE5v ZGUobiwgZGVlcCkpOworCQkJCQkJCWZvcmVhY2goWG1sTm9kZSBuIGluIG5vZGUuQ2hpbGROb2Rl cykKKwkJCQkJCQl7CisJCQkJCQkJCWRmLkFwcGVuZENoaWxkKHRoaXMuSW1wb3J0Tm9kZShuLCBk ZWVwKSk7CisJCQkJCQkJfQogCQkJCQkJfQorCQkJCQkJcmV0dXJuIGRmOwogCQkJCQl9Ci0JCQkJ CXJldHVybiBkZjsKIAogCQkJCWNhc2UgWG1sTm9kZVR5cGUuRG9jdW1lbnRUeXBlOgogCQkJCQl0 aHJvdyBuZXcgWG1sRXhjZXB0aW9uKCJEb2N1bWVudFR5cGUgY2Fubm90IGJlIGltcG9ydGVkLiIp OwogCiAJCQkJY2FzZSBYbWxOb2RlVHlwZS5FbGVtZW50OgotCQkJCQlYbWxFbGVtZW50IHNyYyA9 IG5vZGUgYXMgWG1sRWxlbWVudDsKLQkJCQkJWG1sRWxlbWVudCBkc3QgPSB0aGlzLkNyZWF0ZUVs ZW1lbnQoc3JjLlByZWZpeCwgc3JjLkxvY2FsTmFtZSwgc3JjLk5hbWVzcGFjZVVSSSk7Ci0JCQkJ CWlmKGRlZXApCiAJCQkJCXsKLQkJCQkJCWZvcmVhY2goWG1sTm9kZSBuIGluIHNyYy5DaGlsZE5v ZGVzKQotCQkJCQkJCWRzdC5BcHBlbmRDaGlsZCh0aGlzLkltcG9ydE5vZGUobiwgZGVlcCkpOwor CQkJCQkJWG1sRWxlbWVudCBzcmMgPSAoWG1sRWxlbWVudClub2RlOworCQkJCQkJWG1sRWxlbWVu dCBkc3QgPSB0aGlzLkNyZWF0ZUVsZW1lbnQoc3JjLlByZWZpeCwgc3JjLkxvY2FsTmFtZSwgc3Jj Lk5hbWVzcGFjZVVSSSk7CisJCQkJCQlmb3JlYWNoKFhtbEF0dHJpYnV0ZSBhdHRyIGluIHNyYy5B dHRyaWJ1dGVzKQorCQkJCQkJeworCQkJCQkJCS8vIFRPRE86IGNyZWF0ZSBkZWZhdWx0IGF0dHJp YnV0ZSB2YWx1ZXMKKwkJCQkJCQlkc3QuU2V0QXR0cmlidXRlTm9kZSgoWG1sQXR0cmlidXRlKXRo aXMuSW1wb3J0Tm9kZShhdHRyLCBkZWVwKSk7CisJCQkJCQl9CisJCQkJCQlpZihkZWVwKQorCQkJ CQkJeworCQkJCQkJCWZvcmVhY2goWG1sTm9kZSBuIGluIHNyYy5DaGlsZE5vZGVzKQorCQkJCQkJ CQlkc3QuQXBwZW5kQ2hpbGQodGhpcy5JbXBvcnROb2RlKG4sIGRlZXApKTsKKwkJCQkJCX0KKwkJ CQkJCXJldHVybiBkc3Q7CiAJCQkJCX0KLQkJCQkJcmV0dXJuIGRzdDsKIAotCQkJCS8vY2FzZSBY bWxOb2RlVHlwZS5FbmRFbGVtZW50OgotCQkJCS8vCXRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEV4 Y2VwdGlvbiAoKTsKLQkJCQkvL2Nhc2UgWG1sTm9kZVR5cGUuRW5kRW50aXR5OgotCQkJCS8vCXRo cm93IG5ldyBOb3RJbXBsZW1lbnRlZEV4Y2VwdGlvbiAoKTsKLQkJCQkvL2Nhc2UgWG1sTm9kZVR5 cGUuRW50aXR5OgotCQkJCS8vCXRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEV4Y2VwdGlvbiAoKTsK KwkJCQljYXNlIFhtbE5vZGVUeXBlLkVuZEVsZW1lbnQ6CisJCQkJCXRocm93IG5ldyBYbWxFeGNl cHRpb24gKCJJbGxlZ2FsIEltcG9ydE5vZGUgY2FsbCBmb3IgTm9kZVR5cGUuRW5kRWxlbWVudCIp OworCQkJCWNhc2UgWG1sTm9kZVR5cGUuRW5kRW50aXR5OgorCQkJCQl0aHJvdyBuZXcgWG1sRXhj ZXB0aW9uICgiSWxsZWdhbCBJbXBvcnROb2RlIGNhbGwgZm9yIE5vZGVUeXBlLkVuZEVudGl0eSIp OworCQkJCWNhc2UgWG1sTm9kZVR5cGUuRW50aXR5OgorCQkJCQl0aHJvdyBuZXcgTm90SW1wbGVt ZW50ZWRFeGNlcHRpb24gKCk7CiAKKwkJCQkvLyBbMjAwMi4xMC4xNF0gQ3JlYXRlRW50aXR5UmVm ZXJlbmNlIG5vdCBpbXBsZW1lbnRlZC4KIAkJCQljYXNlIFhtbE5vZGVUeXBlLkVudGl0eVJlZmVy ZW5jZToKLQkJCQkJcmV0dXJuIHRoaXMuQ3JlYXRlRW50aXR5UmVmZXJlbmNlKG5vZGUuTmFtZSk7 CisJCQkJCXRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEV4Y2VwdGlvbigiSW1wb3J0Tm9kZSBvZiBF bnRpdHlSZWZlcmVuY2Ugbm90IGltcGxlbWVudGVkIG1haW5seSBiZWNhdXNlIENyZWF0ZUVudGl0 eVJlZmVyZW5jZSB3YXMgaW1wbGVtZW50ZWQgaW4gdGhlIG1lYW50aW1lLiIpOworLy8JCQkJCXJl dHVybiB0aGlzLkNyZWF0ZUVudGl0eVJlZmVyZW5jZShub2RlLk5hbWUpOwogCi0JCQkJLy9jYXNl IFhtbE5vZGVUeXBlLk5vbmU6Ci0JCQkJLy8JdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXhjZXB0 aW9uICgpOwotCQkJCS8vY2FzZSBYbWxOb2RlVHlwZS5Ob3RhdGlvbjoKLQkJCQkvLwl0aHJvdyBu ZXcgTm90SW1wbGVtZW50ZWRFeGNlcHRpb24gKCk7CisJCQkJY2FzZSBYbWxOb2RlVHlwZS5Ob25l OgorCQkJCQl0aHJvdyBuZXcgWG1sRXhjZXB0aW9uICgiSWxsZWdhbCBJbXBvcnROb2RlIGNhbGwg Zm9yIE5vZGVUeXBlLk5vbmUiKTsKKwkJCQljYXNlIFhtbE5vZGVUeXBlLk5vdGF0aW9uOgorCQkJ CQl0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFeGNlcHRpb24gKCk7CiAKIAkJCQljYXNlIFhtbE5v ZGVUeXBlLlByb2Nlc3NpbmdJbnN0cnVjdGlvbjoKIAkJCQkJWG1sUHJvY2Vzc2luZ0luc3RydWN0 aW9uIHBpID0gbm9kZSBhcyBYbWxQcm9jZXNzaW5nSW5zdHJ1Y3Rpb247CkBAIC00NjIsOCArNDc5 LDEwIEBACiAJCQkJY2FzZSBYbWxOb2RlVHlwZS5XaGl0ZXNwYWNlOgogCQkJCQlyZXR1cm4gdGhp cy5DcmVhdGVXaGl0ZXNwYWNlKG5vZGUuVmFsdWUpOwogCi0JCQkJLy9jYXNlIFhtbE5vZGVUeXBl LlhtbERlY2xhcmF0aW9uOgotCQkJCS8vCXRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEV4Y2VwdGlv biAoKTsKKwkJCQkvLyBJIGRvbid0IGtub3cgaG93IHRvIHRlc3QgaXQuLi4KKwkJCQljYXNlIFht bE5vZGVUeXBlLlhtbERlY2xhcmF0aW9uOgorCQkJCS8vCXJldHVybiB0aGlzLkNyZWF0ZU5vZGUo WG1sTm9kZVR5cGUuWG1sRGVjbGFyYXRpb24sIFN0cmluZy5FbXB0eSwgbm9kZS5WYWx1ZSk7CisJ CQkJCXRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEV4Y2VwdGlvbiAoKTsKIAogCQkJCWRlZmF1bHQ6 CiAJCQkJCXRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEV4Y2VwdGlvbiAoKTsK --------_3DAAC39652B30519E008_MULTIPART_MIXED_ Content-Type: application/octet-stream; name="XmlDocumentTests.diff" Content-Disposition: attachment; filename="XmlDocumentTests.diff" Content-Transfer-Encoding: base64 LS0tIFhtbERvY3VtZW50VGVzdHMuY3MJMjAwMi0xMC0xNCAyMjowMzo1Ny4wMDAwMDAwMDAgKzA5 MDAKKysrIG5ld1htbERvY3VtZW50VGVzdHMuY3MJMjAwMi0xMC0xNCAyMjowMDoxOS4wMDAwMDAw MDAgKzA5MDAKQEAgLTc0NCw1ICs3NDQsNTQgQEAKIAkJCW5leHRTaWJsaW5nID0gbm9kZS5OZXh0 U2libGluZzsKIAkJCUFzc2VydE51bGwgKCJFeHBlY3RlZCByZW1vdmVkIG5vZGUncyBuZXh0IHNp YmxpbmcgdG8gYmUgbnVsbC4iLCBuZXh0U2libGluZyk7CiAJCX0KKworCQkvLyBJbXBvcnROb2Rl CisJCXB1YmxpYyB2b2lkIFRlc3RJbXBvcnROb2RlICgpCisJCXsKKwkJCVhtbE5vZGUgbjsKKwor CQkJc3RyaW5nIHhsaW5rVVJJID0gImh0dHA6Ly93d3cudzMub3JnLzE5OTkvWExpbmsiOworCQkJ c3RyaW5nIHhtbDEgPSAiPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0ndXRmLTgnID8+PGZv byB4bWxuczp4bGluaz0nIiArIHhsaW5rVVJJICsgIic+PGJhciBhMT0ndjEnIHhsaW5rOmhyZWY9 JyNmb28nPjxiYXo+PCFbQ0RBVEFbY2RhdGEgc2VjdGlvbi5cblx0aXRlbSAxXG5cdGl0ZW0gMlxu XV0+RnJvbSBoZXJlLCBzaW1wbGUgdGV4dCBub2RlLjwvYmF6PjwvYmFyPjwvZm9vPiI7CisJCQlk b2N1bWVudC5Mb2FkWG1sKHhtbDEpOworCQkJWG1sRG9jdW1lbnQgbmV3RG9jID0gbmV3IFhtbERv Y3VtZW50KCk7CisJCQluZXdEb2MuTG9hZFhtbCgiPGhvZ2U+PGZ1Z2EgLz48L2hvZ2U+Iik7CisJ CQlYbWxFbGVtZW50IGJhciA9IGRvY3VtZW50LkRvY3VtZW50RWxlbWVudC5GaXJzdENoaWxkIGFz IFhtbEVsZW1lbnQ7CisKKwkJCS8vIEF0dHJpYnV0ZQorCQkJbiA9IG5ld0RvYy5JbXBvcnROb2Rl KGJhci5HZXRBdHRyaWJ1dGVOb2RlKCJocmVmIiwgeGxpbmtVUkkpLCB0cnVlKTsKKwkJCUFzc2Vy dEVxdWFscygiI0ltcG9ydE5vZGUuQXR0ci5OUy5Mb2NhbE5hbWUiLCAiaHJlZiIsIG4uTG9jYWxO YW1lKTsKKwkJCUFzc2VydEVxdWFscygiI0ltcG9ydE5vZGUuQXR0ci5OUy5OU1VSSSIsIHhsaW5r VVJJLCBuLk5hbWVzcGFjZVVSSSk7CisJCQlBc3NlcnRFcXVhbHMoIiNJbXBvcnROb2RlLkF0dHIu TlMuVmFsdWUiLCAiI2ZvbyIsIG4uVmFsdWUpOworCisJCQkvLyBDREFUQQorCQkJbiA9IG5ld0Rv Yy5JbXBvcnROb2RlKGJhci5GaXJzdENoaWxkLkZpcnN0Q2hpbGQsIHRydWUpOworCQkJQXNzZXJ0 RXF1YWxzKCIjSW1wb3J0Tm9kZS5DREFUQSIsICJjZGF0YSBzZWN0aW9uLlxuXHRpdGVtIDFcblx0 aXRlbSAyXG4iLCBuLlZhbHVlKTsKKworCQkJLy8gRWxlbWVudAorCQkJWG1sRWxlbWVudCBlID0g bmV3RG9jLkltcG9ydE5vZGUoYmFyLCB0cnVlKSBhcyBYbWxFbGVtZW50OworCQkJQXNzZXJ0RXF1 YWxzKCIjSW1wb3J0Tm9kZS5FbGVtZW50Lk5hbWUiLCAiYmFyIiwgZS5OYW1lKTsKKwkJCUFzc2Vy dEVxdWFscygiI0ltcG9ydE5vZGUuRWxlbWVudC5BdHRyIiwgIiNmb28iLCBlLkdldEF0dHJpYnV0 ZSgiaHJlZiIsIHhsaW5rVVJJKSk7CisJCQlBc3NlcnRFcXVhbHMoIiNJbXBvcnROb2RlLkVsZW1l bnQuZGVlcCIsICJiYXoiLCBlLkZpcnN0Q2hpbGQuTmFtZSk7CisKKwkJCS8vIEVudGl0eSBSZWZl cmVuY2U6CisJCQkvLyAgIFsyMDAyLzEwLzE0XSBDcmVhdGVFbnRpdHlSZWZlcmVuY2Ugd2FzIG5v dCBpbXBsZW1lbnRlZC4KKy8vCQkJZG9jdW1lbnQuTG9hZFhtbCgiPCFET0NUWVBFIHRlc3QgUFVC TElDICdkdW1teScgWzwhRU5USVRZIEZPT0VOVCAnZm9vJz5dPjxyb290PiZGT09FTlQ7PC9yb290 PiIpOworLy8JCQluID0gbmV3RG9jLkltcG9ydE5vZGUoZG9jdW1lbnQuRG9jdW1lbnRFbGVtZW50 LkZpcnN0Q2hpbGQpOworLy8JCQlBc3NlcnRFcXVhbHMoIiNJbXBvcnROb2RlLkVudGl0eVJlZmVy ZW5jZSIsICJGT09FTlQiLCBuLk5hbWUpOworLy8JCQlBc3NlcnRFcXVhbHMoIiNJbXBvcnROb2Rl LkVudGl0eVJlZmVyZW5jZSIsICJmb29fIiwgbi5WYWx1ZSk7CisKKwkJCS8vIFByb2Nlc3Npbmcg SW5zdHJ1Y3Rpb24KKwkJCWRvY3VtZW50LkxvYWRYbWwoIjxmb28+PD94bWwtc3R5bGVzaGVldCBo cmVmPSdmb28ueHNsJyA/PjwvZm9vPiIpOworCQkJWG1sUHJvY2Vzc2luZ0luc3RydWN0aW9uIHBp ID0gKFhtbFByb2Nlc3NpbmdJbnN0cnVjdGlvbiluZXdEb2MuSW1wb3J0Tm9kZShkb2N1bWVudC5E b2N1bWVudEVsZW1lbnQuRmlyc3RDaGlsZCwgZmFsc2UpOworCQkJQXNzZXJ0RXF1YWxzKCIjSW1w b3J0Tm9kZS5Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uTmFtZSIsICJ4bWwtc3R5bGVzaGVldCIsIHBp Lk5hbWUpOworCQkJQXNzZXJ0RXF1YWxzKCIjSW1wb3J0Tm9kZS5Qcm9jZXNzaW5nSW5zdHJ1Y3Rp b24uRGF0YSIsICJocmVmPSdmb28ueHNsJyIsIHBpLkRhdGEuVHJpbSgpKTsKKwkJCQorCQkJLy8g VGV4dAorCQkJZG9jdW1lbnQuTG9hZFhtbCh4bWwxKTsKKwkJCW4gPSBuZXdEb2MuSW1wb3J0Tm9k ZSgoWG1sVGV4dCliYXIuRmlyc3RDaGlsZC5DaGlsZE5vZGVzWzFdLCB0cnVlKTsKKwkJCUFzc2Vy dEVxdWFscygiI0ltcG9ydE5vZGUuVGV4dCIsICJGcm9tIGhlcmUsIHNpbXBsZSB0ZXh0IG5vZGUu Iiwgbi5WYWx1ZSk7CisKKwkJCS8vIFdoaXRlc3BhY2UKKwkJfQogCX0KIH0K --------_3DAAC39652B30519E008_MULTIPART_MIXED_ Content-Type: application/octet-stream; name="newXmlDocument.cs" Content-Disposition: attachment; filename="newXmlDocument.cs" Content-Transfer-Encoding: base64 Ly8KLy8gU3lzdGVtLlhtbC5YbWxEb2N1bWVudAovLwovLyBBdXRob3JzOgovLyAgIERhbmllbCBX ZWJlciAoZGFuaWVsLXdlYmVyQGF1c3Rpbi5yci5jb20pCi8vICAgS3JhbCBGZXJjaCA8a3JhbF9m ZXJjaEBob3RtYWlsLmNvbT4KLy8gICBKYXNvbiBEaWFtb25kIDxqYXNvbkBpbmpla3RpbG8ub3Jn PgovLyAgIE1pZ3VlbCBkZSBJY2F6YSAobWlndWVsQHhpbWlhbi5jb20pCi8vICAgRHVuY2FuIE1h ayAoZHVuY2FuQHhpbWlhbi5jb20pCi8vCi8vIChDKSAyMDAxIERhbmllbCBXZWJlcgovLyAoQykg MjAwMiBLcmFsIEZlcmNoLCBKYXNvbiBEaWFtb25kLCBNaWd1ZWwgZGUgSWNhemEsIER1bmNhbiBN YWsKLy8KCnVzaW5nIFN5c3RlbTsKdXNpbmcgU3lzdGVtLklPOwp1c2luZyBTeXN0ZW0uVGV4dDsK dXNpbmcgU3lzdGVtLlhtbC5YUGF0aDsKdXNpbmcgU3lzdGVtLkRpYWdub3N0aWNzOwp1c2luZyBT eXN0ZW0uQ29sbGVjdGlvbnM7CgpuYW1lc3BhY2UgU3lzdGVtLlhtbAp7CglwdWJsaWMgY2xhc3Mg WG1sRG9jdW1lbnQgOiBYbWxOb2RlCgl7CgkJI3JlZ2lvbiBGaWVsZHMKCgkJWG1sTGlua2VkTm9k ZSBsYXN0TGlua2VkQ2hpbGQ7CgkJWG1sTmFtZVRhYmxlIG5hbWVUYWJsZTsKCQlzdHJpbmcgYmFz ZVVSSSA9IFN0cmluZy5FbXB0eTsKCgkJI2VuZHJlZ2lvbgoKCQkjcmVnaW9uIENvbnN0cnVjdG9y cwoKCQlwdWJsaWMgWG1sRG9jdW1lbnQgKCkgOiBiYXNlIChudWxsKSB7IH0KCgkJW01vbm9UT0RP XQoJCXByb3RlY3RlZCBpbnRlcm5hbCBYbWxEb2N1bWVudCAoWG1sSW1wbGVtZW50YXRpb24gaW1w KSA6IGJhc2UgKG51bGwpCgkJewoJCQl0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFeGNlcHRpb24g KCk7CgkJfQoKCQlwdWJsaWMgWG1sRG9jdW1lbnQgKFhtbE5hbWVUYWJsZSBudCkgOiBiYXNlIChu dWxsKQoJCXsKCQkJbmFtZVRhYmxlID0gbnQ7CgkJfQoKCQkjZW5kcmVnaW9uCgoJCSNyZWdpb24g RXZlbnRzCgoJCXB1YmxpYyBldmVudCBYbWxOb2RlQ2hhbmdlZEV2ZW50SGFuZGxlciBOb2RlQ2hh bmdlZDsKCgkJcHVibGljIGV2ZW50IFhtbE5vZGVDaGFuZ2VkRXZlbnRIYW5kbGVyIE5vZGVDaGFu Z2luZzsKCgkJcHVibGljIGV2ZW50IFhtbE5vZGVDaGFuZ2VkRXZlbnRIYW5kbGVyIE5vZGVJbnNl cnRlZDsKCgkJcHVibGljIGV2ZW50IFhtbE5vZGVDaGFuZ2VkRXZlbnRIYW5kbGVyIE5vZGVJbnNl cnRpbmc7CgoJCXB1YmxpYyBldmVudCBYbWxOb2RlQ2hhbmdlZEV2ZW50SGFuZGxlciBOb2RlUmVt b3ZlZDsKCgkJcHVibGljIGV2ZW50IFhtbE5vZGVDaGFuZ2VkRXZlbnRIYW5kbGVyIE5vZGVSZW1v dmluZzsKCgkJI2VuZHJlZ2lvbgoKCQkjcmVnaW9uIFByb3BlcnRpZXMKCgkJcHVibGljIG92ZXJy aWRlIHN0cmluZyBCYXNlVVJJIHsKCQkJZ2V0IHsKCQkJCXJldHVybiBiYXNlVVJJOwoJCQl9CgkJ fQoKCQlwdWJsaWMgWG1sRWxlbWVudCBEb2N1bWVudEVsZW1lbnQgewoJCQlnZXQgewoJCQkJWG1s Tm9kZSBub2RlID0gRmlyc3RDaGlsZDsKCgkJCQl3aGlsZSAobm9kZSAhPSBudWxsKSB7CgkJCQkJ aWYgKG5vZGUgaXMgWG1sRWxlbWVudCkKCQkJCQkJYnJlYWs7CgkJCQkJbm9kZSA9IG5vZGUuTmV4 dFNpYmxpbmc7CgkJCQl9CgoJCQkJcmV0dXJuIG5vZGUgIT0gbnVsbCA/IG5vZGUgYXMgWG1sRWxl bWVudCA6IG51bGw7CgkJCX0KCQl9CgoJCVtNb25vVE9ET10KCQlwdWJsaWMgdmlydHVhbCBYbWxE b2N1bWVudFR5cGUgRG9jdW1lbnRUeXBlIHsKCQkJZ2V0IHsgdGhyb3cgbmV3IE5vdEltcGxlbWVu dGVkRXhjZXB0aW9uKCk7IH0KCQl9CgoJCVtNb25vVE9ET10KCQlwdWJsaWMgWG1sSW1wbGVtZW50 YXRpb24gSW1wbGVtZW50YXRpb24gewoJCQlnZXQgeyB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRF eGNlcHRpb24oKTsgfQoJCX0KCgkJW01vbm9UT0RPICgiU2V0dGVyLiIpXQoJCXB1YmxpYyBvdmVy cmlkZSBzdHJpbmcgSW5uZXJYbWwgewoJCQlnZXQgewoJCQkJLy8gTm90IHN1cmUgd2h5IHRoaXMg aXMgYW4gb3ZlcnJpZGUuICBQYXNzaW5nIHRocm91Z2ggZm9yIG5vdy4KCQkJCXJldHVybiBiYXNl LklubmVyWG1sOwoJCQl9CgkJCXNldCB7IHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEV4Y2VwdGlv bigpOyB9CgkJfQoKCQlwdWJsaWMgb3ZlcnJpZGUgYm9vbCBJc1JlYWRPbmx5IHsKCQkJZ2V0IHsg cmV0dXJuIGZhbHNlOyB9CgkJfQoKCQlpbnRlcm5hbCBvdmVycmlkZSBYbWxMaW5rZWROb2RlIExh c3RMaW5rZWRDaGlsZCB7CgkJCWdldAl7CgkJCQlyZXR1cm4gbGFzdExpbmtlZENoaWxkOwoJCQl9 CgoJCQlzZXQgewoJCQkJbGFzdExpbmtlZENoaWxkID0gdmFsdWU7CgkJCX0KCQl9CgkJCgkJcHVi bGljIG92ZXJyaWRlIHN0cmluZyBMb2NhbE5hbWUgewoJCQlnZXQgeyByZXR1cm4gIiNkb2N1bWVu dCI7IH0KCQl9CgoJCXB1YmxpYyBvdmVycmlkZSBzdHJpbmcgTmFtZSB7CgkJCWdldCB7IHJldHVy biAiI2RvY3VtZW50IjsgfQoJCX0KCgkJcHVibGljIFhtbE5hbWVUYWJsZSBOYW1lVGFibGUgewoJ CQlnZXQgeyByZXR1cm4gbmFtZVRhYmxlOyB9CgkJfQoKCQlwdWJsaWMgb3ZlcnJpZGUgWG1sTm9k ZVR5cGUgTm9kZVR5cGUgewoJCQlnZXQgeyByZXR1cm4gWG1sTm9kZVR5cGUuRG9jdW1lbnQ7IH0K CQl9CgoJCXB1YmxpYyBvdmVycmlkZSBYbWxEb2N1bWVudCBPd25lckRvY3VtZW50IHsKCQkJZ2V0 IHsgcmV0dXJuIG51bGw7IH0KCQl9CgoJCVtNb25vVE9ET10KCQlwdWJsaWMgYm9vbCBQcmVzZXJ2 ZVdoaXRlc3BhY2UgewoJCQlnZXQgeyB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFeGNlcHRpb24o KTsgfQoJCQlzZXQgeyB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFeGNlcHRpb24oKTsgfQoJCX0K CgkJW01vbm9UT0RPXQoJCXB1YmxpYyB2aXJ0dWFsIFhtbFJlc29sdmVyIFhtbFJlc29sdmVyIHsK CQkJc2V0IHsgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXhjZXB0aW9uKCk7IH0KCQl9CgoJCSNl bmRyZWdpb24KCgkJI3JlZ2lvbiBNZXRob2RzCgoJCVtNb25vVE9ET10KCQlwdWJsaWMgb3ZlcnJp ZGUgWG1sTm9kZSBDbG9uZU5vZGUgKGJvb2wgZGVlcCkKCQl7CgkJCXRocm93IG5ldyBOb3RJbXBs ZW1lbnRlZEV4Y2VwdGlvbiAoKTsKCQl9CgoJCXB1YmxpYyBYbWxBdHRyaWJ1dGUgQ3JlYXRlQXR0 cmlidXRlIChzdHJpbmcgbmFtZSkKCQl7CgkJCXJldHVybiBDcmVhdGVBdHRyaWJ1dGUgKG5hbWUs IFN0cmluZy5FbXB0eSk7CgkJfQoKCQlwdWJsaWMgWG1sQXR0cmlidXRlIENyZWF0ZUF0dHJpYnV0 ZSAoc3RyaW5nIHF1YWxpZmllZE5hbWUsIHN0cmluZyBuYW1lc3BhY2VVUkkpCgkJewoJCQlzdHJp bmcgcHJlZml4OwoJCQlzdHJpbmcgbG9jYWxOYW1lOwoKCQkJUGFyc2VOYW1lIChxdWFsaWZpZWRO YW1lLCBvdXQgcHJlZml4LCBvdXQgbG9jYWxOYW1lKTsKCgkJCXJldHVybiBDcmVhdGVBdHRyaWJ1 dGUgKHByZWZpeCwgbG9jYWxOYW1lLCBuYW1lc3BhY2VVUkkpOwoJCX0KCgkJcHVibGljIHZpcnR1 YWwgWG1sQXR0cmlidXRlIENyZWF0ZUF0dHJpYnV0ZSAoc3RyaW5nIHByZWZpeCwgc3RyaW5nIGxv Y2FsTmFtZSwgc3RyaW5nIG5hbWVzcGFjZVVSSSkKCQl7CgkJCWlmICgobG9jYWxOYW1lID09IG51 bGwpIHx8IChsb2NhbE5hbWUgPT0gU3RyaW5nLkVtcHR5KSkKCQkJCXRocm93IG5ldyBBcmd1bWVu dEV4Y2VwdGlvbiAoIlRoZSBhdHRyaWJ1dGUgbG9jYWwgbmFtZSBjYW5ub3QgYmUgZW1wdHkuIik7 CgoJCQlyZXR1cm4gbmV3IFhtbEF0dHJpYnV0ZSAocHJlZml4LCBsb2NhbE5hbWUsIG5hbWVzcGFj ZVVSSSwgdGhpcyk7CgkJfQoKCQlwdWJsaWMgdmlydHVhbCBYbWxDRGF0YVNlY3Rpb24gQ3JlYXRl Q0RhdGFTZWN0aW9uIChzdHJpbmcgZGF0YSkKCQl7CgkJCXJldHVybiBuZXcgWG1sQ0RhdGFTZWN0 aW9uIChkYXRhLCB0aGlzKTsKCQl9CgoJCXB1YmxpYyB2aXJ0dWFsIFhtbENvbW1lbnQgQ3JlYXRl Q29tbWVudCAoc3RyaW5nIGRhdGEpCgkJewoJCQlyZXR1cm4gbmV3IFhtbENvbW1lbnQoZGF0YSwg dGhpcyk7CgkJfQoKCQlbTW9ub1RPRE9dCgkJcHJvdGVjdGVkIGludGVybmFsIHZpcnR1YWwgWG1s QXR0cmlidXRlIENyZWF0ZURlZmF1bHRBdHRyaWJ1dGUgKHN0cmluZyBwcmVmaXgsIHN0cmluZyBs b2NhbE5hbWUsIHN0cmluZyBuYW1lc3BhY2VVUkkpCgkJewoJCQl0aHJvdyBuZXcgTm90SW1wbGVt ZW50ZWRFeGNlcHRpb24gKCk7CgkJfQoKCQlbTW9ub1RPRE9dCgkJcHVibGljIHZpcnR1YWwgWG1s RG9jdW1lbnRGcmFnbWVudCBDcmVhdGVEb2N1bWVudEZyYWdtZW50ICgpCgkJewoJCQl0aHJvdyBu ZXcgTm90SW1wbGVtZW50ZWRFeGNlcHRpb24gKCk7CgkJfQoKCQlwdWJsaWMgdmlydHVhbCBYbWxE b2N1bWVudFR5cGUgQ3JlYXRlRG9jdW1lbnRUeXBlIChzdHJpbmcgbmFtZSwgc3RyaW5nIHB1Ymxp Y0lkLAoJCQkJCQkJCSAgIHN0cmluZyBzeXN0ZW1JZCwgc3RyaW5nIGludGVybmFsU3Vic2V0KQoJ CXsKCQkJcmV0dXJuIG5ldyBYbWxEb2N1bWVudFR5cGUgKG5hbWUsIHB1YmxpY0lkLCBzeXN0ZW1J ZCwgaW50ZXJuYWxTdWJzZXQsIHRoaXMpOwoJCX0KCgkJcHVibGljIFhtbEVsZW1lbnQgQ3JlYXRl RWxlbWVudCAoc3RyaW5nIG5hbWUpCgkJewoJCQlyZXR1cm4gQ3JlYXRlRWxlbWVudCAobmFtZSwg U3RyaW5nLkVtcHR5KTsKCQl9CgoJCXB1YmxpYyBYbWxFbGVtZW50IENyZWF0ZUVsZW1lbnQgKAoJ CQlzdHJpbmcgcXVhbGlmaWVkTmFtZSwgCgkJCXN0cmluZyBuYW1lc3BhY2VVUkkpCgkJewoJCQlz dHJpbmcgcHJlZml4OwoJCQlzdHJpbmcgbG9jYWxOYW1lOwoKCQkJUGFyc2VOYW1lIChxdWFsaWZp ZWROYW1lLCBvdXQgcHJlZml4LCBvdXQgbG9jYWxOYW1lKTsKCgkJCXJldHVybiBDcmVhdGVFbGVt ZW50IChwcmVmaXgsIGxvY2FsTmFtZSwgbmFtZXNwYWNlVVJJKTsKCQl9CgoJCXB1YmxpYyB2aXJ0 dWFsIFhtbEVsZW1lbnQgQ3JlYXRlRWxlbWVudCAoCgkJCXN0cmluZyBwcmVmaXgsCgkJCXN0cmlu ZyBsb2NhbE5hbWUsCgkJCXN0cmluZyBuYW1lc3BhY2VVUkkpCgkJewoJCQlpZiAoKGxvY2FsTmFt ZSA9PSBudWxsKSB8fCAobG9jYWxOYW1lID09IFN0cmluZy5FbXB0eSkpCgkJCQl0aHJvdyBuZXcg QXJndW1lbnRFeGNlcHRpb24gKCJUaGUgbG9jYWwgbmFtZSBmb3IgZWxlbWVudHMgb3IgYXR0cmli dXRlcyBjYW5ub3QgYmUgbnVsbCBvciBhbiBlbXB0eSBzdHJpbmcuIik7CgoJCQlyZXR1cm4gbmV3 IFhtbEVsZW1lbnQgKHByZWZpeCAhPSBudWxsID8gcHJlZml4IDogU3RyaW5nLkVtcHR5LCBsb2Nh bE5hbWUsIG5hbWVzcGFjZVVSSSAhPSBudWxsID8gbmFtZXNwYWNlVVJJIDogU3RyaW5nLkVtcHR5 LCB0aGlzKTsKCQl9CgoJCVtNb25vVE9ET10KCQlwdWJsaWMgdmlydHVhbCBYbWxFbnRpdHlSZWZl cmVuY2UgQ3JlYXRlRW50aXR5UmVmZXJlbmNlIChzdHJpbmcgbmFtZSkKCQl7CgkJCXRocm93IG5l dyBOb3RJbXBsZW1lbnRlZEV4Y2VwdGlvbiAoKTsKCQl9CgoJCVtNb25vVE9ET10KCQlwcm90ZWN0 ZWQgaW50ZXJuYWwgdmlydHVhbCBYUGF0aE5hdmlnYXRvciBDcmVhdGVOYXZpZ2F0b3IgKFhtbE5v ZGUgbm9kZSkKCQl7CgkJCXRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEV4Y2VwdGlvbiAoKTsKCQl9 CgoJCXB1YmxpYyB2aXJ0dWFsIFhtbE5vZGUgQ3JlYXRlTm9kZSAoCgkJCXN0cmluZyBub2RlVHlw ZVN0cmluZywKCQkJc3RyaW5nIG5hbWUsCgkJCXN0cmluZyBuYW1lc3BhY2VVUkkpCgkJewoJCQly ZXR1cm4gQ3JlYXRlTm9kZSAoR2V0Tm9kZVR5cGVGcm9tU3RyaW5nIChub2RlVHlwZVN0cmluZyks IG5hbWUsIG5hbWVzcGFjZVVSSSk7CgkJfQoKCQlwdWJsaWMgdmlydHVhbCBYbWxOb2RlIENyZWF0 ZU5vZGUgKAoJCQlYbWxOb2RlVHlwZSB0eXBlLAoJCQlzdHJpbmcgbmFtZSwKCQkJc3RyaW5nIG5h bWVzcGFjZVVSSSkKCQl7CgkJCXN0cmluZyBwcmVmaXggPSBudWxsOwoJCQlzdHJpbmcgbG9jYWxO YW1lID0gbmFtZTsKCgkJCWlmICgodHlwZSA9PSBYbWxOb2RlVHlwZS5BdHRyaWJ1dGUpIHx8ICh0 eXBlID09IFhtbE5vZGVUeXBlLkVsZW1lbnQpIHx8ICh0eXBlID09IFhtbE5vZGVUeXBlLkVudGl0 eVJlZmVyZW5jZSkpCgkJCQlQYXJzZU5hbWUgKG5hbWUsIG91dCBwcmVmaXgsIG91dCBsb2NhbE5h bWUpOwoJCQkKCQkJcmV0dXJuIENyZWF0ZU5vZGUgKHR5cGUsIHByZWZpeCwgbG9jYWxOYW1lLCBu YW1lc3BhY2VVUkkpOwoJCX0KCgkJcHVibGljIHZpcnR1YWwgWG1sTm9kZSBDcmVhdGVOb2RlICgK CQkJWG1sTm9kZVR5cGUgdHlwZSwKCQkJc3RyaW5nIHByZWZpeCwKCQkJc3RyaW5nIG5hbWUsCgkJ CXN0cmluZyBuYW1lc3BhY2VVUkkpCgkJewoJCQlzd2l0Y2ggKHR5cGUpIHsKCQkJCWNhc2UgWG1s Tm9kZVR5cGUuQXR0cmlidXRlOiByZXR1cm4gQ3JlYXRlQXR0cmlidXRlIChwcmVmaXgsIG5hbWUs IG5hbWVzcGFjZVVSSSk7CgkJCQljYXNlIFhtbE5vZGVUeXBlLkNEQVRBOiByZXR1cm4gQ3JlYXRl Q0RhdGFTZWN0aW9uIChudWxsKTsKCQkJCWNhc2UgWG1sTm9kZVR5cGUuQ29tbWVudDogcmV0dXJu IENyZWF0ZUNvbW1lbnQgKG51bGwpOwoJCQkJY2FzZSBYbWxOb2RlVHlwZS5Eb2N1bWVudDogcmV0 dXJuIG5ldyBYbWxEb2N1bWVudCAoKTsgLy8gVE9ETyAtIHRlc3QgdG8gc2VlIHdoaWNoIGNvbnN0 cnVjdG9yIHRvIHVzZSwgaS5lLiB1c2UgZXhpc3RpbmcgTmFtZVRhYmxlIG9yIG5vdC4KCQkJCWNh c2UgWG1sTm9kZVR5cGUuRG9jdW1lbnRGcmFnbWVudDogcmV0dXJuIENyZWF0ZURvY3VtZW50RnJh Z21lbnQgKCk7CgkJCQljYXNlIFhtbE5vZGVUeXBlLkRvY3VtZW50VHlwZTogcmV0dXJuIENyZWF0 ZURvY3VtZW50VHlwZSAobnVsbCwgbnVsbCwgbnVsbCwgbnVsbCk7CgkJCQljYXNlIFhtbE5vZGVU eXBlLkVsZW1lbnQ6IHJldHVybiBDcmVhdGVFbGVtZW50IChwcmVmaXgsIG5hbWUsIG5hbWVzcGFj ZVVSSSk7CgkJCQljYXNlIFhtbE5vZGVUeXBlLkVudGl0eVJlZmVyZW5jZTogcmV0dXJuIENyZWF0 ZUVudGl0eVJlZmVyZW5jZSAobnVsbCk7CgkJCQljYXNlIFhtbE5vZGVUeXBlLlByb2Nlc3NpbmdJ bnN0cnVjdGlvbjogcmV0dXJuIENyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbiAobnVsbCwgbnVs bCk7CgkJCQljYXNlIFhtbE5vZGVUeXBlLlNpZ25pZmljYW50V2hpdGVzcGFjZTogcmV0dXJuIENy ZWF0ZVNpZ25pZmljYW50V2hpdGVzcGFjZSAoU3RyaW5nLkVtcHR5KTsKCQkJCWNhc2UgWG1sTm9k ZVR5cGUuVGV4dDogcmV0dXJuIENyZWF0ZVRleHROb2RlIChudWxsKTsKCQkJCWNhc2UgWG1sTm9k ZVR5cGUuV2hpdGVzcGFjZTogcmV0dXJuIENyZWF0ZVdoaXRlc3BhY2UgKFN0cmluZy5FbXB0eSk7 CgkJCQljYXNlIFhtbE5vZGVUeXBlLlhtbERlY2xhcmF0aW9uOiByZXR1cm4gQ3JlYXRlWG1sRGVj bGFyYXRpb24gKCIxLjAiLCBudWxsLCBudWxsKTsKCQkJCWRlZmF1bHQ6IHRocm93IG5ldyBBcmd1 bWVudE91dE9mUmFuZ2VFeGNlcHRpb24oU3RyaW5nLkZvcm1hdCgiezB9XG5QYXJhbWV0ZXIgbmFt ZTogezF9IiwKCQkJCQkJCSAiU3BlY2lmaWVkIGFyZ3VtZW50IHdhcyBvdXQgb2YgdGhlIHJhbmdl IG9mIHZhbGlkIHZhbHVlcyIsIHR5cGUuVG9TdHJpbmcgKCkpKTsKCQkJfQoJCX0KCgkJcHVibGlj IHZpcnR1YWwgWG1sUHJvY2Vzc2luZ0luc3RydWN0aW9uIENyZWF0ZVByb2Nlc3NpbmdJbnN0cnVj dGlvbiAoCgkJCXN0cmluZyB0YXJnZXQsCgkJCXN0cmluZyBkYXRhKQoJCXsKCQkJcmV0dXJuIG5l dyBYbWxQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gKHRhcmdldCwgZGF0YSwgdGhpcyk7CgkJfQoKCQlw dWJsaWMgdmlydHVhbCBYbWxTaWduaWZpY2FudFdoaXRlc3BhY2UgQ3JlYXRlU2lnbmlmaWNhbnRX aGl0ZXNwYWNlIChzdHJpbmcgdGV4dCkKCQl7CgkJCWZvcmVhY2ggKGNoYXIgYyBpbiB0ZXh0KQoJ CQkJaWYgKChjICE9ICcgJykgJiYgKGMgIT0gJ1xyJykgJiYgKGMgIT0gJ1xuJykgJiYgKGMgIT0g J1x0JykpCgkJCQkgICAgdGhyb3cgbmV3IEFyZ3VtZW50RXhjZXB0aW9uICgiSW52YWxpZCB3aGl0 ZXNwYWNlIGNoYXJhY3RlcnMuIik7CgkJCSAKCQkJcmV0dXJuIG5ldyBYbWxTaWduaWZpY2FudFdo aXRlc3BhY2UgKHRleHQsIHRoaXMpOwoJCX0KCgkJcHVibGljIHZpcnR1YWwgWG1sVGV4dCBDcmVh dGVUZXh0Tm9kZSAoc3RyaW5nIHRleHQpCgkJewoJCQlyZXR1cm4gbmV3IFhtbFRleHQgKHRleHQs IHRoaXMpOwoJCX0KCgkJcHVibGljIHZpcnR1YWwgWG1sV2hpdGVzcGFjZSBDcmVhdGVXaGl0ZXNw YWNlIChzdHJpbmcgdGV4dCkKCQl7CgkJCWZvcmVhY2ggKGNoYXIgYyBpbiB0ZXh0KQoJCQkJaWYg KChjICE9ICcgJykgJiYgKGMgIT0gJ1xyJykgJiYgKGMgIT0gJ1xuJykgJiYgKGMgIT0gJ1x0Jykp CgkJCQkgICAgdGhyb3cgbmV3IEFyZ3VtZW50RXhjZXB0aW9uICgiSW52YWxpZCB3aGl0ZXNwYWNl IGNoYXJhY3RlcnMuIik7CgkJCSAKCQkJcmV0dXJuIG5ldyBYbWxXaGl0ZXNwYWNlICh0ZXh0LCB0 aGlzKTsKCQl9CgoJCXB1YmxpYyB2aXJ0dWFsIFhtbERlY2xhcmF0aW9uIENyZWF0ZVhtbERlY2xh cmF0aW9uIChzdHJpbmcgdmVyc2lvbiwgc3RyaW5nIGVuY29kaW5nLAoJCQkJCQkJCSAgICBzdHJp bmcgc3RhbmRhbG9uZSkKCQl7CgkJCWlmICh2ZXJzaW9uICE9ICIxLjAiKQoJCQkJdGhyb3cgbmV3 IEFyZ3VtZW50RXhjZXB0aW9uICgidmVyc2lvbiBzdHJpbmcgaXMgbm90IGNvcnJlY3QuIik7CgoJ CQlpZiAgKChzdGFuZGFsb25lICE9IG51bGwpICYmICEoKHN0YW5kYWxvbmUgPT0gInllcyIpIHx8 IChzdGFuZGFsb25lID09ICJubyIpKSkKCQkJCXRocm93IG5ldyBBcmd1bWVudEV4Y2VwdGlvbiAo InN0YW5kYWxvbmUgc3RyaW5nIGlzIG5vdCBjb3JyZWN0LiIpOwoJCQkKCQkJcmV0dXJuIG5ldyBY bWxEZWNsYXJhdGlvbiAodmVyc2lvbiwgZW5jb2RpbmcsIHN0YW5kYWxvbmUsIHRoaXMpOwoJCX0K CgkJW01vbm9UT0RPXQoJCXB1YmxpYyB2aXJ0dWFsIFhtbEVsZW1lbnQgR2V0RWxlbWVudEJ5SWQg KHN0cmluZyBlbGVtZW50SWQpCgkJewoJCQl0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFeGNlcHRp b24gKCk7CgkJfQoKCQlwdWJsaWMgdmlydHVhbCBYbWxOb2RlTGlzdCBHZXRFbGVtZW50c0J5VGFn TmFtZSAoc3RyaW5nIG5hbWUpCgkJewoJCQlBcnJheUxpc3Qgbm9kZUFycmF5TGlzdCA9IG5ldyBB cnJheUxpc3QgKCk7CgkJCXRoaXMuc2VhcmNoTm9kZXNSZWN1cnNpdmVseSAodGhpcywgbmFtZSwg U3RyaW5nLkVtcHR5LCBub2RlQXJyYXlMaXN0KTsKCQkJcmV0dXJuIG5ldyBYbWxOb2RlQXJyYXlM aXN0IChub2RlQXJyYXlMaXN0KTsKCQl9CgoJCXByaXZhdGUgdm9pZCBzZWFyY2hOb2Rlc1JlY3Vy c2l2ZWx5IChYbWxOb2RlIGFyZ05vZGUsIHN0cmluZyBhcmdOYW1lLCBzdHJpbmcgYXJnTmFtZXNw YWNlVVJJLCAKCQkJQXJyYXlMaXN0IGFyZ0FycmF5TGlzdCkKCQl7CgkJCVhtbE5vZGVMaXN0IHht bE5vZGVMaXN0ID0gYXJnTm9kZS5DaGlsZE5vZGVzOwoJCQlmb3JlYWNoIChYbWxOb2RlIG5vZGUg aW4geG1sTm9kZUxpc3QpewoJCQkJaWYgKG5vZGUuTG9jYWxOYW1lLkVxdWFscyAoYXJnTmFtZSkg JiYgbm9kZS5OYW1lc3BhY2VVUkkuRXF1YWxzIChhcmdOYW1lc3BhY2VVUkkpKQoJCQkJCWFyZ0Fy cmF5TGlzdC5BZGQgKG5vZGUpOwoJCQkJZWxzZQkKCQkJCQl0aGlzLnNlYXJjaE5vZGVzUmVjdXJz aXZlbHkgKG5vZGUsIGFyZ05hbWUsIGFyZ05hbWVzcGFjZVVSSSwgYXJnQXJyYXlMaXN0KTsKCQkJ fQoJCX0KCgkJcHVibGljIHZpcnR1YWwgWG1sTm9kZUxpc3QgR2V0RWxlbWVudHNCeVRhZ05hbWUg KHN0cmluZyBsb2NhbE5hbWUsIHN0cmluZyBuYW1lc3BhY2VVUkkpCgkJewoJCQlBcnJheUxpc3Qg bm9kZUFycmF5TGlzdCA9IG5ldyBBcnJheUxpc3QgKCk7CgkJCXRoaXMuc2VhcmNoTm9kZXNSZWN1 cnNpdmVseSAodGhpcywgbG9jYWxOYW1lLCBuYW1lc3BhY2VVUkksIG5vZGVBcnJheUxpc3QpOwoJ CQlyZXR1cm4gbmV3IFhtbE5vZGVBcnJheUxpc3QgKG5vZGVBcnJheUxpc3QpOwoJCX0KCgkJcHJp dmF0ZSBYbWxOb2RlVHlwZSBHZXROb2RlVHlwZUZyb21TdHJpbmcgKHN0cmluZyBub2RlVHlwZVN0 cmluZykKCQl7CgkJCXN3aXRjaCAobm9kZVR5cGVTdHJpbmcpIHsKCQkJCWNhc2UgImF0dHJpYnV0 ZSI6IHJldHVybiBYbWxOb2RlVHlwZS5BdHRyaWJ1dGU7CgkJCQljYXNlICJjZGF0YXNlY3Rpb24i OiByZXR1cm4gWG1sTm9kZVR5cGUuQ0RBVEE7CgkJCQljYXNlICJjb21tZW50IjogcmV0dXJuIFht bE5vZGVUeXBlLkNvbW1lbnQ7CgkJCQljYXNlICJkb2N1bWVudCI6IHJldHVybiBYbWxOb2RlVHlw ZS5Eb2N1bWVudDsKCQkJCWNhc2UgImRvY3VtZW50ZnJhZ21lbnQiOiByZXR1cm4gWG1sTm9kZVR5 cGUuRG9jdW1lbnRGcmFnbWVudDsKCQkJCWNhc2UgImRvY3VtZW50dHlwZSI6IHJldHVybiBYbWxO b2RlVHlwZS5Eb2N1bWVudFR5cGU7CgkJCQljYXNlICJlbGVtZW50IjogcmV0dXJuIFhtbE5vZGVU eXBlLkVsZW1lbnQ7CgkJCQljYXNlICJlbnRpdHlyZWZlcmVuY2UiOiByZXR1cm4gWG1sTm9kZVR5 cGUuRW50aXR5UmVmZXJlbmNlOwoJCQkJY2FzZSAicHJvY2Vzc2luZ2luc3RydWN0aW9uIjogcmV0 dXJuIFhtbE5vZGVUeXBlLlByb2Nlc3NpbmdJbnN0cnVjdGlvbjsKCQkJCWNhc2UgInNpZ25pZmlj YW50d2hpdGVzcGFjZSI6IHJldHVybiBYbWxOb2RlVHlwZS5TaWduaWZpY2FudFdoaXRlc3BhY2U7 CgkJCQljYXNlICJ0ZXh0IjogcmV0dXJuIFhtbE5vZGVUeXBlLlRleHQ7CgkJCQljYXNlICJ3aGl0 ZXNwYWNlIjogcmV0dXJuIFhtbE5vZGVUeXBlLldoaXRlc3BhY2U7CgkJCQlkZWZhdWx0OgoJCQkJ CXRocm93IG5ldyBBcmd1bWVudEV4Y2VwdGlvbihTdHJpbmcuRm9ybWF0KCJUaGUgc3RyaW5nIGRv ZXNuJ3QgcmVwcmVzZW50IGFueSBub2RlIHR5cGUgOiB7MH0uIiwgbm9kZVR5cGVTdHJpbmcpKTsK CQkJfQoJCX0KCgkJW01vbm9UT0RPXQoJCXB1YmxpYyB2aXJ0dWFsIFhtbE5vZGUgSW1wb3J0Tm9k ZSAoWG1sTm9kZSBub2RlLCBib29sIGRlZXApCgkJewoJCQkvLyBIb3cgdG8gcmVzb2x2ZSBkZWZh dWx0IGF0dHJpYnV0ZSB2YWx1ZXM/CgkJCXN3aXRjaChub2RlLk5vZGVUeXBlKQoJCQl7CgkJCQlj YXNlIFhtbE5vZGVUeXBlLkF0dHJpYnV0ZToKCQkJCQl7CgkJCQkJCVhtbEF0dHJpYnV0ZSBzcmNf YXR0ID0gbm9kZSBhcyBYbWxBdHRyaWJ1dGU7CgkJCQkJCVhtbEF0dHJpYnV0ZSBkc3RfYXR0ID0g dGhpcy5DcmVhdGVBdHRyaWJ1dGUoc3JjX2F0dC5QcmVmaXgsIHNyY19hdHQuTG9jYWxOYW1lLCBz cmNfYXR0Lk5hbWVzcGFjZVVSSSk7CgkJCQkJCS8vIFRPRE86IHJlc29sdmUgZGVmYXVsdCBhdHRy aWJ1dGUgdmFsdWVzCgkJCQkJCWRzdF9hdHQuVmFsdWUgPSBzcmNfYXR0LlZhbHVlOwoJCQkJCQly ZXR1cm4gZHN0X2F0dDsKCQkJCQl9CgoJCQkJY2FzZSBYbWxOb2RlVHlwZS5DREFUQToKCQkJCQly ZXR1cm4gdGhpcy5DcmVhdGVDRGF0YVNlY3Rpb24obm9kZS5WYWx1ZSk7CgoJCQkJY2FzZSBYbWxO b2RlVHlwZS5Db21tZW50OgoJCQkJCXJldHVybiB0aGlzLkNyZWF0ZUNvbW1lbnQobm9kZS5WYWx1 ZSk7CgoJCQkJY2FzZSBYbWxOb2RlVHlwZS5Eb2N1bWVudDoKCQkJCQl0aHJvdyBuZXcgWG1sRXhj ZXB0aW9uKCJEb2N1bWVudCBjYW5ub3QgYmUgaW1wb3J0ZWQuIik7CgoJCQkJY2FzZSBYbWxOb2Rl VHlwZS5Eb2N1bWVudEZyYWdtZW50OgoJCQkJCXsKCQkJCQkJWG1sRG9jdW1lbnRGcmFnbWVudCBk ZiA9IHRoaXMuQ3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOwoJCQkJCQlpZihkZWVwKQoJCQkJCQl7 CgkJCQkJCQlmb3JlYWNoKFhtbE5vZGUgbiBpbiBub2RlLkNoaWxkTm9kZXMpCgkJCQkJCQl7CgkJ CQkJCQkJZGYuQXBwZW5kQ2hpbGQodGhpcy5JbXBvcnROb2RlKG4sIGRlZXApKTsKCQkJCQkJCX0K CQkJCQkJfQoJCQkJCQlyZXR1cm4gZGY7CgkJCQkJfQoKCQkJCWNhc2UgWG1sTm9kZVR5cGUuRG9j dW1lbnRUeXBlOgoJCQkJCXRocm93IG5ldyBYbWxFeGNlcHRpb24oIkRvY3VtZW50VHlwZSBjYW5u b3QgYmUgaW1wb3J0ZWQuIik7CgoJCQkJY2FzZSBYbWxOb2RlVHlwZS5FbGVtZW50OgoJCQkJCXsK CQkJCQkJWG1sRWxlbWVudCBzcmMgPSAoWG1sRWxlbWVudClub2RlOwoJCQkJCQlYbWxFbGVtZW50 IGRzdCA9IHRoaXMuQ3JlYXRlRWxlbWVudChzcmMuUHJlZml4LCBzcmMuTG9jYWxOYW1lLCBzcmMu TmFtZXNwYWNlVVJJKTsKCQkJCQkJZm9yZWFjaChYbWxBdHRyaWJ1dGUgYXR0ciBpbiBzcmMuQXR0 cmlidXRlcykKCQkJCQkJewoJCQkJCQkJLy8gVE9ETzogY3JlYXRlIGRlZmF1bHQgYXR0cmlidXRl IHZhbHVlcwoJCQkJCQkJZHN0LlNldEF0dHJpYnV0ZU5vZGUoKFhtbEF0dHJpYnV0ZSl0aGlzLklt cG9ydE5vZGUoYXR0ciwgZGVlcCkpOwoJCQkJCQl9CgkJCQkJCWlmKGRlZXApCgkJCQkJCXsKCQkJ CQkJCWZvcmVhY2goWG1sTm9kZSBuIGluIHNyYy5DaGlsZE5vZGVzKQoJCQkJCQkJCWRzdC5BcHBl bmRDaGlsZCh0aGlzLkltcG9ydE5vZGUobiwgZGVlcCkpOwoJCQkJCQl9CgkJCQkJCXJldHVybiBk c3Q7CgkJCQkJfQoKCQkJCWNhc2UgWG1sTm9kZVR5cGUuRW5kRWxlbWVudDoKCQkJCQl0aHJvdyBu ZXcgWG1sRXhjZXB0aW9uICgiSWxsZWdhbCBJbXBvcnROb2RlIGNhbGwgZm9yIE5vZGVUeXBlLkVu ZEVsZW1lbnQiKTsKCQkJCWNhc2UgWG1sTm9kZVR5cGUuRW5kRW50aXR5OgoJCQkJCXRocm93IG5l dyBYbWxFeGNlcHRpb24gKCJJbGxlZ2FsIEltcG9ydE5vZGUgY2FsbCBmb3IgTm9kZVR5cGUuRW5k RW50aXR5Iik7CgkJCQljYXNlIFhtbE5vZGVUeXBlLkVudGl0eToKCQkJCQl0aHJvdyBuZXcgTm90 SW1wbGVtZW50ZWRFeGNlcHRpb24gKCk7CgoJCQkJLy8gWzIwMDIuMTAuMTRdIENyZWF0ZUVudGl0 eVJlZmVyZW5jZSBub3QgaW1wbGVtZW50ZWQuCgkJCQljYXNlIFhtbE5vZGVUeXBlLkVudGl0eVJl ZmVyZW5jZToKCQkJCQl0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFeGNlcHRpb24oIkltcG9ydE5v ZGUgb2YgRW50aXR5UmVmZXJlbmNlIG5vdCBpbXBsZW1lbnRlZCBtYWlubHkgYmVjYXVzZSBDcmVh dGVFbnRpdHlSZWZlcmVuY2Ugd2FzIGltcGxlbWVudGVkIGluIHRoZSBtZWFudGltZS4iKTsKLy8J CQkJCXJldHVybiB0aGlzLkNyZWF0ZUVudGl0eVJlZmVyZW5jZShub2RlLk5hbWUpOwoKCQkJCWNh c2UgWG1sTm9kZVR5cGUuTm9uZToKCQkJCQl0aHJvdyBuZXcgWG1sRXhjZXB0aW9uICgiSWxsZWdh bCBJbXBvcnROb2RlIGNhbGwgZm9yIE5vZGVUeXBlLk5vbmUiKTsKCQkJCWNhc2UgWG1sTm9kZVR5 cGUuTm90YXRpb246CgkJCQkJdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXhjZXB0aW9uICgpOwoK CQkJCWNhc2UgWG1sTm9kZVR5cGUuUHJvY2Vzc2luZ0luc3RydWN0aW9uOgoJCQkJCVhtbFByb2Nl c3NpbmdJbnN0cnVjdGlvbiBwaSA9IG5vZGUgYXMgWG1sUHJvY2Vzc2luZ0luc3RydWN0aW9uOwoJ CQkJCXJldHVybiB0aGlzLkNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbihwaS5UYXJnZXQsIHBp LkRhdGEpOwoKCQkJCWNhc2UgWG1sTm9kZVR5cGUuU2lnbmlmaWNhbnRXaGl0ZXNwYWNlOgoJCQkJ CXJldHVybiB0aGlzLkNyZWF0ZVNpZ25pZmljYW50V2hpdGVzcGFjZShub2RlLlZhbHVlKTsKCgkJ CQljYXNlIFhtbE5vZGVUeXBlLlRleHQ6CgkJCQkJcmV0dXJuIHRoaXMuQ3JlYXRlVGV4dE5vZGUo bm9kZS5WYWx1ZSk7CgoJCQkJY2FzZSBYbWxOb2RlVHlwZS5XaGl0ZXNwYWNlOgoJCQkJCXJldHVy biB0aGlzLkNyZWF0ZVdoaXRlc3BhY2Uobm9kZS5WYWx1ZSk7CgoJCQkJLy8gSSBkb24ndCBrbm93 IGhvdyB0byB0ZXN0IGl0Li4uCgkJCQljYXNlIFhtbE5vZGVUeXBlLlhtbERlY2xhcmF0aW9uOgoJ CQkJLy8JcmV0dXJuIHRoaXMuQ3JlYXRlTm9kZShYbWxOb2RlVHlwZS5YbWxEZWNsYXJhdGlvbiwg U3RyaW5nLkVtcHR5LCBub2RlLlZhbHVlKTsKCQkJCQl0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRF eGNlcHRpb24gKCk7CgoJCQkJZGVmYXVsdDoKCQkJCQl0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRF eGNlcHRpb24gKCk7CgkJCX0KCQl9CgoJCXB1YmxpYyB2aXJ0dWFsIHZvaWQgTG9hZCAoU3RyZWFt IGluU3RyZWFtKQoJCXsKCQkJWG1sUmVhZGVyIHhtbFJlYWRlciA9IG5ldyBYbWxUZXh0UmVhZGVy IChpblN0cmVhbSk7CgkJCUxvYWQgKHhtbFJlYWRlcik7CgkJfQoKCQlwdWJsaWMgdmlydHVhbCB2 b2lkIExvYWQgKHN0cmluZyBmaWxlbmFtZSkKCQl7CgkJCWJhc2VVUkkgPSBmaWxlbmFtZTsKCQkJ WG1sUmVhZGVyIHhtbFJlYWRlciA9IG5ldyBYbWxUZXh0UmVhZGVyIChuZXcgU3RyZWFtUmVhZGVy IChmaWxlbmFtZSkpOwoJCQlMb2FkICh4bWxSZWFkZXIpOwoJCX0KCgkJcHVibGljIHZpcnR1YWwg dm9pZCBMb2FkIChUZXh0UmVhZGVyIHR4dFJlYWRlcikKCQl7CgkJCUxvYWQgKG5ldyBYbWxUZXh0 UmVhZGVyICh0eHRSZWFkZXIpKTsKCQl9CgoJCXB1YmxpYyB2aXJ0dWFsIHZvaWQgTG9hZCAoWG1s UmVhZGVyIHhtbFJlYWRlcikKCQl7CgkJCS8vIFJlc2V0IG91ciBkb2N1bWVudAoJCQkvLyBGb3Ig bm93IHRoaXMganVzdCBtZWFucyByZW1vdmluZyBhbGwgb3VyIGNoaWxkcmVuIGJ1dCBsYXRlciB0 aGlzCgkJCS8vIG1heSB0dXJuIG91dCBvIG5lZWQgdG8gY2FsbCBhIHByaXZhdGUgbWV0aG9kIHRo YXQgcmVzZXRzIG90aGVyIHRoaW5ncwoJCQkvLyBsaWtlIHByb3BlcnRpZXMgd2UgaGF2ZSwgZXRj LgoJCQlSZW1vdmVBbGwgKCk7CgoJCQlYbWxOb2RlIGN1cnJlbnROb2RlID0gdGhpczsKCQkJWG1s Tm9kZSBuZXdOb2RlOwoKCQkJd2hpbGUgKHhtbFJlYWRlci5SZWFkICgpKSAKCQkJewoJCQkJc3dp dGNoICh4bWxSZWFkZXIuTm9kZVR5cGUpIHsKCgkJCQljYXNlIFhtbE5vZGVUeXBlLkNEQVRBOgoJ CQkJCW5ld05vZGUgPSBDcmVhdGVDRGF0YVNlY3Rpb24oeG1sUmVhZGVyLlZhbHVlKTsKCQkJCQlj dXJyZW50Tm9kZS5BcHBlbmRDaGlsZCAobmV3Tm9kZSk7CgkJCQkJYnJlYWs7CgoJCQkJY2FzZSBY bWxOb2RlVHlwZS5Db21tZW50OgoJCQkJCW5ld05vZGUgPSBDcmVhdGVDb21tZW50ICh4bWxSZWFk ZXIuVmFsdWUpOwoJCQkJCWN1cnJlbnROb2RlLkFwcGVuZENoaWxkIChuZXdOb2RlKTsKCQkJCQli cmVhazsKCgkJCQljYXNlIFhtbE5vZGVUeXBlLkVsZW1lbnQ6CgkJCQkJWG1sRWxlbWVudCBlbGVt ZW50ID0gQ3JlYXRlRWxlbWVudCAoeG1sUmVhZGVyLlByZWZpeCwgeG1sUmVhZGVyLkxvY2FsTmFt ZSwgeG1sUmVhZGVyLk5hbWVzcGFjZVVSSSk7CgkJCQkJY3VycmVudE5vZGUuQXBwZW5kQ2hpbGQg KGVsZW1lbnQpOwoKCQkJCQkvLyBzZXQgdGhlIGVsZW1lbnQncyBhdHRyaWJ1dGVzLgoJCQkJCXdo aWxlICh4bWxSZWFkZXIuTW92ZVRvTmV4dEF0dHJpYnV0ZSAoKSkgewoJCQkJCQlYbWxBdHRyaWJ1 dGUgYXR0cmlidXRlID0gQ3JlYXRlQXR0cmlidXRlICh4bWxSZWFkZXIuUHJlZml4LCB4bWxSZWFk ZXIuTG9jYWxOYW1lLCB4bWxSZWFkZXIuTmFtZXNwYWNlVVJJKTsKCQkJCQkJYXR0cmlidXRlLlZh bHVlID0geG1sUmVhZGVyLlZhbHVlOwoJCQkJCQllbGVtZW50LlNldEF0dHJpYnV0ZU5vZGUgKGF0 dHJpYnV0ZSk7CgkJCQkJfQoKCQkJCQl4bWxSZWFkZXIuTW92ZVRvRWxlbWVudCAoKTsKCgkJCQkJ Ly8gaWYgdGhpcyBlbGVtZW50IGlzbid0IGVtcHR5LCBwdXNoIGl0IG9udG8gb3VyICJzdGFjayIu CgkJCQkJaWYgKCF4bWxSZWFkZXIuSXNFbXB0eUVsZW1lbnQpCgkJCQkJCWN1cnJlbnROb2RlID0g ZWxlbWVudDsKCgkJCQkJYnJlYWs7CgoJCQkJY2FzZSBYbWxOb2RlVHlwZS5FbmRFbGVtZW50OgoJ CQkJCWN1cnJlbnROb2RlID0gY3VycmVudE5vZGUuUGFyZW50Tm9kZTsKCQkJCQlicmVhazsKCgkJ CQljYXNlIFhtbE5vZGVUeXBlLlByb2Nlc3NpbmdJbnN0cnVjdGlvbjoKCQkJCQluZXdOb2RlID0g Q3JlYXRlUHJvY2Vzc2luZ0luc3RydWN0aW9uICh4bWxSZWFkZXIuTmFtZSwgeG1sUmVhZGVyLlZh bHVlKTsKCQkJCQljdXJyZW50Tm9kZS5BcHBlbmRDaGlsZCAobmV3Tm9kZSk7CgkJCQkJYnJlYWs7 CgoJCQkJY2FzZSBYbWxOb2RlVHlwZS5UZXh0OgoJCQkJCW5ld05vZGUgPSBDcmVhdGVUZXh0Tm9k ZSAoeG1sUmVhZGVyLlZhbHVlKTsKCQkJCQljdXJyZW50Tm9kZS5BcHBlbmRDaGlsZCAobmV3Tm9k ZSk7CgkJCQkJYnJlYWs7CgkJCQl9CgkJCX0KCQl9CgoJCXB1YmxpYyB2aXJ0dWFsIHZvaWQgTG9h ZFhtbCAoc3RyaW5nIHhtbCkKCQl7CgkJCVhtbFJlYWRlciB4bWxSZWFkZXIgPSBuZXcgWG1sVGV4 dFJlYWRlciAobmV3IFN0cmluZ1JlYWRlciAoeG1sKSk7CgkJCUxvYWQgKHhtbFJlYWRlcik7CgkJ fQoKCQlpbnRlcm5hbCB2b2lkIG9uTm9kZUNoYW5nZWQgKFhtbE5vZGUgbm9kZSwgWG1sTm9kZSBQ YXJlbnQpCgkJewoJCQlpZiAoTm9kZUNoYW5nZWQgIT0gbnVsbCkKCQkJCU5vZGVDaGFuZ2VkIChu b2RlLCBuZXcgWG1sTm9kZUNoYW5nZWRFdmVudEFyZ3MKCQkJCQkoWG1sTm9kZUNoYW5nZWRBY3Rp b24uQ2hhbmdlLAoJCQkJCW5vZGUsIFBhcmVudCwgUGFyZW50KSk7CgkJfQoKCQlpbnRlcm5hbCB2 b2lkIG9uTm9kZUNoYW5naW5nKFhtbE5vZGUgbm9kZSwgWG1sTm9kZSBQYXJlbnQpCgkJewoJCQlp ZiAoTm9kZUNoYW5naW5nICE9IG51bGwpCgkJCQlOb2RlQ2hhbmdpbmcgKG5vZGUsIG5ldyBYbWxO b2RlQ2hhbmdlZEV2ZW50QXJncwoJCQkJCShYbWxOb2RlQ2hhbmdlZEFjdGlvbi5DaGFuZ2UsCgkJ CQkJbm9kZSwgUGFyZW50LCBQYXJlbnQpKTsKCQl9CgoJCWludGVybmFsIHZvaWQgb25Ob2RlSW5z ZXJ0ZWQgKFhtbE5vZGUgbm9kZSwgWG1sTm9kZSBuZXdQYXJlbnQpCgkJewoJCQlpZiAoTm9kZUlu c2VydGVkICE9IG51bGwpCgkJCQlOb2RlSW5zZXJ0ZWQgKG5vZGUsIG5ldyBYbWxOb2RlQ2hhbmdl ZEV2ZW50QXJncwoJCQkJCShYbWxOb2RlQ2hhbmdlZEFjdGlvbi5JbnNlcnQsCgkJCQkJbm9kZSwg bnVsbCwgbmV3UGFyZW50KSk7CgkJfQoKCQlpbnRlcm5hbCB2b2lkIG9uTm9kZUluc2VydGluZyAo WG1sTm9kZSBub2RlLCBYbWxOb2RlIG5ld1BhcmVudCkKCQl7CgkJCWlmIChOb2RlSW5zZXJ0aW5n ICE9IG51bGwpCgkJCQlOb2RlSW5zZXJ0aW5nIChub2RlLCBuZXcgWG1sTm9kZUNoYW5nZWRFdmVu dEFyZ3MKCQkJCQkoWG1sTm9kZUNoYW5nZWRBY3Rpb24uSW5zZXJ0LAoJCQkJCW5vZGUsIG51bGws IG5ld1BhcmVudCkpOwoJCX0KCgkJaW50ZXJuYWwgdm9pZCBvbk5vZGVSZW1vdmVkIChYbWxOb2Rl IG5vZGUsIFhtbE5vZGUgb2xkUGFyZW50KQoJCXsKCQkJaWYgKE5vZGVSZW1vdmVkICE9IG51bGwp CgkJCQlOb2RlUmVtb3ZlZCAobm9kZSwgbmV3IFhtbE5vZGVDaGFuZ2VkRXZlbnRBcmdzCgkJCQkJ KFhtbE5vZGVDaGFuZ2VkQWN0aW9uLlJlbW92ZSwKCQkJCQlub2RlLCBvbGRQYXJlbnQsIG51bGwp KTsKCQl9CgoJCWludGVybmFsIHZvaWQgb25Ob2RlUmVtb3ZpbmcgKFhtbE5vZGUgbm9kZSwgWG1s Tm9kZSBvbGRQYXJlbnQpCgkJewoJCQlpZiAoTm9kZVJlbW92aW5nICE9IG51bGwpCgkJCQlOb2Rl UmVtb3ZpbmcgKG5vZGUsIG5ldyBYbWxOb2RlQ2hhbmdlZEV2ZW50QXJncwoJCQkJCShYbWxOb2Rl Q2hhbmdlZEFjdGlvbi5SZW1vdmUsCgkJCQkJbm9kZSwgb2xkUGFyZW50LCBudWxsKSk7CgkJfQoK CQlwcml2YXRlIHZvaWQgUGFyc2VOYW1lIChzdHJpbmcgbmFtZSwgb3V0IHN0cmluZyBwcmVmaXgs IG91dCBzdHJpbmcgbG9jYWxOYW1lKQoJCXsKCQkJaW50IGluZGV4T2ZDb2xvbiA9IG5hbWUuSW5k ZXhPZiAoJzonKTsKCQkJCgkJCWlmIChpbmRleE9mQ29sb24gIT0gLTEpIHsKCQkJCXByZWZpeCA9 IG5hbWUuU3Vic3RyaW5nICgwLCBpbmRleE9mQ29sb24pOwoJCQkJbG9jYWxOYW1lID0gbmFtZS5T dWJzdHJpbmcgKGluZGV4T2ZDb2xvbiArIDEpOwoJCQl9IGVsc2UgewoJCQkJcHJlZml4ID0gIiI7 CgkJCQlsb2NhbE5hbWUgPSBuYW1lOwoJCQl9CgkJfQoKCQlbTW9ub1RPRE9dCgkJcHVibGljIHZp cnR1YWwgWG1sTm9kZSBSZWFkTm9kZShYbWxSZWFkZXIgcmVhZGVyKQoJCXsKCQkJdGhyb3cgbmV3 IE5vdEltcGxlbWVudGVkRXhjZXB0aW9uICgpOwoJCX0KCgkJW01vbm9UT0RPICgiVmVyaWZ5IHdo YXQgZW5jb2RpbmcgaXMgdXNlZCBieSBkZWZhdWx0OyAgU2hvdWxkIHVzZSBQcmVzZXJ2ZVdoaXRl U3BhY2UiKV0KCQlwdWJsaWMgdmlydHVhbCB2b2lkIFNhdmUoU3RyZWFtIG91dFN0cmVhbSkKCQl7 CgkJCVhtbFRleHRXcml0ZXIgeG1sV3JpdGVyID0gbmV3IFhtbFRleHRXcml0ZXIgKG91dFN0cmVh bSwgRW5jb2RpbmcuVVRGOCk7CgkJCVdyaXRlQ29udGVudFRvICh4bWxXcml0ZXIpOwoJCQl4bWxX cml0ZXIuQ2xvc2UgKCk7CgkJfQoKCQlbTW9ub1RPRE8gKCJWZXJpZnkgd2hhdCBlbmNvZGluZyBp cyB1c2VkIGJ5IGRlZmF1bHQ7IFNob3VsZCB1c2UgUHJlc2V2ZVdoaXRlU3BhY2UiKV0KCQlwdWJs aWMgdmlydHVhbCB2b2lkIFNhdmUgKHN0cmluZyBmaWxlbmFtZSkKCQl7CgkJCVhtbFRleHRXcml0 ZXIgeG1sV3JpdGVyID0gbmV3IFhtbFRleHRXcml0ZXIgKGZpbGVuYW1lLCBFbmNvZGluZy5VVEY4 KTsKCQkJV3JpdGVDb250ZW50VG8gKHhtbFdyaXRlcik7CgkJCXhtbFdyaXRlci5DbG9zZSAoKTsK CQl9CgoJCVtNb25vVE9ET10KCQlwdWJsaWMgdmlydHVhbCB2b2lkIFNhdmUgKFRleHRXcml0ZXIg d3JpdGVyKQoJCXsKCQkJWG1sVGV4dFdyaXRlciB4bWxXcml0ZXIgPSBuZXcgWG1sVGV4dFdyaXRl ciAod3JpdGVyKTsKCQkJV3JpdGVDb250ZW50VG8gKHhtbFdyaXRlcik7CgkJCXhtbFdyaXRlci5G bHVzaCAoKTsKCQl9CgoJCVtNb25vVE9ETyAoIlNob3VsZCBwcmVzZXJ2ZSB3aGl0ZSBzcGFjZSBp ZiBQcmVzZXJ2ZVdoaXNzcGFjZSBpcyBzZXQiKV0KCQlwdWJsaWMgdmlydHVhbCB2b2lkIFNhdmUg KFhtbFdyaXRlciB4bWxXcml0ZXIpCgkJewoJCQkvLwoJCQkvLyBUaGlzIHNob3VsZCBwcmVzZXJ2 ZSB3aGl0ZSBzcGFjZSBpZiBQcmVzZXJ2ZVdoaXRlU3BhY2UgaXMgdHJ1ZQoJCQkvLwoJCQlXcml0 ZUNvbnRlbnRUbyAoeG1sV3JpdGVyKTsKCQkJeG1sV3JpdGVyLkZsdXNoICgpOwoJCX0KCgkJcHVi bGljIG92ZXJyaWRlIHZvaWQgV3JpdGVDb250ZW50VG8gKFhtbFdyaXRlciB3KQoJCXsKCQkJZm9y ZWFjaChYbWxOb2RlIGNoaWxkTm9kZSBpbiBDaGlsZE5vZGVzKQoJCQkJY2hpbGROb2RlLldyaXRl VG8odyk7CgkJfQoKCQlwdWJsaWMgb3ZlcnJpZGUgdm9pZCBXcml0ZVRvIChYbWxXcml0ZXIgdykK CQl7CgkJCVdyaXRlQ29udGVudFRvKHcpOwoJCX0KCgkJI2VuZHJlZ2lvbgoJfQp9Cg== --------_3DAAC39652B30519E008_MULTIPART_MIXED_ Content-Type: application/octet-stream; name="newXmlDocumentTests.cs" Content-Disposition: attachment; filename="newXmlDocumentTests.cs" Content-Transfer-Encoding: base64 Ly8KLy8gU3lzdGVtLlhtbC5YbWxEb2N1bWVudFRlc3RzCi8vCi8vIEF1dGhvcnM6Ci8vICAgSmFz b24gRGlhbW9uZCA8amFzb25AaW5qZWt0aWxvLm9yZz4KLy8gICBLcmFsIEZlcmNoIDxrcmFsX2Zl cmNoQGhvdG1haWwuY29tPgovLwovLyAoQykgMjAwMiBKYXNvbiBEaWFtb25kLCBLcmFsIEZlcmNo Ci8vCgp1c2luZyBTeXN0ZW07CnVzaW5nIFN5c3RlbS5Db2xsZWN0aW9uczsKdXNpbmcgU3lzdGVt LlhtbDsKdXNpbmcgU3lzdGVtLklPOwp1c2luZyBTeXN0ZW0uVGV4dDsKCnVzaW5nIE5Vbml0LkZy YW1ld29yazsKCm5hbWVzcGFjZSBNb25vVGVzdHMuU3lzdGVtLlhtbAp7CglwdWJsaWMgY2xhc3Mg WG1sRG9jdW1lbnRUZXN0cyA6IFRlc3RDYXNlCgl7CgkJcHVibGljIFhtbERvY3VtZW50VGVzdHMg KCkgOiBiYXNlICgiTW9ub1Rlc3RzLlN5c3RlbS5YbWwuWG1sRG9jdW1lbnRUZXN0cyB0ZXN0c3Vp dGUiKSB7fQoJCXB1YmxpYyBYbWxEb2N1bWVudFRlc3RzIChzdHJpbmcgbmFtZSkgOiBiYXNlIChu YW1lKSB7fQoKCQlwcml2YXRlIFhtbERvY3VtZW50IGRvY3VtZW50OwoJCXByaXZhdGUgQXJyYXlM aXN0IGV2ZW50U3RyaW5ncyA9IG5ldyBBcnJheUxpc3QoKTsKCgkJLy8gVGhlc2UgRXZlbnQqIG1l dGhvZHMgc3VwcG9ydCB0aGUgVGVzdEV2ZW50Tm9kZSogVGVzdHMgaW4gdGhpcyBmaWxlLgoJCS8v IE1vc3Qgb2YgdGhlbSBhcmUgZXZlbnQgaGFuZGxlcnMgZm9yIHRoZSBYbWxOb2RlQ2hhbmdlZEV2 ZW50SGFuZGxlcgoJCS8vIGRlbGVnYXRlLgoJCXByaXZhdGUgdm9pZCBFdmVudFN0cmluZ0FkZChz dHJpbmcgZXZlbnROYW1lLCBYbWxOb2RlQ2hhbmdlZEV2ZW50QXJncyBlKQoJCXsKCQkJc3RyaW5n IG9sZFBhcmVudCA9IChlLk9sZFBhcmVudCAhPSBudWxsKSA/IGUuT2xkUGFyZW50Lk5hbWUgOiAi PG5vbmU+IjsKCQkJc3RyaW5nIG5ld1BhcmVudCA9IChlLk5ld1BhcmVudCAhPSBudWxsKSA/IGUu TmV3UGFyZW50Lk5hbWUgOiAiPG5vbmU+IjsKCQkJZXZlbnRTdHJpbmdzLkFkZCAoU3RyaW5nLkZv cm1hdCAoInswfSwgezF9LCB7Mn0sIHszfSwgezR9IiwgZXZlbnROYW1lLCBlLkFjdGlvbi5Ub1N0 cmluZyAoKSwgZS5Ob2RlLk91dGVyWG1sLCBvbGRQYXJlbnQsIG5ld1BhcmVudCkpOwoJCX0KCgkJ cHJpdmF0ZSB2b2lkIEV2ZW50Tm9kZUNoYW5nZWQoT2JqZWN0IHNlbmRlciwgWG1sTm9kZUNoYW5n ZWRFdmVudEFyZ3MgZSkKCQl7CgkJCUV2ZW50U3RyaW5nQWRkICgiTm9kZUNoYW5nZWQiLCBlKTsK CQl9CgoJCXByaXZhdGUgdm9pZCBFdmVudE5vZGVDaGFuZ2luZyAoT2JqZWN0IHNlbmRlciwgWG1s Tm9kZUNoYW5nZWRFdmVudEFyZ3MgZSkKCQl7CgkJCUV2ZW50U3RyaW5nQWRkICgiTm9kZUNoYW5n aW5nIiwgZSk7CgkJfQoKCQlwcml2YXRlIHZvaWQgRXZlbnROb2RlQ2hhbmdpbmdFeGNlcHRpb24g KE9iamVjdCBzZW5kZXIsIFhtbE5vZGVDaGFuZ2VkRXZlbnRBcmdzIGUpCgkJewoJCQl0aHJvdyBu ZXcgRXhjZXB0aW9uICgiZG9uJ3QgY2hhbmdlIHRoZSB2YWx1ZS4iKTsKCQl9CgoJCXByaXZhdGUg dm9pZCBFdmVudE5vZGVJbnNlcnRlZChPYmplY3Qgc2VuZGVyLCBYbWxOb2RlQ2hhbmdlZEV2ZW50 QXJncyBlKQoJCXsKCQkJRXZlbnRTdHJpbmdBZGQgKCJOb2RlSW5zZXJ0ZWQiLCBlKTsKCQl9CgoJ CXByaXZhdGUgdm9pZCBFdmVudE5vZGVJbnNlcnRpbmcoT2JqZWN0IHNlbmRlciwgWG1sTm9kZUNo YW5nZWRFdmVudEFyZ3MgZSkKCQl7CgkJCUV2ZW50U3RyaW5nQWRkICgiTm9kZUluc2VydGluZyIs IGUpOwoJCX0KCgkJcHJpdmF0ZSB2b2lkIEV2ZW50Tm9kZUluc2VydGluZ0V4Y2VwdGlvbihPYmpl Y3Qgc2VuZGVyLCBYbWxOb2RlQ2hhbmdlZEV2ZW50QXJncyBlKQoJCXsKCQkJdGhyb3cgbmV3IEV4 Y2VwdGlvbiAoImRvbid0IGluc2VydCB0aGUgZWxlbWVudC4iKTsKCQl9CgoJCXByaXZhdGUgdm9p ZCBFdmVudE5vZGVSZW1vdmVkKE9iamVjdCBzZW5kZXIsIFhtbE5vZGVDaGFuZ2VkRXZlbnRBcmdz IGUpCgkJewoJCQlFdmVudFN0cmluZ0FkZCAoIk5vZGVSZW1vdmVkIiwgZSk7CgkJfQoKCQlwcml2 YXRlIHZvaWQgRXZlbnROb2RlUmVtb3ZpbmcoT2JqZWN0IHNlbmRlciwgWG1sTm9kZUNoYW5nZWRF dmVudEFyZ3MgZSkKCQl7CgkJCUV2ZW50U3RyaW5nQWRkICgiTm9kZVJlbW92aW5nIiwgZSk7CgkJ fQoKCQlwcml2YXRlIHZvaWQgRXZlbnROb2RlUmVtb3ZpbmdFeGNlcHRpb24oT2JqZWN0IHNlbmRl ciwgWG1sTm9kZUNoYW5nZWRFdmVudEFyZ3MgZSkKCQl7CgkJCXRocm93IG5ldyBFeGNlcHRpb24g KCJkb24ndCByZW1vdmUgdGhlIGVsZW1lbnQuIik7CgkJfQoKCQlwcm90ZWN0ZWQgb3ZlcnJpZGUg dm9pZCBTZXRVcCAoKQoJCXsKCQkJZG9jdW1lbnQgPSBuZXcgWG1sRG9jdW1lbnQgKCk7CgkJfQoK CQlwdWJsaWMgdm9pZCBUZXN0Q3JlYXRlTm9kZU5vZGVUeXBlTmFtZUVtcHR5UGFyYW1zICgpCgkJ ewoJCQlYbWxOb2RlIG5vZGU7CgoJCQl0cnkgewoJCQkJbm9kZSA9IGRvY3VtZW50LkNyZWF0ZU5v ZGUgKG51bGwsIG51bGwsIG51bGwpOwoJCQkJRmFpbCAoIkV4cGVjdGVkIGFuIEFyZ3VtZW50RXhj ZXB0aW9uIHRvIGJlIHRocm93bi4iKTsKCQkJfSBjYXRjaCAoQXJndW1lbnRFeGNlcHRpb24pIHt9 CgoJCQl0cnkgewoJCQkJbm9kZSA9IGRvY3VtZW50LkNyZWF0ZU5vZGUgKCJhdHRyaWJ1dGUiLCBu dWxsLCBudWxsKTsKCQkJCUZhaWwgKCJFeHBlY3RlZCBhIE51bGxSZWZlcmVuY2VFeGNlcHRpb24g dG8gYmUgdGhyb3duLiIpOwoJCQl9IGNhdGNoIChOdWxsUmVmZXJlbmNlRXhjZXB0aW9uKSB7fQoK CQkJdHJ5IHsKCQkJCW5vZGUgPSBkb2N1bWVudC5DcmVhdGVOb2RlICgiYXR0cmlidXRlIiwgIiIs IG51bGwpOwoJCQkJRmFpbCAoIkV4cGVjdGVkIGFuIEFyZ3VtZW50RXhjZXB0aW9uIHRvIGJlIHRo cm93bi4iKTsKCQkJfSBjYXRjaCAoQXJndW1lbnRFeGNlcHRpb24pIHt9CgoJCQl0cnkgewoJCQkJ bm9kZSA9IGRvY3VtZW50LkNyZWF0ZU5vZGUgKCJlbGVtZW50IiwgbnVsbCwgbnVsbCk7CgkJCQlG YWlsICgiRXhwZWN0ZWQgYSBOdWxsUmVmZXJlbmNlRXhjZXB0aW9uIHRvIGJlIHRocm93bi4iKTsK CQkJfSBjYXRjaCAoTnVsbFJlZmVyZW5jZUV4Y2VwdGlvbikge30KCgkJCXRyeSB7CgkJCQlub2Rl ID0gZG9jdW1lbnQuQ3JlYXRlTm9kZSAoImVsZW1lbnQiLCAiIiwgbnVsbCk7CgkJCQlGYWlsICgi RXhwZWN0ZWQgYW4gQXJndW1lbnRFeGNlcHRpb24gdG8gYmUgdGhyb3duLiIpOwoJCQl9IGNhdGNo IChBcmd1bWVudEV4Y2VwdGlvbikge30KCgkJCXRyeSB7CgkJCQlub2RlID0gZG9jdW1lbnQuQ3Jl YXRlTm9kZSAoImVudGl0eXJlZmVyZW5jZSIsIG51bGwsIG51bGwpOwoJCQkJRmFpbCAoIkV4cGVj dGVkIGEgTnVsbFJlZmVyZW5jZUV4Y2VwdGlvbiB0byBiZSB0aHJvd24uIik7CgkJCX0gY2F0Y2gg KE51bGxSZWZlcmVuY2VFeGNlcHRpb24pIHt9CgkJfQoKCQlwdWJsaWMgdm9pZCBUZXN0Q3JlYXRl Tm9kZUludmFsaWRYbWxOb2RlVHlwZSAoKQoJCXsKCQkJWG1sTm9kZSBub2RlOwoKCQkJdHJ5IHsK CQkJCW5vZGUgPSBkb2N1bWVudC5DcmVhdGVOb2RlIChYbWxOb2RlVHlwZS5FbmRFbGVtZW50LCBu dWxsLCBudWxsKTsKCQkJCUZhaWwgKCJFeHBlY3RlZCBhbiBBcmd1bWVudE91dE9mUmFuZ2VFeGNl cHRpb24gdG8gYmUgdGhyb3duLiIpOwoJCQl9IGNhdGNoIChBcmd1bWVudE91dE9mUmFuZ2VFeGNl cHRpb24pIHt9CgoJCQl0cnkgewoJCQkJbm9kZSA9IGRvY3VtZW50LkNyZWF0ZU5vZGUgKFhtbE5v ZGVUeXBlLkVuZEVudGl0eSwgbnVsbCwgbnVsbCk7CgkJCQlGYWlsICgiRXhwZWN0ZWQgYW4gQXJn dW1lbnRPdXRPZlJhbmdlRXhjZXB0aW9uIHRvIGJlIHRocm93bi4iKTsKCQkJfSBjYXRjaCAoQXJn dW1lbnRPdXRPZlJhbmdlRXhjZXB0aW9uKSB7fQoKCQkJdHJ5IHsKCQkJCW5vZGUgPSBkb2N1bWVu dC5DcmVhdGVOb2RlIChYbWxOb2RlVHlwZS5FbnRpdHksIG51bGwsIG51bGwpOwoJCQkJRmFpbCAo IkV4cGVjdGVkIGFuIEFyZ3VtZW50T3V0T2ZSYW5nZUV4Y2VwdGlvbiB0byBiZSB0aHJvd24uIik7 CgkJCX0gY2F0Y2ggKEFyZ3VtZW50T3V0T2ZSYW5nZUV4Y2VwdGlvbikge30KCgkJCXRyeSB7CgkJ CQlub2RlID0gZG9jdW1lbnQuQ3JlYXRlTm9kZSAoWG1sTm9kZVR5cGUuTm9uZSwgbnVsbCwgbnVs bCk7CgkJCQlGYWlsICgiRXhwZWN0ZWQgYW4gQXJndW1lbnRPdXRPZlJhbmdlRXhjZXB0aW9uIHRv IGJlIHRocm93bi4iKTsKCQkJfSBjYXRjaCAoQXJndW1lbnRPdXRPZlJhbmdlRXhjZXB0aW9uKSB7 fQoKCQkJdHJ5IHsKCQkJCW5vZGUgPSBkb2N1bWVudC5DcmVhdGVOb2RlIChYbWxOb2RlVHlwZS5O b3RhdGlvbiwgbnVsbCwgbnVsbCk7CgkJCQlGYWlsICgiRXhwZWN0ZWQgYW4gQXJndW1lbnRPdXRP ZlJhbmdlRXhjZXB0aW9uIHRvIGJlIHRocm93bi4iKTsKCQkJfSBjYXRjaCAoQXJndW1lbnRPdXRP ZlJhbmdlRXhjZXB0aW9uKSB7fQoKCQkJLy8gVE9ETzogIHVuZG9jdW1lbnRlZCBhbGxvd2FibGUg dHlwZS4KCQkJbm9kZSA9IGRvY3VtZW50LkNyZWF0ZU5vZGUgKFhtbE5vZGVUeXBlLlhtbERlY2xh cmF0aW9uLCBudWxsLCBudWxsKTsKCQkJQXNzZXJ0RXF1YWxzIChYbWxOb2RlVHlwZS5YbWxEZWNs YXJhdGlvbiwgbm9kZS5Ob2RlVHlwZSk7CgkJfQoKCQlwdWJsaWMgdm9pZCBUZXN0Q3JlYXRlTm9k ZVdoaWNoUGFyYW1Jc1VzZWQgKCkKCQl7CgkJCVhtbE5vZGUgbm9kZTsKCgkJCS8vIE5vIGNvbnN0 cnVjdG9yIHBhcmFtcyBmb3IgRG9jdW1lbnQsIERvY3VtZW50RnJhZ21lbnQuCgoJCQlub2RlID0g ZG9jdW1lbnQuQ3JlYXRlTm9kZSAoWG1sTm9kZVR5cGUuQ0RBVEEsICJhIiwgImIiLCAiYyIpOwoJ CQlBc3NlcnRFcXVhbHMgKFN0cmluZy5FbXB0eSwgKChYbWxDRGF0YVNlY3Rpb24pbm9kZSkuVmFs dWUpOwoKCQkJbm9kZSA9IGRvY3VtZW50LkNyZWF0ZU5vZGUgKFhtbE5vZGVUeXBlLkNvbW1lbnQs ICJhIiwgImIiLCAiYyIpOwoJCQlBc3NlcnRFcXVhbHMgKFN0cmluZy5FbXB0eSwgKChYbWxDb21t ZW50KW5vZGUpLlZhbHVlKTsKCgkJCW5vZGUgPSBkb2N1bWVudC5DcmVhdGVOb2RlIChYbWxOb2Rl VHlwZS5Eb2N1bWVudFR5cGUsICJhIiwgImIiLCAiYyIpOwoJCQlBc3NlcnROdWxsICgoKFhtbERv Y3VtZW50VHlwZSlub2RlKS5WYWx1ZSk7CgovLyBUT0RPOiBhZGQgdGhpcyBiYWNrIGluIHRvIHRl c3Qgd2hlbiBpdCdzIGltcGxlbWVudGVkLgovLwkJCW5vZGUgPSBkb2N1bWVudC5DcmVhdGVOb2Rl IChYbWxOb2RlVHlwZS5FbnRpdHlSZWZlcmVuY2UsICJhIiwgImIiLCAiYyIpOwovLwkJCUFzc2Vy dE51bGwgKCgoWG1sRW50aXR5UmVmZXJlbmNlKW5vZGUpLlZhbHVlKTsKCgkJCW5vZGUgPSBkb2N1 bWVudC5DcmVhdGVOb2RlIChYbWxOb2RlVHlwZS5Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24sICJhIiwg ImIiLCAiYyIpOwoJCQlBc3NlcnRFcXVhbHMgKFN0cmluZy5FbXB0eSwgKChYbWxQcm9jZXNzaW5n SW5zdHJ1Y3Rpb24pbm9kZSkuVmFsdWUpOwoKCQkJbm9kZSA9IGRvY3VtZW50LkNyZWF0ZU5vZGUg KFhtbE5vZGVUeXBlLlNpZ25pZmljYW50V2hpdGVzcGFjZSwgImEiLCAiYiIsICJjIik7CgkJCUFz c2VydEVxdWFscyAoU3RyaW5nLkVtcHR5LCAoKFhtbFNpZ25pZmljYW50V2hpdGVzcGFjZSlub2Rl KS5WYWx1ZSk7CgoJCQlub2RlID0gZG9jdW1lbnQuQ3JlYXRlTm9kZSAoWG1sTm9kZVR5cGUuVGV4 dCwgImEiLCAiYiIsICJjIik7CgkJCUFzc2VydEVxdWFscyAoU3RyaW5nLkVtcHR5LCAoKFhtbFRl eHQpbm9kZSkuVmFsdWUpOwoKCQkJbm9kZSA9IGRvY3VtZW50LkNyZWF0ZU5vZGUgKFhtbE5vZGVU eXBlLldoaXRlc3BhY2UsICJhIiwgImIiLCAiYyIpOwoJCQlBc3NlcnRFcXVhbHMgKFN0cmluZy5F bXB0eSwgKChYbWxXaGl0ZXNwYWNlKW5vZGUpLlZhbHVlKTsKCgkJCW5vZGUgPSBkb2N1bWVudC5D cmVhdGVOb2RlIChYbWxOb2RlVHlwZS5YbWxEZWNsYXJhdGlvbiwgImEiLCAiYiIsICJjIik7CgkJ CUFzc2VydEVxdWFscyAoInZlcnNpb249XCIxLjBcIiIsICgoWG1sRGVjbGFyYXRpb24pbm9kZSku VmFsdWUpOwoJCX0KCgkJcHVibGljIHZvaWQgVGVzdENyZWF0ZU5vZGVOb2RlVHlwZU5hbWUgKCkK CQl7CgkJCVhtbE5vZGUgbm9kZTsKCgkJCXRyeSB7CgkJCQlub2RlID0gZG9jdW1lbnQuQ3JlYXRl Tm9kZSAoImZvbyIsIG51bGwsIG51bGwpOwoJCQkJRmFpbCAoIkV4cGVjdGVkIGFuIEFyZ3VtZW50 RXhjZXB0aW9uIHRvIGJlIHRocm93bi4iKTsKCQkJfSBjYXRjaCAoQXJndW1lbnRFeGNlcHRpb24p IHt9CgoJCQlub2RlID0gZG9jdW1lbnQuQ3JlYXRlTm9kZSgiYXR0cmlidXRlIiwgImZvbyIsIG51 bGwpOwoJCQlBc3NlcnRFcXVhbHMgKFhtbE5vZGVUeXBlLkF0dHJpYnV0ZSwgbm9kZS5Ob2RlVHlw ZSk7CgoJCQlub2RlID0gZG9jdW1lbnQuQ3JlYXRlTm9kZSgiY2RhdGFzZWN0aW9uIiwgbnVsbCwg bnVsbCk7CgkJCUFzc2VydEVxdWFscyAoWG1sTm9kZVR5cGUuQ0RBVEEsIG5vZGUuTm9kZVR5cGUp OwoKCQkJbm9kZSA9IGRvY3VtZW50LkNyZWF0ZU5vZGUoImNvbW1lbnQiLCBudWxsLCBudWxsKTsK CQkJQXNzZXJ0RXF1YWxzIChYbWxOb2RlVHlwZS5Db21tZW50LCBub2RlLk5vZGVUeXBlKTsKCgkJ CW5vZGUgPSBkb2N1bWVudC5DcmVhdGVOb2RlKCJkb2N1bWVudCIsIG51bGwsIG51bGwpOwoJCQlB c3NlcnRFcXVhbHMgKFhtbE5vZGVUeXBlLkRvY3VtZW50LCBub2RlLk5vZGVUeXBlKTsKCQkJLy8g VE9ETzogdGVzdCB3aGljaCBjb25zdHJ1Y3RvciB0aGlzIGVuZGVkIHVwIGNhbGxpbmcsCgkJCS8v IGkuZS4gcmV1c2UgdW5kZXJseWluZyBOYW1lVGFibGUgb3Igbm90PwoKLy8gVE9ETzogYWRkIHRo aXMgYmFjayBpbiB0byB0ZXN0IHdoZW4gaXQncyBpbXBsZW1lbnRlZC4KLy8JCQlub2RlID0gZG9j dW1lbnQuQ3JlYXRlTm9kZSgiZG9jdW1lbnRmcmFnbWVudCIsIG51bGwsIG51bGwpOwovLwkJCUFz c2VydEVxdWFscyAoWG1sTm9kZVR5cGUuRG9jdW1lbnRGcmFnbWVudCwgbm9kZS5Ob2RlVHlwZSk7 CgoJCQlub2RlID0gZG9jdW1lbnQuQ3JlYXRlTm9kZSgiZG9jdW1lbnR0eXBlIiwgbnVsbCwgbnVs bCk7CgkJCUFzc2VydEVxdWFscyAoWG1sTm9kZVR5cGUuRG9jdW1lbnRUeXBlLCBub2RlLk5vZGVU eXBlKTsKCgkJCW5vZGUgPSBkb2N1bWVudC5DcmVhdGVOb2RlKCJlbGVtZW50IiwgImZvbyIsIG51 bGwpOwoJCQlBc3NlcnRFcXVhbHMgKFhtbE5vZGVUeXBlLkVsZW1lbnQsIG5vZGUuTm9kZVR5cGUp OwoKLy8gVE9ETzogYWRkIHRoaXMgYmFjayBpbiB0byB0ZXN0IHdoZW4gaXQncyBpbXBsZW1lbnRl ZC4KLy8JCQlub2RlID0gZG9jdW1lbnQuQ3JlYXRlTm9kZSgiZW50aXR5cmVmZXJlbmNlIiwgImZv byIsIG51bGwpOwovLwkJCUFzc2VydEVxdWFscyAoWG1sTm9kZVR5cGUuRW50aXR5UmVmZXJlbmNl LCBub2RlLk5vZGVUeXBlKTsKCgkJCW5vZGUgPSBkb2N1bWVudC5DcmVhdGVOb2RlKCJwcm9jZXNz aW5naW5zdHJ1Y3Rpb24iLCBudWxsLCBudWxsKTsKCQkJQXNzZXJ0RXF1YWxzIChYbWxOb2RlVHlw ZS5Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24sIG5vZGUuTm9kZVR5cGUpOwoKCQkJbm9kZSA9IGRvY3Vt ZW50LkNyZWF0ZU5vZGUoInNpZ25pZmljYW50d2hpdGVzcGFjZSIsIG51bGwsIG51bGwpOwoJCQlB c3NlcnRFcXVhbHMgKFhtbE5vZGVUeXBlLlNpZ25pZmljYW50V2hpdGVzcGFjZSwgbm9kZS5Ob2Rl VHlwZSk7CgoJCQlub2RlID0gZG9jdW1lbnQuQ3JlYXRlTm9kZSgidGV4dCIsIG51bGwsIG51bGwp OwoJCQlBc3NlcnRFcXVhbHMgKFhtbE5vZGVUeXBlLlRleHQsIG5vZGUuTm9kZVR5cGUpOwoKCQkJ bm9kZSA9IGRvY3VtZW50LkNyZWF0ZU5vZGUoIndoaXRlc3BhY2UiLCBudWxsLCBudWxsKTsKCQkJ QXNzZXJ0RXF1YWxzIChYbWxOb2RlVHlwZS5XaGl0ZXNwYWNlLCBub2RlLk5vZGVUeXBlKTsKCQl9 CgoJCXB1YmxpYyB2b2lkIFRlc3REb2N1bWVudEVsZW1lbnQgKCkKCQl7CgkJCUFzc2VydE51bGwg KGRvY3VtZW50LkRvY3VtZW50RWxlbWVudCk7CgkJCVhtbEVsZW1lbnQgZWxlbWVudCA9IGRvY3Vt ZW50LkNyZWF0ZUVsZW1lbnQgKCJmb28iLCAiYmFyIiwgImh0dHA6Ly9mb28vIik7CgkJCUFzc2Vy dE5vdE51bGwgKGVsZW1lbnQpOwoKCQkJQXNzZXJ0RXF1YWxzICgiZm9vIiwgZWxlbWVudC5QcmVm aXgpOwoJCQlBc3NlcnRFcXVhbHMgKCJiYXIiLCBlbGVtZW50LkxvY2FsTmFtZSk7CgkJCUFzc2Vy dEVxdWFscyAoImh0dHA6Ly9mb28vIiwgZWxlbWVudC5OYW1lc3BhY2VVUkkpOwoKCQkJQXNzZXJ0 RXF1YWxzICgiZm9vOmJhciIsIGVsZW1lbnQuTmFtZSk7CgoJCQlBc3NlcnRTYW1lIChlbGVtZW50 LCBkb2N1bWVudC5BcHBlbmRDaGlsZCAoZWxlbWVudCkpOwoKCQkJQXNzZXJ0U2FtZSAoZWxlbWVu dCwgZG9jdW1lbnQuRG9jdW1lbnRFbGVtZW50KTsKCQl9CgoJCXB1YmxpYyB2b2lkIFRlc3REb2N1 bWVudEVtcHR5KCkKCQl7CgkJCUFzc2VydEVxdWFscyAoIkluY29ycmVjdCBvdXRwdXQgZm9yIGVt cHR5IGRvY3VtZW50LiIsICIiLCBkb2N1bWVudC5PdXRlclhtbCk7CgkJfQoKCQlwdWJsaWMgdm9p ZCBUZXN0RXZlbnROb2RlQ2hhbmdlZCgpCgkJewoJCQlYbWxFbGVtZW50IGVsZW1lbnQ7CgkJCVht bENvbW1lbnQgY29tbWVudDsKCgkJCWRvY3VtZW50Lk5vZGVDaGFuZ2VkICs9IG5ldyBYbWxOb2Rl Q2hhbmdlZEV2ZW50SGFuZGxlciAodGhpcy5FdmVudE5vZGVDaGFuZ2VkKTsKCgkJCS8vIE5vZGUg dGhhdCBpcyBwYXJ0IG9mIHRoZSBkb2N1bWVudC4KCQkJZG9jdW1lbnQuQXBwZW5kQ2hpbGQgKGRv Y3VtZW50LkNyZWF0ZUVsZW1lbnQgKCJmb28iKSk7CgkJCWNvbW1lbnQgPSBkb2N1bWVudC5DcmVh dGVDb21tZW50ICgiYmFyIik7CgkJCWRvY3VtZW50LkRvY3VtZW50RWxlbWVudC5BcHBlbmRDaGls ZCAoY29tbWVudCk7CgkJCUFzc2VydEVxdWFscyAoIjwhLS1iYXItLT4iLCBkb2N1bWVudC5Eb2N1 bWVudEVsZW1lbnQuSW5uZXJYbWwpOwoJCQljb21tZW50LlZhbHVlID0gImJheiI7CgkJCUFzc2Vy dCAoZXZlbnRTdHJpbmdzLkNvbnRhaW5zICgiTm9kZUNoYW5nZWQsIENoYW5nZSwgPCEtLWJhei0t PiwgZm9vLCBmb28iKSk7CgkJCUFzc2VydEVxdWFscyAoIjwhLS1iYXotLT4iLCBkb2N1bWVudC5E b2N1bWVudEVsZW1lbnQuSW5uZXJYbWwpOwoKCQkJLy8gTm9kZSB0aGF0IGlzbid0IHBhcnQgb2Yg dGhlIGRvY3VtZW50IGJ1dCBjcmVhdGVkIGJ5IHRoZSBkb2N1bWVudC4KCQkJZWxlbWVudCA9IGRv Y3VtZW50LkNyZWF0ZUVsZW1lbnQgKCJmb28iKTsKCQkJY29tbWVudCA9IGRvY3VtZW50LkNyZWF0 ZUNvbW1lbnQgKCJiYXIiKTsKCQkJZWxlbWVudC5BcHBlbmRDaGlsZCAoY29tbWVudCk7CgkJCUFz c2VydEVxdWFscyAoIjwhLS1iYXItLT4iLCBlbGVtZW50LklubmVyWG1sKTsKCQkJY29tbWVudC5W YWx1ZSA9ICJiYXoiOwoJCQlBc3NlcnQgKGV2ZW50U3RyaW5ncy5Db250YWlucyAoIk5vZGVDaGFu Z2VkLCBDaGFuZ2UsIDwhLS1iYXotLT4sIGZvbywgZm9vIikpOwoJCQlBc3NlcnRFcXVhbHMgKCI8 IS0tYmF6LS0+IiwgZWxlbWVudC5Jbm5lclhtbCk7CgovKgogVE9ETzogIEluc2VydCB0aGlzIHdo ZW4gWG1sTm9kZS5Jbm5lclRleHQoKSBhbmQgWG1sTm9kZS5Jbm5lclhtbCgpIGhhdmUgYmVlbiBp bXBsZW1lbnRlZC4KIAoJCQkvLyBOb2RlIHRoYXQgaXMgcGFydCBvZiB0aGUgZG9jdW1lbnQuCgkJ CWVsZW1lbnQgPSBkb2N1bWVudC5DcmVhdGVFbGVtZW50ICgiZm9vIik7CgkJCWVsZW1lbnQuSW5u ZXJUZXh0ID0gImJhciI7CgkJCWRvY3VtZW50LkFwcGVuZENoaWxkKGVsZW1lbnQpOwoJCQllbGVt ZW50LklubmVyVGV4dCA9ICJiYXoiOwoJCQlBc3NlcnQoZXZlbnRTdHJpbmdzLkNvbnRhaW5zKCJO b2RlQ2hhbmdlZCwgQ2hhbmdlLCBiYXosIGZvbywgZm9vIikpOwoJCQkKCQkJLy8gTm9kZSB0aGF0 IGlzbid0IHBhcnQgb2YgdGhlIGRvY3VtZW50IGJ1dCBjcmVhdGVkIGJ5IHRoZSBkb2N1bWVudC4K CQkJZWxlbWVudCA9IGRvY3VtZW50LkNyZWF0ZUVsZW1lbnQoInF1eCIpOwoJCQllbGVtZW50Lklu bmVyVGV4dCA9ICJxdXV4IjsKCQkJZWxlbWVudC5Jbm5lclRleHQgPSAicXV1dXgiOwoJCQlBc3Nl cnQoZXZlbnRTdHJpbmdzLkNvbnRhaW5zKCJOb2RlQ2hhbmdlZCwgQ2hhbmdlLCBxdXV1eCwgcXV4 LCBxdXgiKSk7CiovCgkJfQoKCQlwdWJsaWMgdm9pZCBUZXN0RXZlbnROb2RlQ2hhbmdpbmcoKQoJ CXsKCQkJWG1sRWxlbWVudCBlbGVtZW50OwoJCQlYbWxDb21tZW50IGNvbW1lbnQ7CgoJCQlkb2N1 bWVudC5Ob2RlQ2hhbmdpbmcgKz0gbmV3IFhtbE5vZGVDaGFuZ2VkRXZlbnRIYW5kbGVyICh0aGlz LkV2ZW50Tm9kZUNoYW5naW5nKTsKCgkJCS8vIE5vZGUgdGhhdCBpcyBwYXJ0IG9mIHRoZSBkb2N1 bWVudC4KCQkJZG9jdW1lbnQuQXBwZW5kQ2hpbGQgKGRvY3VtZW50LkNyZWF0ZUVsZW1lbnQgKCJm b28iKSk7CgkJCWNvbW1lbnQgPSBkb2N1bWVudC5DcmVhdGVDb21tZW50ICgiYmFyIik7CgkJCWRv Y3VtZW50LkRvY3VtZW50RWxlbWVudC5BcHBlbmRDaGlsZCAoY29tbWVudCk7CgkJCUFzc2VydEVx dWFscyAoIjwhLS1iYXItLT4iLCBkb2N1bWVudC5Eb2N1bWVudEVsZW1lbnQuSW5uZXJYbWwpOwoJ CQljb21tZW50LlZhbHVlID0gImJheiI7CgkJCUFzc2VydCAoZXZlbnRTdHJpbmdzLkNvbnRhaW5z ICgiTm9kZUNoYW5naW5nLCBDaGFuZ2UsIDwhLS1iYXItLT4sIGZvbywgZm9vIikpOwoJCQlBc3Nl cnRFcXVhbHMgKCI8IS0tYmF6LS0+IiwgZG9jdW1lbnQuRG9jdW1lbnRFbGVtZW50LklubmVyWG1s KTsKCgkJCS8vIE5vZGUgdGhhdCBpc24ndCBwYXJ0IG9mIHRoZSBkb2N1bWVudCBidXQgY3JlYXRl ZCBieSB0aGUgZG9jdW1lbnQuCgkJCWVsZW1lbnQgPSBkb2N1bWVudC5DcmVhdGVFbGVtZW50ICgi Zm9vIik7CgkJCWNvbW1lbnQgPSBkb2N1bWVudC5DcmVhdGVDb21tZW50ICgiYmFyIik7CgkJCWVs ZW1lbnQuQXBwZW5kQ2hpbGQgKGNvbW1lbnQpOwoJCQlBc3NlcnRFcXVhbHMgKCI8IS0tYmFyLS0+ IiwgZWxlbWVudC5Jbm5lclhtbCk7CgkJCWNvbW1lbnQuVmFsdWUgPSAiYmF6IjsKCQkJQXNzZXJ0 IChldmVudFN0cmluZ3MuQ29udGFpbnMgKCJOb2RlQ2hhbmdpbmcsIENoYW5nZSwgPCEtLWJhci0t PiwgZm9vLCBmb28iKSk7CgkJCUFzc2VydEVxdWFscyAoIjwhLS1iYXotLT4iLCBlbGVtZW50Lklu bmVyWG1sKTsKCgkJCS8vIElmIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24gdGhlIERvY3VtZW50IHJl dHVybnMgdG8gb3JpZ2luYWwgc3RhdGUuCgkJCWRvY3VtZW50Lk5vZGVDaGFuZ2luZyArPSBuZXcg WG1sTm9kZUNoYW5nZWRFdmVudEhhbmRsZXIgKHRoaXMuRXZlbnROb2RlQ2hhbmdpbmdFeGNlcHRp b24pOwoJCQllbGVtZW50ID0gZG9jdW1lbnQuQ3JlYXRlRWxlbWVudCgiZm9vIik7CgkJCWNvbW1l bnQgPSBkb2N1bWVudC5DcmVhdGVDb21tZW50ICgiYmFyIik7CgkJCWVsZW1lbnQuQXBwZW5kQ2hp bGQgKGNvbW1lbnQpOwoJCQlBc3NlcnRFcXVhbHMgKCI8IS0tYmFyLS0+IiwgZWxlbWVudC5Jbm5l clhtbCk7CgkJCXRyeSAKCQkJewoJCQkJY29tbWVudC5WYWx1ZSA9ICJiYXoiOwoJCQkJRmFpbCgi RXhwZWN0ZWQgYW4gZXhjZXB0aW9uIHRvIGJlIHRocm93biBieSB0aGUgTm9kZUNoYW5naW5nIGV2 ZW50IGhhbmRsZXIgbWV0aG9kIEV2ZW50Tm9kZUNoYW5naW5nRXhjZXB0aW9uKCkuIik7CgkJCX0g Y2F0Y2ggKEV4Y2VwdGlvbikge30KCQkJQXNzZXJ0RXF1YWxzICgiPCEtLWJhci0tPiIsIGVsZW1l bnQuSW5uZXJYbWwpOwoKCQkJLy8gWWVzIGl0J3MgYSBiaXQgYW5hbCBidXQgdGhpcyB0ZXN0cyB3 aGV0aGVyIHRoZSBub2RlIGNoYW5naW5nIGV2ZW50IGV4Y2VwdGlvbiBmaXJlcyBiZWZvcmUgdGhl CgkJCS8vIEFyZ3VtZW50T3V0T2ZSYW5nZUV4Y2VwdGlvbi4gIFR1cm5zIG91dCBpdCBkb2VzIHNv IHRoYXQgbWVhbnMgb3VyIGltcGxlbWVudGF0aW9uIG5lZWRzIHRvIHJhaXNlCgkJCS8vIHRoZSBu b2RlIGNoYW5naW5nIGV2ZW50IGJlZm9yZSBkb2luZyBhbnkgd29yay4KCQkJdHJ5IAoJCQl7CgkJ CQljb21tZW50LlJlcGxhY2VEYXRhKC0xLCAwLCAicXV4Iik7CgkJCQlGYWlsKCJFeHBlY3RlZCBh biBBcmd1bWVudE91dE9mUmFuZ2VFeGNlcHRpb24gdG8gYmUgdGhyb3duLiIpOwoJCQl9IAoJCQlj YXRjaCAoRXhjZXB0aW9uKSB7fQoKCQkJLyoKIFRPRE86ICBJbnNlcnQgdGhpcyB3aGVuIFhtbE5v ZGUuSW5uZXJUZXh0KCkgYW5kIFhtbE5vZGUuSW5uZXJYbWwoKSBoYXZlIGJlZW4gaW1wbGVtZW50 ZWQuCiAKCQkJLy8gTm9kZSB0aGF0IGlzIHBhcnQgb2YgdGhlIGRvY3VtZW50LgoJCQllbGVtZW50 ID0gZG9jdW1lbnQuQ3JlYXRlRWxlbWVudCAoImZvbyIpOwoJCQllbGVtZW50LklubmVyVGV4dCA9 ICJiYXIiOwoJCQlkb2N1bWVudC5BcHBlbmRDaGlsZChlbGVtZW50KTsKCQkJZWxlbWVudC5Jbm5l clRleHQgPSAiYmF6IjsKCQkJQXNzZXJ0KGV2ZW50U3RyaW5ncy5Db250YWlucygiTm9kZUNoYW5n aW5nLCBDaGFuZ2UsIGJhciwgZm9vLCBmb28iKSk7CgoJCQkvLyBOb2RlIHRoYXQgaXNuJ3QgcGFy dCBvZiB0aGUgZG9jdW1lbnQgYnV0IGNyZWF0ZWQgYnkgdGhlIGRvY3VtZW50LgoJCQllbGVtZW50 ID0gZG9jdW1lbnQuQ3JlYXRlRWxlbWVudCgiZm9vIik7CgkJCWVsZW1lbnQuSW5uZXJUZXh0ID0g ImJhciI7CgkJCWVsZW1lbnQuSW5uZXJUZXh0ID0gImJheiI7CgkJCUFzc2VydChldmVudFN0cmlu Z3MuQ29udGFpbnMoIk5vZGVDaGFuZ2luZywgQ2hhbmdlLCBiYXIsIGZvbywgZm9vIikpOwoKCQkJ Ly8gSWYgYW4gZXhjZXB0aW9uIGlzIHRocm93biB0aGUgRG9jdW1lbnQgcmV0dXJucyB0byBvcmln aW5hbCBzdGF0ZS4KCQkJZG9jdW1lbnQuTm9kZUNoYW5naW5nICs9IG5ldyBYbWxOb2RlQ2hhbmdl ZEV2ZW50SGFuZGxlciAodGhpcy5FdmVudE5vZGVDaGFuZ2luZ0V4Y2VwdGlvbik7CgkJCWVsZW1l bnQgPSBkb2N1bWVudC5DcmVhdGVFbGVtZW50KCJmb28iKTsKCQkJZWxlbWVudC5Jbm5lclRleHQg PSAiYmFyIjsKCQkJdHJ5IHsKCQkJCWVsZW1lbnQuSW5uZXJUZXh0ID0gImJheiI7CgkJCQlGYWls KCJFeHBlY3RlZCBhbiBleGNlcHRpb24gdG8gYmUgdGhyb3duIGJ5IHRoZSBOb2RlQ2hhbmdpbmcg ZXZlbnQgaGFuZGxlciBtZXRob2QgRXZlbnROb2RlQ2hhbmdpbmdFeGNlcHRpb24oKS4iKTsKCQkJ fSBjYXRjaCAoRXhjZXB0aW9uKSB7fQoJCQlBc3NlcnRFcXVhbHMoImJhciIsIGVsZW1lbnQuSW5u ZXJUZXh0KTsKKi8KCQl9CgoJCXB1YmxpYyB2b2lkIFRlc3RFdmVudE5vZGVJbnNlcnRlZCgpCgkJ ewoJCQlYbWxFbGVtZW50IGVsZW1lbnQ7CgoJCQlkb2N1bWVudC5Ob2RlSW5zZXJ0ZWQgKz0gbmV3 IFhtbE5vZGVDaGFuZ2VkRXZlbnRIYW5kbGVyICh0aGlzLkV2ZW50Tm9kZUluc2VydGVkKTsKCgkJ CS8vIEluc2VydGVkICdmb28nIGVsZW1lbnQgdG8gdGhlIGRvY3VtZW50LgoJCQllbGVtZW50ID0g ZG9jdW1lbnQuQ3JlYXRlRWxlbWVudCAoImZvbyIpOwoJCQlkb2N1bWVudC5BcHBlbmRDaGlsZCAo ZWxlbWVudCk7CgkJCUFzc2VydCAoZXZlbnRTdHJpbmdzLkNvbnRhaW5zICgiTm9kZUluc2VydGVk LCBJbnNlcnQsIDxmb28gLz4sIDxub25lPiwgI2RvY3VtZW50IikpOwoKCQkJLy8gQXBwZW5kIGNo aWxkIG9uIG5vZGUgaW4gZG9jdW1lbnQKCQkJZWxlbWVudCA9IGRvY3VtZW50LkNyZWF0ZUVsZW1l bnQgKCJmb28iKTsKCQkJZG9jdW1lbnQuRG9jdW1lbnRFbGVtZW50LkFwcGVuZENoaWxkIChlbGVt ZW50KTsKCQkJQXNzZXJ0IChldmVudFN0cmluZ3MuQ29udGFpbnMgKCJOb2RlSW5zZXJ0ZWQsIElu c2VydCwgPGZvbyAvPiwgPG5vbmU+LCBmb28iKSk7CgoJCQkvLyBBcHBlbmQgY2hpbGQgb24gbm9k ZSBub3QgaW4gZG9jdW1lbnQgYnV0IGNyZWF0ZWQgYnkgZG9jdW1lbnQKCQkJZWxlbWVudCA9IGRv Y3VtZW50LkNyZWF0ZUVsZW1lbnQgKCJiYXIiKTsKCQkJZWxlbWVudC5BcHBlbmRDaGlsZChkb2N1 bWVudC5DcmVhdGVFbGVtZW50ICgiYmFyIikpOwoJCQlBc3NlcnQoZXZlbnRTdHJpbmdzLkNvbnRh aW5zKCJOb2RlSW5zZXJ0ZWQsIEluc2VydCwgPGJhciAvPiwgPG5vbmU+LCBiYXIiKSk7CgkJfQoK CQlwdWJsaWMgdm9pZCBUZXN0RXZlbnROb2RlSW5zZXJ0aW5nKCkKCQl7CgkJCVhtbEVsZW1lbnQg ZWxlbWVudDsKCgkJCWRvY3VtZW50Lk5vZGVJbnNlcnRpbmcgKz0gbmV3IFhtbE5vZGVDaGFuZ2Vk RXZlbnRIYW5kbGVyICh0aGlzLkV2ZW50Tm9kZUluc2VydGluZyk7CgoJCQkvLyBJbnNlcnRpbmcg J2ZvbycgZWxlbWVudCB0byB0aGUgZG9jdW1lbnQuCgkJCWVsZW1lbnQgPSBkb2N1bWVudC5DcmVh dGVFbGVtZW50ICgiZm9vIik7CgkJCWRvY3VtZW50LkFwcGVuZENoaWxkIChlbGVtZW50KTsKCQkJ QXNzZXJ0IChldmVudFN0cmluZ3MuQ29udGFpbnMgKCJOb2RlSW5zZXJ0aW5nLCBJbnNlcnQsIDxm b28gLz4sIDxub25lPiwgI2RvY3VtZW50IikpOwoKCQkJLy8gQXBwZW5kIGNoaWxkIG9uIG5vZGUg aW4gZG9jdW1lbnQKCQkJZWxlbWVudCA9IGRvY3VtZW50LkNyZWF0ZUVsZW1lbnQgKCJmb28iKTsK CQkJZG9jdW1lbnQuRG9jdW1lbnRFbGVtZW50LkFwcGVuZENoaWxkIChlbGVtZW50KTsKCQkJQXNz ZXJ0KGV2ZW50U3RyaW5ncy5Db250YWlucyAoIk5vZGVJbnNlcnRpbmcsIEluc2VydCwgPGZvbyAv PiwgPG5vbmU+LCBmb28iKSk7CgoJCQkvLyBBcHBlbmQgY2hpbGQgb24gbm9kZSBub3QgaW4gZG9j dW1lbnQgYnV0IGNyZWF0ZWQgYnkgZG9jdW1lbnQKCQkJZWxlbWVudCA9IGRvY3VtZW50LkNyZWF0 ZUVsZW1lbnQgKCJiYXIiKTsKCQkJQXNzZXJ0RXF1YWxzICgwLCBlbGVtZW50LkNoaWxkTm9kZXMu Q291bnQpOwoJCQllbGVtZW50LkFwcGVuZENoaWxkIChkb2N1bWVudC5DcmVhdGVFbGVtZW50ICgi YmFyIikpOwoJCQlBc3NlcnQgKGV2ZW50U3RyaW5ncy5Db250YWlucyAoIk5vZGVJbnNlcnRpbmcs IEluc2VydCwgPGJhciAvPiwgPG5vbmU+LCBiYXIiKSk7CgkJCUFzc2VydEVxdWFscyAoMSwgZWxl bWVudC5DaGlsZE5vZGVzLkNvdW50KTsKCgkJCS8vIElmIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24g dGhlIERvY3VtZW50IHJldHVybnMgdG8gb3JpZ2luYWwgc3RhdGUuCgkJCWRvY3VtZW50Lk5vZGVJ bnNlcnRpbmcgKz0gbmV3IFhtbE5vZGVDaGFuZ2VkRXZlbnRIYW5kbGVyICh0aGlzLkV2ZW50Tm9k ZUluc2VydGluZ0V4Y2VwdGlvbik7CgkJCUFzc2VydEVxdWFscyAoMSwgZWxlbWVudC5DaGlsZE5v ZGVzLkNvdW50KTsKCQkJdHJ5IAoJCQl7CgkJCQllbGVtZW50LkFwcGVuZENoaWxkIChkb2N1bWVu dC5DcmVhdGVFbGVtZW50KCJiYXoiKSk7CgkJCQlGYWlsICgiRXhwZWN0ZWQgYW4gZXhjZXB0aW9u IHRvIGJlIHRocm93biBieSB0aGUgTm9kZUluc2VydGluZyBldmVudCBoYW5kbGVyIG1ldGhvZCBF dmVudE5vZGVJbnNlcnRpbmdFeGNlcHRpb24oKS4iKTsKCQkJfSAKCQkJY2F0Y2ggKEV4Y2VwdGlv bikge30KCQkJQXNzZXJ0RXF1YWxzICgxLCBlbGVtZW50LkNoaWxkTm9kZXMuQ291bnQpOwoJCX0K CgkJcHVibGljIHZvaWQgVGVzdEV2ZW50Tm9kZVJlbW92ZWQoKQoJCXsKCQkJWG1sRWxlbWVudCBl bGVtZW50OwoJCQlYbWxFbGVtZW50IGVsZW1lbnQyOwoKCQkJZG9jdW1lbnQuTm9kZVJlbW92ZWQg Kz0gbmV3IFhtbE5vZGVDaGFuZ2VkRXZlbnRIYW5kbGVyICh0aGlzLkV2ZW50Tm9kZVJlbW92ZWQp OwoKCQkJLy8gUmVtb3ZlZCAnYmFyJyBlbGVtZW50IGZyb20gJ2Zvbycgb3V0c2lkZSBkb2N1bWVu dC4KCQkJZWxlbWVudCA9IGRvY3VtZW50LkNyZWF0ZUVsZW1lbnQgKCJmb28iKTsKCQkJZWxlbWVu dDIgPSBkb2N1bWVudC5DcmVhdGVFbGVtZW50ICgiYmFyIik7CgkJCWVsZW1lbnQuQXBwZW5kQ2hp bGQgKGVsZW1lbnQyKTsKCQkJQXNzZXJ0RXF1YWxzICgxLCBlbGVtZW50LkNoaWxkTm9kZXMuQ291 bnQpOwoJCQllbGVtZW50LlJlbW92ZUNoaWxkIChlbGVtZW50Mik7CgkJCUFzc2VydCAoZXZlbnRT dHJpbmdzLkNvbnRhaW5zICgiTm9kZVJlbW92ZWQsIFJlbW92ZSwgPGJhciAvPiwgZm9vLCA8bm9u ZT4iKSk7CgkJCUFzc2VydEVxdWFscyAoMCwgZWxlbWVudC5DaGlsZE5vZGVzLkNvdW50KTsKCi8q CiAqIFRPRE86ICBwdXQgdGhpcyB0ZXN0IGJhY2sgaW4gd2hlbiBBdHRyaWJ1dGVDb2xsZWN0aW9u LlJlbW92ZUFsbCgpIGlzIGltcGxlbWVudGVkLgoKCQkJLy8gUmVtb3ZlQWxsLgoJCQllbGVtZW50 ID0gZG9jdW1lbnQuQ3JlYXRlRWxlbWVudCAoImZvbyIpOwoJCQllbGVtZW50MiA9IGRvY3VtZW50 LkNyZWF0ZUVsZW1lbnQgKCJiYXIiKTsKCQkJZWxlbWVudC5BcHBlbmRDaGlsZChlbGVtZW50Mik7 CgkJCUFzc2VydEVxdWFscygxLCBlbGVtZW50LkNoaWxkTm9kZXMuQ291bnQpOwoJCQllbGVtZW50 LlJlbW92ZUFsbCgpOwoJCQlBc3NlcnQgKGV2ZW50U3RyaW5ncy5Db250YWlucyAoIk5vZGVSZW1v dmVkLCBSZW1vdmUsIDxiYXIgLz4sIGZvbywgPG5vbmU+IikpOwoJCQlBc3NlcnRFcXVhbHMoMCwg ZWxlbWVudC5DaGlsZE5vZGVzLkNvdW50KTsKKi8KCgkJCS8vIFJlbW92ZWQgJ2JhcicgZWxlbWVu dCBmcm9tICdmb28nIGluc2lkZSBkb2N1bWVudC4KCQkJZWxlbWVudCA9IGRvY3VtZW50LkNyZWF0 ZUVsZW1lbnQgKCJmb28iKTsKCQkJZG9jdW1lbnQuQXBwZW5kQ2hpbGQgKGVsZW1lbnQpOwoJCQll bGVtZW50ID0gZG9jdW1lbnQuQ3JlYXRlRWxlbWVudCAoImJhciIpOwoJCQlkb2N1bWVudC5Eb2N1 bWVudEVsZW1lbnQuQXBwZW5kQ2hpbGQgKGVsZW1lbnQpOwoJCQlBc3NlcnRFcXVhbHMgKDEsIGRv Y3VtZW50LkRvY3VtZW50RWxlbWVudC5DaGlsZE5vZGVzLkNvdW50KTsKCQkJZG9jdW1lbnQuRG9j dW1lbnRFbGVtZW50LlJlbW92ZUNoaWxkIChlbGVtZW50KTsKCQkJQXNzZXJ0IChldmVudFN0cmlu Z3MuQ29udGFpbnMgKCJOb2RlUmVtb3ZlZCwgUmVtb3ZlLCA8YmFyIC8+LCBmb28sIDxub25lPiIp KTsKCQkJQXNzZXJ0RXF1YWxzICgwLCBkb2N1bWVudC5Eb2N1bWVudEVsZW1lbnQuQ2hpbGROb2Rl cy5Db3VudCk7CgkJfQoJCgkJcHVibGljIHZvaWQgVGVzdEV2ZW50Tm9kZVJlbW92aW5nKCkKCQl7 CgkJCVhtbEVsZW1lbnQgZWxlbWVudDsKCQkJWG1sRWxlbWVudCBlbGVtZW50MjsKCgkJCWRvY3Vt ZW50Lk5vZGVSZW1vdmluZyArPSBuZXcgWG1sTm9kZUNoYW5nZWRFdmVudEhhbmRsZXIgKHRoaXMu RXZlbnROb2RlUmVtb3ZpbmcpOwoKCQkJLy8gUmVtb3ZpbmcgJ2JhcicgZWxlbWVudCBmcm9tICdm b28nIG91dHNpZGUgZG9jdW1lbnQuCgkJCWVsZW1lbnQgPSBkb2N1bWVudC5DcmVhdGVFbGVtZW50 ICgiZm9vIik7CgkJCWVsZW1lbnQyID0gZG9jdW1lbnQuQ3JlYXRlRWxlbWVudCAoImJhciIpOwoJ CQllbGVtZW50LkFwcGVuZENoaWxkIChlbGVtZW50Mik7CgkJCUFzc2VydEVxdWFscyAoMSwgZWxl bWVudC5DaGlsZE5vZGVzLkNvdW50KTsKCQkJZWxlbWVudC5SZW1vdmVDaGlsZCAoZWxlbWVudDIp OwoJCQlBc3NlcnQgKGV2ZW50U3RyaW5ncy5Db250YWlucyAoIk5vZGVSZW1vdmluZywgUmVtb3Zl LCA8YmFyIC8+LCBmb28sIDxub25lPiIpKTsKCQkJQXNzZXJ0RXF1YWxzICgwLCBlbGVtZW50LkNo aWxkTm9kZXMuQ291bnQpOwoKLyoKICogVE9ETzogIHB1dCB0aGlzIHRlc3QgYmFjayBpbiB3aGVu IEF0dHJpYnV0ZUNvbGxlY3Rpb24uUmVtb3ZlQWxsKCkgaXMgaW1wbGVtZW50ZWQuCgoJCQkvLyBS ZW1vdmVBbGwuCgkJCWVsZW1lbnQgPSBkb2N1bWVudC5DcmVhdGVFbGVtZW50ICgiZm9vIik7CgkJ CWVsZW1lbnQyID0gZG9jdW1lbnQuQ3JlYXRlRWxlbWVudCAoImJhciIpOwoJCQllbGVtZW50LkFw cGVuZENoaWxkKGVsZW1lbnQyKTsKCQkJQXNzZXJ0RXF1YWxzKDEsIGVsZW1lbnQuQ2hpbGROb2Rl cy5Db3VudCk7CgkJCWVsZW1lbnQuUmVtb3ZlQWxsKCk7CgkJCUFzc2VydCAoZXZlbnRTdHJpbmdz LkNvbnRhaW5zICgiTm9kZVJlbW92aW5nLCBSZW1vdmUsIDxiYXIgLz4sIGZvbywgPG5vbmU+Iikp OwoJCQlBc3NlcnRFcXVhbHMoMCwgZWxlbWVudC5DaGlsZE5vZGVzLkNvdW50KTsKKi8KCgkJCS8v IFJlbW92aW5nICdiYXInIGVsZW1lbnQgZnJvbSAnZm9vJyBpbnNpZGUgZG9jdW1lbnQuCgkJCWVs ZW1lbnQgPSBkb2N1bWVudC5DcmVhdGVFbGVtZW50ICgiZm9vIik7CgkJCWRvY3VtZW50LkFwcGVu ZENoaWxkIChlbGVtZW50KTsKCQkJZWxlbWVudCA9IGRvY3VtZW50LkNyZWF0ZUVsZW1lbnQgKCJi YXIiKTsKCQkJZG9jdW1lbnQuRG9jdW1lbnRFbGVtZW50LkFwcGVuZENoaWxkIChlbGVtZW50KTsK CQkJQXNzZXJ0RXF1YWxzICgxLCBkb2N1bWVudC5Eb2N1bWVudEVsZW1lbnQuQ2hpbGROb2Rlcy5D b3VudCk7CgkJCWRvY3VtZW50LkRvY3VtZW50RWxlbWVudC5SZW1vdmVDaGlsZCAoZWxlbWVudCk7 CgkJCUFzc2VydCAoZXZlbnRTdHJpbmdzLkNvbnRhaW5zICgiTm9kZVJlbW92aW5nLCBSZW1vdmUs IDxiYXIgLz4sIGZvbywgPG5vbmU+IikpOwoJCQlBc3NlcnRFcXVhbHMgKDAsIGRvY3VtZW50LkRv Y3VtZW50RWxlbWVudC5DaGlsZE5vZGVzLkNvdW50KTsKCgkJCS8vIElmIGFuIGV4Y2VwdGlvbiBp cyB0aHJvd24gdGhlIERvY3VtZW50IHJldHVybnMgdG8gb3JpZ2luYWwgc3RhdGUuCgkJCWRvY3Vt ZW50Lk5vZGVSZW1vdmluZyArPSBuZXcgWG1sTm9kZUNoYW5nZWRFdmVudEhhbmRsZXIgKHRoaXMu RXZlbnROb2RlUmVtb3ZpbmdFeGNlcHRpb24pOwoJCQllbGVtZW50LkFwcGVuZENoaWxkIChlbGVt ZW50Mik7CgkJCUFzc2VydEVxdWFscyAoMSwgZWxlbWVudC5DaGlsZE5vZGVzLkNvdW50KTsKCQkJ dHJ5IAoJCQl7CgkJCQllbGVtZW50LlJlbW92ZUNoaWxkKGVsZW1lbnQyKTsKCQkJCUZhaWwgKCJF eHBlY3RlZCBhbiBleGNlcHRpb24gdG8gYmUgdGhyb3duIGJ5IHRoZSBOb2RlUmVtb3ZpbmcgZXZl bnQgaGFuZGxlciBtZXRob2QgRXZlbnROb2RlUmVtb3ZpbmdFeGNlcHRpb24oKS4iKTsKCQkJfSAK CQkJY2F0Y2ggKEV4Y2VwdGlvbikge30KCQkJQXNzZXJ0RXF1YWxzICgxLCBlbGVtZW50LkNoaWxk Tm9kZXMuQ291bnQpOwoJCX0KCgkJcHVibGljIHZvaWQgVGVzdEdldEVsZW1lbnRzQnlUYWdOYW1l Tm9OYW1lU3BhY2UgKCkKCQl7CgkJCXN0cmluZyB4bWwgPSBAIjxsaWJyYXJ5Pjxib29rPjx0aXRs ZT5YTUwgRnVuPC90aXRsZT48YXV0aG9yPkpvaG4gRG9lPC9hdXRob3I+CgkJCQk8cHJpY2U+MzQu OTU8L3ByaWNlPjwvYm9vaz48Ym9vaz48dGl0bGU+QmVhciBhbmQgdGhlIERyYWdvbjwvdGl0bGU+ CgkJCQk8YXV0aG9yPlRvbSBDbGFuY3k8L2F1dGhvcj48cHJpY2U+Ni45NTwvcHJpY2U+PC9ib29r Pjxib29rPgoJCQkJPHRpdGxlPkJvdXJuZSBJZGVudGl0eTwvdGl0bGU+PGF1dGhvcj5Sb2JlcnQg THVkbHVtPC9hdXRob3I+CgkJCQk8cHJpY2U+OS45NTwvcHJpY2U+PC9ib29rPjxGbHVmZmVyPjxO dXR0ZXI+PGJvb2s+CgkJCQk8dGl0bGU+Qm91cm5lIFVsdGltYXR1bTwvdGl0bGU+PGF1dGhvcj5S b2JlcnQgTHVkbHVtPC9hdXRob3I+CgkJCQk8cHJpY2U+OS45NTwvcHJpY2U+PC9ib29rPjwvTnV0 dGVyPjwvRmx1ZmZlcj48L2xpYnJhcnk+IjsKCgkJCU1lbW9yeVN0cmVhbSBtZW1vcnlTdHJlYW0g PSBuZXcgTWVtb3J5U3RyZWFtIChFbmNvZGluZy5VVEY4LkdldEJ5dGVzICh4bWwpKTsKCQkJZG9j dW1lbnQgPSBuZXcgWG1sRG9jdW1lbnQgKCk7CgkJCWRvY3VtZW50LkxvYWQgKG1lbW9yeVN0cmVh bSk7CgkJCVhtbE5vZGVMaXN0IGJvb2tMaXN0ID0gZG9jdW1lbnQuR2V0RWxlbWVudHNCeVRhZ05h bWUgKCJib29rIik7CgkJCUFzc2VydEVxdWFscyAoIkdldEVsZW1lbnRzQnlUYWdOYW1lIChzdHJp bmcpIHJldHVybmVkIGluY29ycmVjdCBjb3VudC4iLCA0LCBib29rTGlzdC5Db3VudCk7CgkJfQoK CQlwdWJsaWMgdm9pZCBUZXN0R2V0RWxlbWVudHNCeVRhZ05hbWVVc2luZ05hbWVTcGFjZSAoKQoJ CXsKCQkJU3RyaW5nQnVpbGRlciB4bWwgPSBuZXcgU3RyaW5nQnVpbGRlciAoKTsKCQkJeG1sLkFw cGVuZCAoIjw/eG1sIHZlcnNpb249XCIxLjBcIiA/PjxsaWJyYXJ5IHhtbG5zOk5vcnRoPVwiaHR0 cDovL3d3dy5mb28uY29tXCIgIik7CgkJCXhtbC5BcHBlbmQgKCJ4bWxuczpTb3V0aD1cImh0dHA6 Ly93d3cuZ29vLmNvbVwiPjxOb3J0aDpib29rIHR5cGU9XCJub24tZmljdGlvblwiPiAiKTsKCQkJ eG1sLkFwcGVuZCAoIjxOb3J0aDp0aXRsZSB0eXBlPVwiaW50cm9cIj5YTUwgRnVuPC9Ob3J0aDp0 aXRsZT4gIiApOwoJCQl4bWwuQXBwZW5kICgiPE5vcnRoOmF1dGhvcj5Kb2huIERvZTwvTm9ydGg6 YXV0aG9yPiAiICk7CgkJCXhtbC5BcHBlbmQgKCI8Tm9ydGg6cHJpY2U+MzQuOTU8L05vcnRoOnBy aWNlPjwvTm9ydGg6Ym9vaz4gIiApOwoJCQl4bWwuQXBwZW5kICgiPFNvdXRoOmJvb2sgdHlwZT1c ImZpY3Rpb25cIj4gIiApOwoJCQl4bWwuQXBwZW5kICgiPFNvdXRoOnRpdGxlPkJlYXIgYW5kIHRo ZSBEcmFnb248L1NvdXRoOnRpdGxlPiAiICk7CgkJCXhtbC5BcHBlbmQgKCI8U291dGg6YXV0aG9y PlRvbSBDbGFuY3k8L1NvdXRoOmF1dGhvcj4gIiApOwogICAgICAgICAgICAgICAgICAgICAgICB4 bWwuQXBwZW5kICgiPFNvdXRoOnByaWNlPjYuOTU8L1NvdXRoOnByaWNlPjwvU291dGg6Ym9vaz4g IiApOwoJCQl4bWwuQXBwZW5kICgiPFNvdXRoOmJvb2sgdHlwZT1cImZpY3Rpb25cIj48U291dGg6 dGl0bGU+Qm91cm5lIElkZW50aXR5PC9Tb3V0aDp0aXRsZT4gIiApOwoJCQl4bWwuQXBwZW5kICgi PFNvdXRoOmF1dGhvcj5Sb2JlcnQgTHVkbHVtPC9Tb3V0aDphdXRob3I+ICIgKTsKCQkJeG1sLkFw cGVuZCAoIjxTb3V0aDpwcmljZT45Ljk1PC9Tb3V0aDpwcmljZT48L1NvdXRoOmJvb2s+PC9saWJy YXJ5PiIpOwoKCQkJTWVtb3J5U3RyZWFtIG1lbW9yeVN0cmVhbSA9IG5ldyBNZW1vcnlTdHJlYW0g KEVuY29kaW5nLlVURjguR2V0Qnl0ZXMgKHhtbC5Ub1N0cmluZyAoKSkpOwoJCQlkb2N1bWVudCA9 IG5ldyBYbWxEb2N1bWVudCAoKTsKCQkJZG9jdW1lbnQuTG9hZCAobWVtb3J5U3RyZWFtKTsKCQkJ WG1sTm9kZUxpc3QgYm9va0xpc3QgPSBkb2N1bWVudC5HZXRFbGVtZW50c0J5VGFnTmFtZSAoImJv b2siLCAiaHR0cDovL3d3dy5nb28uY29tIik7CgkJCUFzc2VydEVxdWFscyAoIkdldEVsZW1lbnRz QnlUYWdOYW1lIChzdHJpbmcsIHVyaSkgcmV0dXJuZWQgaW5jb3JyZWN0IGNvdW50LiIsIDIsIGJv b2tMaXN0LkNvdW50KTsKCQl9CgoJCgkJcHVibGljIHZvaWQgVGVzdElubmVyQW5kT3V0ZXJYbWwg KCkKCQl7CgkJCUFzc2VydEVxdWFscyAoU3RyaW5nLkVtcHR5LCBkb2N1bWVudC5Jbm5lclhtbCk7 CgkJCUFzc2VydEVxdWFscyAoZG9jdW1lbnQuSW5uZXJYbWwsIGRvY3VtZW50Lk91dGVyWG1sKTsK CgkJCVhtbERlY2xhcmF0aW9uIGRlY2xhcmF0aW9uID0gZG9jdW1lbnQuQ3JlYXRlWG1sRGVjbGFy YXRpb24gKCIxLjAiLCBudWxsLCBudWxsKTsKCQkJZG9jdW1lbnQuQXBwZW5kQ2hpbGQgKGRlY2xh cmF0aW9uKTsKCQkJQXNzZXJ0RXF1YWxzICgiPD94bWwgdmVyc2lvbj1cIjEuMFwiPz4iLCBkb2N1 bWVudC5Jbm5lclhtbCk7CgkJCUFzc2VydEVxdWFscyAoZG9jdW1lbnQuSW5uZXJYbWwsIGRvY3Vt ZW50Lk91dGVyWG1sKTsKCgkJCVhtbEVsZW1lbnQgZWxlbWVudCA9IGRvY3VtZW50LkNyZWF0ZUVs ZW1lbnQgKCJmb28iKTsKCQkJZG9jdW1lbnQuQXBwZW5kQ2hpbGQgKGVsZW1lbnQpOwoJCQlBc3Nl cnRFcXVhbHMgKCI8P3htbCB2ZXJzaW9uPVwiMS4wXCI/Pjxmb28gLz4iLCBkb2N1bWVudC5Jbm5l clhtbCk7CgkJCUFzc2VydEVxdWFscyAoZG9jdW1lbnQuSW5uZXJYbWwsIGRvY3VtZW50Lk91dGVy WG1sKTsKCgkJCVhtbENvbW1lbnQgY29tbWVudCA9IGRvY3VtZW50LkNyZWF0ZUNvbW1lbnQgKCJi YXIiKTsKCQkJZG9jdW1lbnQuRG9jdW1lbnRFbGVtZW50LkFwcGVuZENoaWxkIChjb21tZW50KTsK CQkJQXNzZXJ0RXF1YWxzICgiPD94bWwgdmVyc2lvbj1cIjEuMFwiPz48Zm9vPjwhLS1iYXItLT48 L2Zvbz4iLCBkb2N1bWVudC5Jbm5lclhtbCk7CgkJCUFzc2VydEVxdWFscyAoZG9jdW1lbnQuSW5u ZXJYbWwsIGRvY3VtZW50Lk91dGVyWG1sKTsKCgkJCVhtbFRleHQgdGV4dCA9IGRvY3VtZW50LkNy ZWF0ZVRleHROb2RlICgiYmF6Iik7CgkJCWRvY3VtZW50LkRvY3VtZW50RWxlbWVudC5BcHBlbmRD aGlsZCAodGV4dCk7CgkJCUFzc2VydEVxdWFscyAoIjw/eG1sIHZlcnNpb249XCIxLjBcIj8+PGZv bz48IS0tYmFyLS0+YmF6PC9mb28+IiwgZG9jdW1lbnQuSW5uZXJYbWwpOwoJCQlBc3NlcnRFcXVh bHMgKGRvY3VtZW50LklubmVyWG1sLCBkb2N1bWVudC5PdXRlclhtbCk7CgoJCQllbGVtZW50ID0g ZG9jdW1lbnQuQ3JlYXRlRWxlbWVudCAoInF1dXgiKTsKCQkJZWxlbWVudC5TZXRBdHRyaWJ1dGUg KCJxdXV1eCIsICJzcXVvbmsiKTsKCQkJZG9jdW1lbnQuRG9jdW1lbnRFbGVtZW50LkFwcGVuZENo aWxkIChlbGVtZW50KTsKCQkJQXNzZXJ0RXF1YWxzICgiPD94bWwgdmVyc2lvbj1cIjEuMFwiPz48 Zm9vPjwhLS1iYXItLT5iYXo8cXV1eCBxdXV1eD1cInNxdW9ua1wiIC8+PC9mb28+IiwgZG9jdW1l bnQuSW5uZXJYbWwpOwoJCQlBc3NlcnRFcXVhbHMgKGRvY3VtZW50LklubmVyWG1sLCBkb2N1bWVu dC5PdXRlclhtbCk7CgkJfQoKCQlwdWJsaWMgdm9pZCBUZXN0TG9hZFdpdGhTeXN0ZW1JT1N0cmVh bSAoKQoJCXsJCQkKCQkJc3RyaW5nIHhtbCA9IEAiPGxpYnJhcnk+PGJvb2s+PHRpdGxlPlhNTCBG dW48L3RpdGxlPjxhdXRob3I+Sm9obiBEb2U8L2F1dGhvcj4KCQkJCTxwcmljZT4zNC45NTwvcHJp Y2U+PC9ib29rPjxib29rPjx0aXRsZT5CZWFyIGFuZCB0aGUgRHJhZ29uPC90aXRsZT4KCQkJCTxh dXRob3I+VG9tIENsYW5jeTwvYXV0aG9yPjxwcmljZT42Ljk1PC9wcmljZT48L2Jvb2s+PGJvb2s+ CgkJCQk8dGl0bGU+Qm91cm5lIElkZW50aXR5PC90aXRsZT48YXV0aG9yPlJvYmVydCBMdWRsdW08 L2F1dGhvcj4KCQkJCTxwcmljZT45Ljk1PC9wcmljZT48L2Jvb2s+PEZsdWZmZXI+PE51dHRlcj48 Ym9vaz4KCQkJCTx0aXRsZT5Cb3VybmUgVWx0aW1hdHVtPC90aXRsZT48YXV0aG9yPlJvYmVydCBM dWRsdW08L2F1dGhvcj4KCQkJCTxwcmljZT45Ljk1PC9wcmljZT48L2Jvb2s+PC9OdXR0ZXI+PC9G bHVmZmVyPjwvbGlicmFyeT4iOwoKCQkJTWVtb3J5U3RyZWFtIG1lbW9yeVN0cmVhbSA9IG5ldyBN ZW1vcnlTdHJlYW0gKEVuY29kaW5nLlVURjguR2V0Qnl0ZXMgKHhtbCkpOwoJCQlkb2N1bWVudCA9 IG5ldyBYbWxEb2N1bWVudCAoKTsKCQkJZG9jdW1lbnQuTG9hZCAobWVtb3J5U3RyZWFtKTsKCQkJ QXNzZXJ0RXF1YWxzICgiTm90IExvYWRlZCBGcm9tIElPU3RyZWFtIiwgdHJ1ZSwgZG9jdW1lbnQu SGFzQ2hpbGROb2Rlcyk7CgkJfQoKCQlwdWJsaWMgdm9pZCBUZXN0TG9hZFhtbENEQVRBICgpCgkJ ewoJCQlkb2N1bWVudC5Mb2FkWG1sICgiPGZvbz48IVtDREFUQVtiYXJdXT48L2Zvbz4iKTsKCQkJ QXNzZXJ0IChkb2N1bWVudC5Eb2N1bWVudEVsZW1lbnQuRmlyc3RDaGlsZC5Ob2RlVHlwZSA9PSBY bWxOb2RlVHlwZS5DREFUQSk7CgkJCUFzc2VydEVxdWFscyAoImJhciIsIGRvY3VtZW50LkRvY3Vt ZW50RWxlbWVudC5GaXJzdENoaWxkLlZhbHVlKTsKCQl9CgoJCXB1YmxpYyB2b2lkIFRlc3RMb2Fk WE1MQ29tbWVudCgpCgkJewovLyBYbWxUZXh0UmVhZGVyIG5lZWRzIHRvIHRocm93IHRoaXMgZXhj ZXB0aW9uCi8vCQkJdHJ5IHsKLy8JCQkJZG9jdW1lbnQuTG9hZFhtbCgiPCEtLWZvby0tPiIpOwov LwkJCQlGYWlsKCJYbWxFeGNlcHRpb24gc2hvdWxkIGhhdmUgYmVlbiB0aHJvd24uIik7Ci8vCQkJ fQovLwkJCWNhdGNoIChYbWxFeGNlcHRpb24gZSkgewovLwkJCQlBc3NlcnRFcXVhbHMoIkV4Y2Vw dGlvbiBtZXNzYWdlIGRvZXNuJ3QgbWF0Y2guIiwgIlRoZSByb290IGVsZW1lbnQgaXMgbWlzc2lu Zy4iLCBlLk1lc3NhZ2UpOwovLwkJCX0KCgkJCWRvY3VtZW50LkxvYWRYbWwgKCI8Zm9vPjwhLS1D b21tZW50LS0+PC9mb28+Iik7CgkJCUFzc2VydCAoZG9jdW1lbnQuRG9jdW1lbnRFbGVtZW50LkZp cnN0Q2hpbGQuTm9kZVR5cGUgPT0gWG1sTm9kZVR5cGUuQ29tbWVudCk7CgkJCUFzc2VydEVxdWFs cyAoIkNvbW1lbnQiLCBkb2N1bWVudC5Eb2N1bWVudEVsZW1lbnQuRmlyc3RDaGlsZC5WYWx1ZSk7 CgoJCQlkb2N1bWVudC5Mb2FkWG1sIChAIjxmb28+PCEtLWJhci0tPjwvZm9vPiIpOwoJCQlBc3Nl cnRFcXVhbHMgKCJJbmNvcnJlY3QgdGFyZ2V0LiIsICJiYXIiLCAoKFhtbENvbW1lbnQpZG9jdW1l bnQuRmlyc3RDaGlsZC5GaXJzdENoaWxkKS5EYXRhKTsKCQl9CgoJCXB1YmxpYyB2b2lkIFRlc3RM b2FkWG1sRWxlbWVudFNpbmdsZSAoKQoJCXsKCQkJQXNzZXJ0TnVsbCAoZG9jdW1lbnQuRG9jdW1l bnRFbGVtZW50KTsKCQkJZG9jdW1lbnQuTG9hZFhtbCAoIjxmb28vPiIpOwoKCQkJQXNzZXJ0Tm90 TnVsbCAoZG9jdW1lbnQuRG9jdW1lbnRFbGVtZW50KTsKCQkJQXNzZXJ0U2FtZSAoZG9jdW1lbnQu Rmlyc3RDaGlsZCwgZG9jdW1lbnQuRG9jdW1lbnRFbGVtZW50KTsKCgkJCUFzc2VydEVxdWFscyAo U3RyaW5nLkVtcHR5LCBkb2N1bWVudC5Eb2N1bWVudEVsZW1lbnQuUHJlZml4KTsKCQkJQXNzZXJ0 RXF1YWxzICgiZm9vIiwgZG9jdW1lbnQuRG9jdW1lbnRFbGVtZW50LkxvY2FsTmFtZSk7CgkJCUFz c2VydEVxdWFscyAoU3RyaW5nLkVtcHR5LCBkb2N1bWVudC5Eb2N1bWVudEVsZW1lbnQuTmFtZXNw YWNlVVJJKTsKCQkJQXNzZXJ0RXF1YWxzICgiZm9vIiwgZG9jdW1lbnQuRG9jdW1lbnRFbGVtZW50 Lk5hbWUpOwoJCX0KCgkJcHVibGljIHZvaWQgVGVzdExvYWRYbWxFbGVtZW50V2l0aEF0dHJpYnV0 ZXMgKCkKCQl7CgkJCUFzc2VydE51bGwgKGRvY3VtZW50LkRvY3VtZW50RWxlbWVudCk7CgkJCWRv Y3VtZW50LkxvYWRYbWwgKCI8Zm9vIGJhcj0nYmF6JyBxdXV4PSdxdXV1eCcvPiIpOwoKCQkJWG1s RWxlbWVudCBkb2N1bWVudEVsZW1lbnQgPSBkb2N1bWVudC5Eb2N1bWVudEVsZW1lbnQ7CgoJCQlB c3NlcnRFcXVhbHMgKCJiYXoiLCBkb2N1bWVudEVsZW1lbnQuR2V0QXR0cmlidXRlICgiYmFyIikp OwoJCQlBc3NlcnRFcXVhbHMgKCJxdXV1eCIsIGRvY3VtZW50RWxlbWVudC5HZXRBdHRyaWJ1dGUg KCJxdXV4IikpOwoJCX0KCQlwdWJsaWMgdm9pZCBUZXN0TG9hZFhtbEVsZW1lbnRXaXRoQ2hpbGRF bGVtZW50ICgpCgkJewoJCQlkb2N1bWVudC5Mb2FkWG1sICgiPGZvbz48YmFyLz48L2Zvbz4iKTsK CQkJQXNzZXJ0IChkb2N1bWVudC5DaGlsZE5vZGVzLkNvdW50ID09IDEpOwoJCQlBc3NlcnQgKGRv Y3VtZW50LkZpcnN0Q2hpbGQuQ2hpbGROb2Rlcy5Db3VudCA9PSAxKTsKCQkJQXNzZXJ0RXF1YWxz ICgiZm9vIiwgZG9jdW1lbnQuRG9jdW1lbnRFbGVtZW50LkxvY2FsTmFtZSk7CgkJCUFzc2VydEVx dWFscyAoImJhciIsIGRvY3VtZW50LkRvY3VtZW50RWxlbWVudC5GaXJzdENoaWxkLkxvY2FsTmFt ZSk7CgkJfQoKCQlwdWJsaWMgdm9pZCBUZXN0TG9hZFhtbEVsZW1lbnRXaXRoVGV4dE5vZGUgKCkK CQl7CgkJCWRvY3VtZW50LkxvYWRYbWwgKCI8Zm9vPmJhcjwvZm9vPiIpOwoJCQlBc3NlcnQgKGRv Y3VtZW50LkRvY3VtZW50RWxlbWVudC5GaXJzdENoaWxkLk5vZGVUeXBlID09IFhtbE5vZGVUeXBl LlRleHQpOwoJCQlBc3NlcnRFcXVhbHMgKCJiYXIiLCBkb2N1bWVudC5Eb2N1bWVudEVsZW1lbnQu Rmlyc3RDaGlsZC5WYWx1ZSk7CgkJfQoKCQlwdWJsaWMgdm9pZCBUZXN0TG9hZFhtbEV4Y2VwdGlv bkNsZWFyc0RvY3VtZW50ICgpCgkJewoJCQlkb2N1bWVudC5Mb2FkWG1sICgiPGZvby8+Iik7CgkJ CUFzc2VydCAoZG9jdW1lbnQuRmlyc3RDaGlsZCAhPSBudWxsKTsKCQkJCgkJCXRyeSB7CgkJCQlk b2N1bWVudC5Mb2FkWG1sICgiPDEyMy8+Iik7CgkJCQlGYWlsICgiQW4gWG1sRXhjZXB0aW9uIHNo b3VsZCBoYXZlIGJlZW4gdGhyb3duLiIpOwoJCQl9IGNhdGNoIChYbWxFeGNlcHRpb24pIHt9CgoJ CQlBc3NlcnQgKGRvY3VtZW50LkZpcnN0Q2hpbGQgPT0gbnVsbCk7CgkJfQoKCQlwdWJsaWMgdm9p ZCBUZXN0TG9hZFhtbFByb2Nlc3NpbmdJbnN0cnVjdGlvbiAoKQoJCXsKCQkJZG9jdW1lbnQuTG9h ZFhtbCAoQCI8P2ZvbyBiYXI9J2JhYXonIHF1dXg9J3F1dXV4Jz8+PHF1dXV1eD48L3F1dXV1eD4i KTsKCQkJQXNzZXJ0RXF1YWxzICgiSW5jb3JyZWN0IHRhcmdldC4iLCAiZm9vIiwgKChYbWxQcm9j ZXNzaW5nSW5zdHJ1Y3Rpb24pZG9jdW1lbnQuRmlyc3RDaGlsZCkuVGFyZ2V0KTsKCQkJQXNzZXJ0 RXF1YWxzICgiSW5jb3JyZWN0IGRhdGEuIiwgImJhcj0nYmFheicgcXV1eD0ncXV1dXgnIiwgKChY bWxQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24pZG9jdW1lbnQuRmlyc3RDaGlsZCkuRGF0YSk7CgkJfQoK CQlwdWJsaWMgdm9pZCBUZXN0T3V0ZXJYbWwgKCkKCQl7CgkJCXN0cmluZyB4bWw7CgkJCQoJCQl4 bWwgPSAiPHJvb3Q+PCFbQ0RBVEFbZm9vXV0+PC9yb290PiI7CgkJCWRvY3VtZW50LkxvYWRYbWwg KHhtbCk7CgkJCUFzc2VydEVxdWFscygiWG1sRG9jdW1lbnQgd2l0aCBjZGF0YSBPdXRlclhtbCBp cyBpbmNvcnJlY3QuIiwgeG1sLCBkb2N1bWVudC5PdXRlclhtbCk7CgoJCQl4bWwgPSAiPHJvb3Q+ PCEtLWZvby0tPjwvcm9vdD4iOwoJCQlkb2N1bWVudC5Mb2FkWG1sICh4bWwpOwoJCQlBc3NlcnRF cXVhbHMoIlhtbERvY3VtZW50IHdpdGggY29tbWVudCBPdXRlclhtbCBpcyBpbmNvcnJlY3QuIiwg eG1sLCBkb2N1bWVudC5PdXRlclhtbCk7CgoJCQl4bWwgPSAiPHJvb3Q+PD9mb28gYmFyPz48L3Jv b3Q+IjsKCQkJZG9jdW1lbnQuTG9hZFhtbCAoeG1sKTsKCQkJQXNzZXJ0RXF1YWxzKCJYbWxEb2N1 bWVudCB3aXRoIHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb24gT3V0ZXJYbWwgaXMgaW5jb3JyZWN0LiIs IHhtbCwgZG9jdW1lbnQuT3V0ZXJYbWwpOwoJCX0KCgkJcHVibGljIHZvaWQgVGVzdFBhcmVudE5v ZGVzICgpCgkJewoJCQlkb2N1bWVudC5Mb2FkWG1sICgiPGZvbz48YmFyPjxiYXovPjwvYmFyPjwv Zm9vPiIpOwoJCQlYbWxOb2RlIG5vZGUgPSBkb2N1bWVudC5GaXJzdENoaWxkLkZpcnN0Q2hpbGQu Rmlyc3RDaGlsZDsKCQkJQXNzZXJ0RXF1YWxzICgiV3JvbmcgY2hpbGQgZm91bmQuIiwgImJheiIs IG5vZGUuTG9jYWxOYW1lKTsKCQkJQXNzZXJ0RXF1YWxzICgiV3JvbmcgcGFyZW50LiIsICJiYXIi LCBub2RlLlBhcmVudE5vZGUuTG9jYWxOYW1lKTsKCQkJQXNzZXJ0RXF1YWxzICgiV3JvbmcgcGFy ZW50LiIsICJmb28iLCBub2RlLlBhcmVudE5vZGUuUGFyZW50Tm9kZS5Mb2NhbE5hbWUpOwoJCQlB c3NlcnRFcXVhbHMgKCJXcm9uZyBwYXJlbnQuIiwgIiNkb2N1bWVudCIsIG5vZGUuUGFyZW50Tm9k ZS5QYXJlbnROb2RlLlBhcmVudE5vZGUuTG9jYWxOYW1lKTsKCQkJQXNzZXJ0TnVsbCAoIkV4cGVj dGVkIHBhcmVudCB0byBiZSBudWxsLiIsIG5vZGUuUGFyZW50Tm9kZS5QYXJlbnROb2RlLlBhcmVu dE5vZGUuUGFyZW50Tm9kZSk7CgkJfQoKCQlwdWJsaWMgdm9pZCBUZXN0UmVtb3ZlZEVsZW1lbnRO ZXh0U2libGluZyAoKQoJCXsKCQkJWG1sTm9kZSBub2RlOwoJCQlYbWxOb2RlIG5leHRTaWJsaW5n OwoKCQkJZG9jdW1lbnQuTG9hZFhtbCAoIjxmb28+PGNoaWxkMS8+PGNoaWxkMi8+PC9mb28+Iik7 CgkJCW5vZGUgPSBkb2N1bWVudC5Eb2N1bWVudEVsZW1lbnQuRmlyc3RDaGlsZDsKCQkJZG9jdW1l bnQuRG9jdW1lbnRFbGVtZW50LlJlbW92ZUNoaWxkIChub2RlKTsKCQkJbmV4dFNpYmxpbmcgPSBu b2RlLk5leHRTaWJsaW5nOwoJCQlBc3NlcnROdWxsICgiRXhwZWN0ZWQgcmVtb3ZlZCBub2RlJ3Mg bmV4dCBzaWJsaW5nIHRvIGJlIG51bGwuIiwgbmV4dFNpYmxpbmcpOwoJCX0KCgkJLy8gSW1wb3J0 Tm9kZQoJCXB1YmxpYyB2b2lkIFRlc3RJbXBvcnROb2RlICgpCgkJewoJCQlYbWxOb2RlIG47CgoJ CQlzdHJpbmcgeGxpbmtVUkkgPSAiaHR0cDovL3d3dy53My5vcmcvMTk5OS9YTGluayI7CgkJCXN0 cmluZyB4bWwxID0gIjw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J3V0Zi04JyA/Pjxmb28g eG1sbnM6eGxpbms9JyIgKyB4bGlua1VSSSArICInPjxiYXIgYTE9J3YxJyB4bGluazpocmVmPScj Zm9vJz48YmF6PjwhW0NEQVRBW2NkYXRhIHNlY3Rpb24uXG5cdGl0ZW0gMVxuXHRpdGVtIDJcbl1d PkZyb20gaGVyZSwgc2ltcGxlIHRleHQgbm9kZS48L2Jhej48L2Jhcj48L2Zvbz4iOwoJCQlkb2N1 bWVudC5Mb2FkWG1sKHhtbDEpOwoJCQlYbWxEb2N1bWVudCBuZXdEb2MgPSBuZXcgWG1sRG9jdW1l bnQoKTsKCQkJbmV3RG9jLkxvYWRYbWwoIjxob2dlPjxmdWdhIC8+PC9ob2dlPiIpOwoJCQlYbWxF bGVtZW50IGJhciA9IGRvY3VtZW50LkRvY3VtZW50RWxlbWVudC5GaXJzdENoaWxkIGFzIFhtbEVs ZW1lbnQ7CgoJCQkvLyBBdHRyaWJ1dGUKCQkJbiA9IG5ld0RvYy5JbXBvcnROb2RlKGJhci5HZXRB dHRyaWJ1dGVOb2RlKCJocmVmIiwgeGxpbmtVUkkpLCB0cnVlKTsKCQkJQXNzZXJ0RXF1YWxzKCIj SW1wb3J0Tm9kZS5BdHRyLk5TLkxvY2FsTmFtZSIsICJocmVmIiwgbi5Mb2NhbE5hbWUpOwoJCQlB c3NlcnRFcXVhbHMoIiNJbXBvcnROb2RlLkF0dHIuTlMuTlNVUkkiLCB4bGlua1VSSSwgbi5OYW1l c3BhY2VVUkkpOwoJCQlBc3NlcnRFcXVhbHMoIiNJbXBvcnROb2RlLkF0dHIuTlMuVmFsdWUiLCAi I2ZvbyIsIG4uVmFsdWUpOwoKCQkJLy8gQ0RBVEEKCQkJbiA9IG5ld0RvYy5JbXBvcnROb2RlKGJh ci5GaXJzdENoaWxkLkZpcnN0Q2hpbGQsIHRydWUpOwoJCQlBc3NlcnRFcXVhbHMoIiNJbXBvcnRO b2RlLkNEQVRBIiwgImNkYXRhIHNlY3Rpb24uXG5cdGl0ZW0gMVxuXHRpdGVtIDJcbiIsIG4uVmFs dWUpOwoKCQkJLy8gRWxlbWVudAoJCQlYbWxFbGVtZW50IGUgPSBuZXdEb2MuSW1wb3J0Tm9kZShi YXIsIHRydWUpIGFzIFhtbEVsZW1lbnQ7CgkJCUFzc2VydEVxdWFscygiI0ltcG9ydE5vZGUuRWxl bWVudC5OYW1lIiwgImJhciIsIGUuTmFtZSk7CgkJCUFzc2VydEVxdWFscygiI0ltcG9ydE5vZGUu RWxlbWVudC5BdHRyIiwgIiNmb28iLCBlLkdldEF0dHJpYnV0ZSgiaHJlZiIsIHhsaW5rVVJJKSk7 CgkJCUFzc2VydEVxdWFscygiI0ltcG9ydE5vZGUuRWxlbWVudC5kZWVwIiwgImJheiIsIGUuRmly c3RDaGlsZC5OYW1lKTsKCgkJCS8vIEVudGl0eSBSZWZlcmVuY2U6CgkJCS8vICAgWzIwMDIvMTAv MTRdIENyZWF0ZUVudGl0eVJlZmVyZW5jZSB3YXMgbm90IGltcGxlbWVudGVkLgovLwkJCWRvY3Vt ZW50LkxvYWRYbWwoIjwhRE9DVFlQRSB0ZXN0IFBVQkxJQyAnZHVtbXknIFs8IUVOVElUWSBGT09F TlQgJ2Zvbyc+XT48cm9vdD4mRk9PRU5UOzwvcm9vdD4iKTsKLy8JCQluID0gbmV3RG9jLkltcG9y dE5vZGUoZG9jdW1lbnQuRG9jdW1lbnRFbGVtZW50LkZpcnN0Q2hpbGQpOwovLwkJCUFzc2VydEVx dWFscygiI0ltcG9ydE5vZGUuRW50aXR5UmVmZXJlbmNlIiwgIkZPT0VOVCIsIG4uTmFtZSk7Ci8v CQkJQXNzZXJ0RXF1YWxzKCIjSW1wb3J0Tm9kZS5FbnRpdHlSZWZlcmVuY2UiLCAiZm9vXyIsIG4u VmFsdWUpOwoKCQkJLy8gUHJvY2Vzc2luZyBJbnN0cnVjdGlvbgoJCQlkb2N1bWVudC5Mb2FkWG1s KCI8Zm9vPjw/eG1sLXN0eWxlc2hlZXQgaHJlZj0nZm9vLnhzbCcgPz48L2Zvbz4iKTsKCQkJWG1s UHJvY2Vzc2luZ0luc3RydWN0aW9uIHBpID0gKFhtbFByb2Nlc3NpbmdJbnN0cnVjdGlvbiluZXdE b2MuSW1wb3J0Tm9kZShkb2N1bWVudC5Eb2N1bWVudEVsZW1lbnQuRmlyc3RDaGlsZCwgZmFsc2Up OwoJCQlBc3NlcnRFcXVhbHMoIiNJbXBvcnROb2RlLlByb2Nlc3NpbmdJbnN0cnVjdGlvbi5OYW1l IiwgInhtbC1zdHlsZXNoZWV0IiwgcGkuTmFtZSk7CgkJCUFzc2VydEVxdWFscygiI0ltcG9ydE5v ZGUuUHJvY2Vzc2luZ0luc3RydWN0aW9uLkRhdGEiLCAiaHJlZj0nZm9vLnhzbCciLCBwaS5EYXRh LlRyaW0oKSk7CgkJCQoJCQkvLyBUZXh0CgkJCWRvY3VtZW50LkxvYWRYbWwoeG1sMSk7CgkJCW4g PSBuZXdEb2MuSW1wb3J0Tm9kZSgoWG1sVGV4dCliYXIuRmlyc3RDaGlsZC5DaGlsZE5vZGVzWzFd LCB0cnVlKTsKCQkJQXNzZXJ0RXF1YWxzKCIjSW1wb3J0Tm9kZS5UZXh0IiwgIkZyb20gaGVyZSwg c2ltcGxlIHRleHQgbm9kZS4iLCBuLlZhbHVlKTsKCgkJCS8vIFdoaXRlc3BhY2UKCQl9Cgl9Cn0K --------_3DAAC39652B30519E008_MULTIPART_MIXED_-- From ginga@kit.hi-ho.ne.jp Mon Oct 14 14:34:50 2002 From: ginga@kit.hi-ho.ne.jp (ginga@kit.hi-ho.ne.jp) Date: Mon, 14 Oct 2002 22:34:50 +0900 Subject: [Mono-list] Re: More help needed. In-Reply-To: <1034371147.14578.347.camel@erandi.boston.ximian.com> References: <1034371147.14578.347.camel@erandi.boston.ximian.com> Message-ID: <20021014223404.5293.GINGA@kit.hi-ho.ne.jp> --------_3DAAC76752D40AFD1700_MULTIPART_MIXED_ Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit > I am using a method called System.Xml.XmlDocument.ImportNode, but > Mono does not implement this bad boy yet. Could someone cook an > implementation for this method? 2 days ago, I failed to send this easy implementation code to the ML, but only to send to Miguel himself. Now I made some tests and some modifications. Miguel, I found two bugs that code in copying attributes, so please update that code. ____________________ Atsushi ENOMOTO --------_3DAAC76752D40AFD1700_MULTIPART_MIXED_ Content-Type: application/x-zip-compressed; name="XmlDocument.zip" Content-Disposition: attachment; filename="XmlDocument.zip" Content-Transfer-Encoding: base64 UEsDBBQAAAAIAO6zTi0UxvCO+g8AAAFLAAAdAG4AWG1sRG9jdW1lbnQvbmV3WG1sRG9jdW1lbnQu Y3NTRFkAmAAAAAAIADVooExjZGBpEGFgYFBhgAAHIGZkAjNZFYCEApDNyArhiwKJysd/gkMk+TRv v+YJAKljYohgYAZLqzD8Z5THqfYFWJEIRA0jRI0QmJKAiKHZCQBVVA0ABy/Hqj1Ax6o9QMeqPd0c aW/rNvKz8ytYF2hkrKskxX5YJM32pTna7L6XPCTpAbRFwUi0rUaWvJIcx5vmv+8ML5EUZctOul0s 0BdLPObizHBmSHVvb2dvj9wuy4pNwx+nKf47y6P5lGUV9GDnybya5EV5iM+EnNEsYSn5gd2zggQx f/t8gW/v6LyskiwsijDKpwMx/J8FTckFK6IJ+fIBnn8d4fO7SV5NaZLiwL+Lgf+gZZ6Rs4RO8ywm X/6Gr++S7Df2UCVpHubFWA78kIznQEDMyGVE/01JMOUN756SaUIzA/XZPItoRj7QB6CTPztjcFhw OiBf7O8fWHwZHV8YHAxtIocuKUMDJYLfmZdJNpbCPbLewstrp+GOPVVOE1+Oj7SaOO2Af5zlIOuo dHpO8zRlUZXkGfTsZHTKyhmNmAFw53mnN5vfp0lEopSWJTHWmxzi21Ues50eDOt9WrAxgCIXIJi4 3IEW6H6fZA8sxkEE5lfi9XSSpPGRGHAFWO/ofcpIpp6wp6wKJPSeluy7m0tyTG55Q3g+nVXLIwT+ KctigXHHQH4KvFTFPKpABbFdEm+SHQyAcgRMgmyepgPyTF5w6E8f8iy/uz67/gXnFXkFomExSbKK FRksqgUDXi6ns5ThG0UJkmQ6cwADGJRLr5oU+YJkbEGu8krPYvH5U8RmfG4wQJ5f2gi2xVS1oNHy A2lllQbol9P5I0A2JcSwQS3o6YRmYyAQ276lWZyC8RrtR1vNg+XbeOJlVrKi2gKjmLgNyhs2zR+3 wMjnKYR+oX8s8hlSxUzBA7KiSMA+pMp/LVWer+mYVeKhV7BqXmTKIHB1YXkbOnMudIso3VHvDjDJ CsnwzzFYbFFW0ih5/wKeUb2w+xPQJmEmvKuXjGRHUhoYB6Kzd18w+nAkXiR0/AmvwF/dJkAmCqjX k4RrtkxM5CvxSk34oPLYZ/NtW6wQwmNSVHPbWu+WM0asl1ocZK1xgm2SlRibrsB5fT02EvRvWQV+ KOwPfmlXncssYwWQ4y437E+AjpTzgpHFZAlUwNrBf7D3KBAhIR/BvyMUpHE+npBRXsBCLEJX/UKF Ri9Gr9yCOZeH+zxPyWV5w2h8naVLU2oS+YimJTMgaM+sYdgbznt7w9EQe5ZFebYlqZylFqAzBpT6 kaZzZmhjr9e+LO/ziHIH7uGp/2ksFbO/QjYS0DYwrL2jfmpCqbffdjqk3+A2pB+aoIxhobK71VD1 Xne9AN3Sbx4q0QmstkeuSB8LBhvAI/thklQyqtnGDLfS7DVu6YaVeQq8W8/P2yLz7zQfGAThIgjz UeMuKDlN84zxp4CLL2Zs9tr45aQCrb2fVwAdNoWK1e+B1GdUOY1FLnBjLA4aWuHfdsj+BeJPRgn4 Bg7QIIGrB2yqmhTZNyvYKHk6MlpSZclin/xIi5Jxowwc6Pm8ktPFs544EDPbmFVz9PihTaHLuaFW 6yWggLvMrBYG7veBHkuOVTjw++/EbraWSMQDteacFGMRkNQ607+bwCavqeSwOAkEkqIM9qt7RhgC g03PkhrCsxheJ7Yh3/FWCe/0jFb0VuRCUn5WkxJhDG2uxkpy7PE4sAPafMr9nMQo37ogE0O9aNbl MSt05oyN6Dyt3kp1NnIcHYO5i4KODZk1moNXua226NFGxptMJ6bFIMBcxkMZDvd6hKi+kmfV0Kca 1Irczu/B87estI1TINNYDJg2sBbVM+JpwZF6W++R9chu/rgFjeFLHY9p9Pwv+GRN8Ss88noZSOA+ bobrBPLH+mXDG2MewATxJYFn7bJLw1HzxA07M+GzpY63uG5HukbmJxsOLapbpW+mjGazO32Vg2wu W1Yl1fKGjVjBskjZvtvqtZhXOLwVfhprelf0MRnTCiQsyKnfAzOZfyvnJ4JCgYlHhaY2ytBeiNjV 07V6a5mZAP4Nq1S+cFHkUwFYVBlqRIOhdLVdzc/Lg5nBVPBnY/ItyyXHdVXCNWDs016JGyviQ4M0 0yO91QrD9Q1RFZb2AbZqShs3HGG21v/1eP7qWxsuJPIKL7jxMjSdYreFWSRVNBEEq2JVhFVSr7gP yboQvEXZPEBPz07uThyAdjTIPXPbbBHKufNVLLhqqooN9FwnZkAbJ3t7hJeQPifgsStS5aRkWAZK QFhRXS3HjnkJHCchC/GJsKcED2jGRtWAV4SqcDU1KhRzOPJEamvYwpcWIDIaAtkMifu3Day0Iwdi Y6Pvvu6O3bmA3Q1jFW0fizxivPx2KVcE9MYB6B1jCqEN+G0yziAOgs26qsshDnDvGBI0wjwPeDyK cqBhkzD2VXS1ErMpBajyLEppQT1iszshvDkI9/sefYlF7nNImsHR9by6Ht1g2b+uwUi6LvJiSqug /7z/8nMGLhfUBrZvrj6H5Pngpa8zAdK/nbGIx6OESsBkQUvui/MRoGWkQBz48giRayyKjCUQW3E5 52pjHAwG3gMAw+v6lWWlIhkOtgICIYkwWlbkoi3gJAzSLRP2699K3VS0gq5pyiBWZRR3gWhCCxJB MKX75SYcYcy4S3YH5LPPiHz7ubBfM/u12pVbKuRyHu0wQ+fLTKzcoqYTKaEQ2RUlD4YRTFOGLSwi 7etlh9bWMDyfdGycfFpHFI01+X9diM2lbzoXv8eR8nkEzPCu03/YFfJYRdCqVqCLBRXNYopVWSvh kzBQHNyPdUnn1BxVdShxD4etvyggPNEJGkCHRanR1ud+sACfWD0QfvaX4JdEROp0ZHl/0CnLNOa1 U2bHpSq8MYWrparFachu08xPxgKQj8jHr5eXsV5AmQRfxm+ZZb2HIMtAWH69vKNjEbb7MsyToqBL Pgezo/rtWMpZvcvgCtkPS0aLaILIyhsWzUFejyxdgn5Dp4p37HzZgi0g2UtwZSEPmuMFx0XyCPZA HnOwxDYqVIoA2wX+avPAd7O0Jt/rmq4tDuiuKVDSMmX8ZDwfK2whP8/jRB1Zbss6IQfnZcwePGsn xo+29fFeeI4Vp5IEklRuOuL02yDcHaWjTHmEbjISnsSxwCKDFJaWrCfGrVzajEtSi7AhO0ta62KJ bmrasSb89grcWvR/Yy02c9aWioW3QtLIUJ1uM1ft6+Ja/9B3mqrzVCMS7kcYYpUi1/RP4xmqNUWk ly2jRac5Xh8weyfoM17PjJFM91bPVEmhDwIGv6tn44s5Uzpq/ySpwdZ4nqoVKlVrmWfnc+b8mY6A kzoC9kPxBssmrLKOBOvYxQ/LGzSasDCA8U8V1wfrketQufBVsqRcUetG7+ZJWFtWKUXOymy3AnQz PKyHfZdmS+FweZUL8qf9l7A/dM3J8Vdr9nTuxWFrzgsZGJuefUiap917e+Rb4KbKgTB+OE8ks8ZZ pUjMvqqNWuwESlzck6+tQAnZyVtVPes0riyiXwGbvDwlb0I5tu9MictKTuEu0ylrBRIi6J88yJPv 7w2vLZuumqUPLhWU8eFaocjxkpzwe2wEohTw7/W9mdoby7GyVV4Ma6my7ZgTDU7NeptYDI5JBrft VbdWePKAtQMoXYVzjQEjSm0HfV2Uqw9NEq6WLNZBeIeiWkNrGnW1eGQrgTsg0IuajAKl+iZQFQXV poIRUGaHS2pSPasXj8KT2Yxl4pIU353D2vICiNE5No1e3B0zfpU+jNaoglUg7CZ1vmtvJHlVLmwI XGUJoNIg6MC4A4kiOmoOjEvHLGUHGqVpkI4x+g3RWJva+NEIcY1wlm4tG+uqjTjiZKyzYTTi8JbV 1wH4MlqYB+4iIyh3nV+2UTdkxaNtnKaNtMxVrnKdoznPYnvt/bqFRYY0ZWPYZoztBRYw5SemHnD9 9kJyLKKLN0PIoa3A50W2KofdkfrzE37kEB7shwd//aWl0I0mltRwWk4L3OJ5R2JABjXv+YisQU6m NMHLpPcsonim4acYq7DmJCxWQZwyZRBZJZDXoSD39kwtMo3ZBhbohK/Vs1zl2Wq31XWlEVDrIoMA RTl842XueDqxo/ycvwA8S+zwZUXk65Gqd3QwS8I7WVaGR9zyW2n2H3q0ofOO7rL588OPNqiqGtsF UAciV1IGtnkJITUG1A8ZrPRExLD8zC+pwrDFDJ2jEwnKg5zz0T7TV0HSBG6qgG3ZxeoiW2sJg5ef 3uc05qdJjE7BwMWDWSjCi+eswEKPfDo2C+WyLdAzOUYBVE9prfUZFMjkZ5SkzCrs1V86qa6jjQjD JkGaatEotqbVgF+pJ02wGOKhpB7aBYeHQTMVu2F4KTqfF0SVA2THhfg6QXzL8NsctBzddQn5ifgM h6C3xHkRhgngmsk93nmgeDqHcySYKV0Srur8FA4EC+4fzIb7WkpU6WfKr1PDPIrpKlBUkhx2CA4p GytYafLAYIr6xocsGJnQRwjmWBVx8xOfFp0AaKXqKuSJ5gWQKPy8CBWPzG6Q8hWPLbFRfpyjxRXi Dx4KkjrtVKWmepDOTclzhwRLIgRaPOlVDdQycIMHM0LjOnJVlzDVJ0Jd8rIGGepWxB9Jgh38GXG8 LCtpavTVgZoaFc3XLUZMbyyGJ7JvpV2iVc4RNQ1tAiMU2bVbGpfyhKNvaskHUL27HL/DMi67DPRn XXY1oc4Ijps3ZN6E3Z5GoWsEzqKqgZLJRiZCAg1iYIf0PZdrvVKmEJORcB5qWRNejWJi/5rNywns myTPwBugG8HzquihL6WLxf9PaiyXJd/2nG/hbKNmqu7YRQXdFMQGZarKR6oeu+j2qkjONbaWc317 WYfuqr2pKRrRlUtdfdL9NgT0ZACxPooAAvU2Drg3jyHkVg3zVQuCWbNL19dCkY48Qxbkp6huTVO9 CdWwzo/NWeqAl7NugRNgjEMS85vXk2IsCwSB3XvCFSQUb/JQW0AShKjfQQemQDZbMIUr4udK3yf9 09hSXzK3LRaQ1cKantlgrYb5KtYEGIs1eTtK09SFNy7j7ZjzLpwB9c9lT34R3sZcnsYtzKmJDdY0 xFcxJqBYjGla5NW2DoytWLY1nHlXrYb53+PNumdg3Hu2vtDBAN/5msloqi9Da1YxJMhi9nQ9Os1T 2PnEfW5QJ95Ggt3D3fqGCgrGGg2C+fxARVf1bXGEgJ/oyAPj/aGFQ+5J7h1yc4aF5C/kQKa+BG8G uNj6fT+8zQ/QcDdSFQC5aRV2rrbdpw8k6H/PimS0JAvMrdQdHrwKNC/BQO6Xqkh9RMjtJJ/DBo51 POvz3lt+bjnwkM8V4hZyMJX4w4o3M3/cm38okkrs3PLJ2rllW6CnD8m5JDX87u7ib2IR+KhTiBjx vCHnu7iYKLr1a3ia5vh/73ilPFxxdJdGexViI2mo2X+UMFazYFCyEIC3YmJhENWZ5osU04OWBZTr MpMqKq4gEnGnENyEobqlbCwxoVu3ZD9qPmqydnShRPwld5jQlJ0JkNqCFECAz2pQ20vC/cKcc+CC q3lZuDdG9VYUqcMfLMe7J0G6M+Rw7vJg0YWENtw2fSYs4/N6aHjZ+Q9QSwMEFAAAAAgA7rNOLeJE C+vyEgAAkHUAACIAbgBYbWxEb2N1bWVudC9uZXdYbWxEb2N1bWVudFRlc3RzLmNzU0RZAJgAAAAA CAA1aKBMY2RgaRBhYGBQYYAAByBmZAIzWRWAhAKQzcgK4YsCicrHf4JDJPk0b7/mCQCpY2KIYGAG S6sw/GeUx6n2BViRCEQNI0SNEJiSgIih2QkAVVQNAAcvx6o9QMeqPUDHqj3tPWtz27aWn+1fgaoz KymVqcjt7tw4tlPHsff6bmJnYmXbTtK5Q4uwxYYiVBKM7XTy3/ccPAiQAilSllNnJ5mJTJHAeeM8 QAAaDjeHQ3J+m3I6836dRfj/BZtkMxrzMU15Co+xxUHGpyxJd/CakH/5KYvJi9CfsTggu3/g15/D +A/6gYcR81hytS8b/k/iR+SYJpMp2f0A1/++xOufp4zP/DDyJmy2rxD0Dvtk+/Hj7SLsgQUBG25m aRhfKXqfFr55hyyK6ISHLE5LT4Cn0p2Ts9KNMb3hTzX407dxyL3jxJ/Ra5Z8gPsxXKZzf0LJKxYz IRjPAN/8a3Njnl1E4YRMIj9NSVmIZIfg30M/pZsb0Fi3XmjX60PTC2hGeh0XpgX1EI6fWchpp0/+ +lwHOuUJMoesGCzyG3TEnkn40efU7koCdfHUen6QJP7tyzDlhH6ER+cCbkr2SEyvzcNe/ykCBdWO pxRQHWHbR2RGwZCClKTZfM4STviUCtmIx6csoI+IpDeM4VmYksswop4E9IoBTnaJfWbET6jET6Z+ HEQ0gaYsEfCAAYR0CA+uaCAg/1O2kXACGtEr4MSzmPrIwkDSKPk5CAItMYHlFAQ1cEE+SIB32gdQ qNgN1YdFwWugEKjbIz3qneVfvwMxZVHUJ8+IddtD8KCUzm7MYrrfeWqBAqnaoE7zrwVQ+W0nKFtR HrBGevKLd8ySmc/B2v56/HlA/hrhxzZ+/IgfP33uDGz2qXcgBpg3ZrI/GCzeRZl4ZxmnCQhoYJgf GOL7fSSkYGdG5JZMe2cXf8AoJimNA5o0kXhRacCK1R7Jb4RY8LJG1HCnDe6jmwmdo2RXIIJPE3Yt xp4FpROwuMvJRHQTg+KjH2XU6yyj6CROacLXpgcNrokwZFvovlbcDTWRN86FuF5NhAK+0AR4H3Sp y3Xxhs7Yx7WpQkFrIgzRdH2K0ODaoL4nNSRCCNVqYBxw0YBAoyQJA0XdOeVv5+DrNAYdFVXMswNm z4ImI7GAIMJ/QoFfJB7/j2/nFL3q0WzOb8FH+rPUwqC4JDF8iDi6wZNbIh5t4D3ArInwDFyI5xAQ BsR8Cmo2No4h2wIZHN3MJXt+DIH6SnQ3MuKMXKBoQHqxksrGZzLxOWRvvYXmOmtoSFjH52AVFxAj Ok3oI6fw8A2FdJHGE9qQRnefuxDa6Tw0MSqrfehCNGQ+QBHGPOS3iebxbxHlUhdxEkPADgPlB9BZ rME7WNC8ozg4kkpq5y8gzTu7fIPOt6W+HB1baq5MvtDjV0r9V0v6KVQVXynh3EcQD4B4LIrPXpzt EJLFmm5EG0Xs2r+IADYSvNmCOUxB6CSCNMLN4kGK6efRn5kfpUt6Yi2nnzZJZn6ZhpOpSGBO0rcp sFHnp4DzU0YmLIbiNptwKNjnMvXB2l0nUYP86jjxrwTfm22EcfjiYHwAkcfH8HOBH5OOSwyqBhYZ 2ID0EMbhC5/753IaqY/4+t7/YuEkJzOaU8BmkpGVaJCd74A+n/mBLzU0YHwClD17rgiVXkKcW6sP Gb2Yk7nwJx/EBA0T80/kekpjEvJuSsLZXAYVGnjQsbVLzMPlItkC2gLhpW53ENrrhE1oihOAJ8o6 xXhYRYNOUHcg7Ty8isPLcOLHHEYbl1ORq5HmBHUH0nDidDVKsOcdEN9VEGvhvuw8lxLSgboyhaZ7 7zsj7/F7TI7l+DNQSuS0KibXkCN2LhlrlBKvMXGvpqdUjhnaloW1A91tMaItwzgJIAakMgY4JFGN U8Wd1vikv2+HSgeYtsj0zVbYTGBezA5MMqNCAWQDhQAvIgZO3gQkm4MtRBEMxYHqGXrUIwnNUoqp EE2iW/ECBkx5LBIh6B8z/uz+gpCRyKXKNcqSseJOnWx0qrK6SjDpW0ktMsy3RWuV6M2HlSkZy9ju T0GL9XqR4CUKWkgs2gpqnkfz0ETzVoqqSC3aEpKa2H2dR69WhFQkEm0J4RC6W+GVWUJbNCsyWcdZ RTTVI0mZtxVG7YQzJ7LUXBKEyajqrobWIl85fGXBnQs/wT9Tzuc7wyHcHBYzdKZQ0xyTI6eQsPR8 9msYKeGNM/mQ2HTDlwycMbpaZ1ubJNPnVL8If/vmpJKYnSIehcK0PReZCtWuJJfRwXwOceJwGkaB 4bhRT5dC6hWNmWBZyzkPJ/GEJQm+dWAZn2dcVKcUuxiUamoz/65ff1bjXnjVaedqJdPRFqXiPFE5 gpRFjtMCRn7I30VYd+1336SHXtkrU9G3CvMAczefE3DeUJbrd+2GxwLygrZq7Vy++91QPCyOCs2k NFDZuEq1RbQKpNOAd7/b2gJ4W1v7nWpL8U7i2KhNkyiTbyAUCPrUsYCD7dlv0g9ZzH0ICsWXzgMi LwZEkvAJSBiACTHxoaXhpPZTc2odSsMXXC69EciDyUSIOiAXt4s6beivVlAjvZPW6ENWkoO4zeGj TT2zd6Jf+MJgEpmPGpmyPQbEXh+KqKB4H77A7an/kUIhhemSnSmRVgO1lVILzCBxUq5J52nVmLdC UnX/gl7caqnQCvRdVMeXtPle58/spk46f2bwvPaxfr4C+6I3/pEfQgCPhs0iC764X19owXpstdgC Pb8Fl/X6LaycS44r+RZdHlp0WYuWXOFFKuXkEiffaD7pBgNKzrgJ0ecrURLKswQIg/KbJSEQ5Uck 5WrZ47oHupnTe9rMuT4gjeO8KP6Vc6PV+hdToMUZUOqc+dSjoCDawlpVtQy2ZiFgr78wf1peQdCW VWU+v9FUzsL45CLkwAXYBQ5hkamI5cSYrwD9cjGtKNAnRS4M25dhAuAuKBRIYlWVwlHzEtQjZCzs EkoroAOUDgBSJr3MjPriSWISHzEnDlZJA2HKiR+mGksVeYqcgOEtP74luIrbq1b1GzqPoKTFV3+9 rdGAPB4QK/g71N7+5bAwdJcaBSvfssY7ZI0FbwvIS272y+aMTWXzBTn/fxYu6uVq3nHVS/hB+/Ly RF3OQrMiIF/CXVsELGhVd2uvVd3TsjkNqwuK6+bzofgm4E4Op36qsHGWpskbKEIhSwMcZAgpmtw1 MSDf5y/KrKEksUK4QbQYldCphHFO+er81BYi98FfyUk4OYsZt7kru8eWXNcmcdU1nujWb+gWHYxD /wLjBl6TUbS0lq4YRit5x7xreSAhtIc8kkQg+lqH0p35+zuHUrEEeGxihuAXOUCWsnLC1Wx6ZWHo tbeF6tFXIn1US/q9pTLrGK2lZKYNXwslSQsF9UQ2069enrM8oTHc12c0js1R/Qa1TWth1HtkvR2q wdxm6fa2w08raO31rjoaq9SQumDcxkNfJmymnDZUuinuJbpzobW9cnzNPd/2Skaqn0pWayDWewgl qYESmeUfROGidqw6/UO9axMvXh7pInpuz2bky1BEOZ0vCzO7xRVTBxHW0GFpcUpBxdDkb1Bdjeba Kk7weP/aWqIsKGGajhwg5m4Dp0Ga0yrerpxlWEOtEoZbhZXNXYPxS43FdjxAKFjq2Bu+tWrq2VcK 6bpnybeL9Pubc29iUCL7++bdvxbvvpK62rn32sHzzb/fr39ffTi2YeLeqrO7e3L3RPManae7fLNU VwK/WqGWC6K+Tls8POHLlWn/TbWJpM9vx/4Vrvo8Zfh5Lg5O6pWPyLmZRTAmf+7sRuFF4ie3+7sX jH3Y3+Uhj+j+r69ekuMs3h3Kr7u+OIBq/19sGoMp0d2huiFkujtPwgnd//En78l/7g7ll92hBGcD fU5hBODbM2GQiX/FcgQSjgI6Bgd1GPnx5DbHo1D8VxUG2V+hYWDglJwEVCw9L/Pwhl3g6H2ZBVE2 czLyxIHlOMouLykQcppxjn+r0L6NeDjzOYJeB96hxjfMKRhqjXXk2H8FZpfcgh+i/gxs0voih23h ee8onrAAd2O9HR//wwOzeX4LkZz0wB76RY9YebyG8RIvmQ8j2MbZ15kiWq04pQr5EBdWBHBZKwYC aOret+XuIE25r3wajOYwXzk8weGCq4R/GuQUrDKG3uK2Adcwkn7/eQYDFFyBHE0oruJ9JTB4rJwe LhR4hq1LO9HIs309EhFYnO6csoRP4bFaCX59fe1B5MBD26B1xwFXdjuHjLjU7Up3A+tFoDsoELHJ GdpBHNq6DEWyBg2cgFUvYc66WxjzhEGH3FFYbQAKqQaz4EoKt2u7FvyMfUt/E2OmAoQQTIF1m+2a LjXOy25QC8Ph2QoPZGdS8c8F0XaI9h39bVVRFJkuu9K2DJecnoPniv62R6xkz3KF/TX7QvuMtYfh F80+FWtMt/eWA5IlYb3L3K50mQ6nKd6OH8SB3oCxsHnHvQk4Z7m4GKzYZaGRe8OHkqy1iZcE1vVC 5VFq20MP7NjiVLEa1toq7Fzx5vLuzwoLP9fHcmk6Zs3vHpfxpF7F3Q9rpfXRX2xlcTWr+2aF3y5u zLonxsViGS5XzJRYxkdiJZV6+dSCZy7Xr6zKMKC7N54bGK9Y7F+sIc8pz+ebZAtoAj4y/TNj8Yd1 zSe0EA/SKDcOQDNJBSRqw/uxlYoMFuPOLyGfyiNrT850oBMueUPu4PhW/32r/+67/isNolMGfENT SDeOcfZRGyYMCp5k1DLxf/qpmfOot3NxXNDB+MBxMKSnnuP4lQP1nWj6Dkbr77/rEVmczKt0Fcdh knJBVL6Tmezt6ckwc/KEk3O5krAJ7CUHjgiOXr1UQU+xPBwSFTDeUB/LzXydtjyEU579oGeb5E59 uURTXC7ISy5iB+HgIva+2tqv1mpitpFPlKVTloHnNEuerQXXotNn+UdNeBX64oHXCnJx1aVpMqNp 6l9RsTgdVwvPEIzY8jsGz5EwZjIeYHAWir39+Jx6r2RXQ0e9XWxtKYmaoL5Gs6jJMw7zU0faGIeb mZ877vTEidhsruZ+ckXlTmpppoXjr3I0Fhnmsu/hcv2lA1Sxcg7qiehK2/orVDfMK77STv16aPY2 dgeDtVvaG1c0ZT3WnAggjw6o7Fl7REBD7KUjA1rTkKNvoGdMPfKkLF2nvnHl2l4X0qwuplg3e12R aHWNGVjFUFCEa+eVJZTOExQwsx6UgWCgtNPNyoV0eSK6BIDMaPXr+QZyFQaaZ8TLQx5QOFzi0spv F9B/jSraWl5gabe1mHeL0FmE09BOTS21VJZAydpjw7iqHltvxmAF3sMI0u/USuWWsD2sZNfQkP8I gmi4uWHvAHGBHW3/mIPVr+IOxC6rZrnFhrWHw+6U7+Wqo3XPorVOYs7jgmrlBQH4meWkyl4KykW8 yG5gPKqLFrFZDqKagw0dvPa9sQCwBAuetKbjv4vwFfDWpwWOSUJTjuY2JEvTzi4meiZ3BzmI3F3c 7VQEixtXVS2S19zwr2HwE3HIHMnJwZUpWiookJu6+YoSeTphXhdlalprHbRpo3y2LuLMWVzEOoxr BVor7EP+WImILQ1jHH58wkAnrm0v/at1AqOdAzjzWevSNWR+SRiwLPcUXELMC9SowUxBnHFVH8pk 97n8gRiTb4uehuW2QNQpbCUgq8MzG0VqoS5DILM8s8JCYlBrK9ABe43hm8tqk1ELKVV8PIWweh5e RPLFzabzME77hmleVVwpUxO6Hw3VxXYptSrbWHXUbrHmKNZ8b1hk4qQMiubUprxS9ola4Ytduqlg l6QKUEkhBp6RNa4qmuHvRKGwHLI3D13ClhLV/h0gf4ASBL2T9Rrr+kf8ubLh6MmTJ8NfX0KTwm8v gfsYCXdWmITtjrzHXULVPNZeN+OXW//oEvU+Qr4FF+j2uh3yg8H8A+l0hc8g/miv+3HUlY92plCf 7XW/xxVxwpuYkCOjhDqL1Hsfv+chpzMyyq+238cQk8Sc1pQmdADCxQWOcvpe6Akd06eie3L6YHTB o9xx5V43ptdwvTgT19OGgY+t6Zspu6Igh+zKFzPP4qvxh7p8QBk0slbii19TK5RLuMdKFzKCBkkd 0mHsoQcoCiWPuNlBUWNYUCrpy/k/V+j53sASh8l6p+fG3Yh3oRJUXOfl3GBOzwG1RQUCqa+S3XBE /i0cp/LEhWkaEJMwonoROSNQM6kI6OKo4wZW6iJPabVkG7SKVkVV2SRqabQnEUzco14TdeWvakDc lpRpwawWTaop2IDSuQnitFCzmRMTUUziLQLJTzDdUfcJeYe/mDgcPR6OfvqdqFdWxdNOyTVIS2w+ XDhy1TX3+uLscPzb6yO5tPr12+cvTw5JN8hms9suebf73dHp+GT8Gzk+O4MruYR3HzJikdn9h7z7 VCd6egLUbXoNhn7fcbJrSZJFXlGYkoiOHlErwQC2/u0yV1OEEKsKcfpSFbMxamyl/Dai6ZRSTqSj x0VUN2kkAkYpX3RXfvMQf/qvsgxaSboDcgmyWDoGnBjz0VRkD+7Mw0Yjyw0VKzftWI2UJFR85o2T cNYrHgWHsxhLopnbAPMT6EtO0MwtvRv93swPjuVpuJ26KOyyJ3NOrZyD+7z5efP/AFBLAwQUAAAA CADus04tAKT+BvYDAAD8DwAAHABuAFhtbERvY3VtZW50L1htbERvY3VtZW50LmRpZmZTRFkAmAAA AAAIADVooExjZGBpEGFgYFBhgAAHIGZkAjNZFYCEApDNyArhiwKJysd/gkMk+TRvv+YJAKljYohg YAZLqzD8Z5THqfYFWJEIRA0jRI0QmJKAiKHZCQBVVA0ABy/Hqj0/x6o9P8eqPa1XbW/bNhD+LP+K Q75UhmRacpymcTAsQZJhBra0aNKtQFEMjETFwmRSkKikweD/PpKi3iW7NmwElkXeHZ/jPQ95mUwm 8HUd3TIvWxPKkZcaM8eZTVxn4s5hNls4p4uz98gpPmA5F44zsiwLKHnd6umKv67n1RVMTi/ObNcF Sz3P4epqBIbx7U9G2ePH24/f5VucPUWhBy9hwjMcSYj3zCewXMcs4eqnWYxR8WXDE2MR+ITEY+n+ 38gyDGM6hd/ZK3AGCUlZ9EKEQYCziAPmPAmfMk7gBUcZSX+VTkb6GnJvZcqASIZ+fIuJCifiyW/D wykpsMhJdF3EWYwm0sAQk+UYYPhFoQOcQn3iUhsnhGcJBb4KU3STEMxJaWJi9CkhQfjDBoz+YB6O 7vGayBf5TGPskS+fl+NLlWeRb3v9NPH+EZkOoujz8VOufXph6ZAluOK9BrEY6gUqayKLvNhZksJB A0J/yVEBqwiv3suweiu1cTG8GcFA4W5urx+vF/lkTx1ubjHHD8TjIaM5H9RyIg3J37nr2vNTsObu uX021/wVH75KBN2ELuRSdz88Eiv/k0Ij4GFKGYcnAqEiMvHRiYg5BLLw+y3Bz/JZI1l7CvygWbK2 gTkuWBcGZqkTRZ182AiYcBT0L3UFIVXEQTerMPLlWDquceYgCNq9haECYfgBuo5jQn21qKnCVao3 qZ2LvAq1H+5KKYcstSnwbtq8Cy711KapbTWxo7zyZfGTFJK2+9LoLiIt9ugRqaXm4aAnLrumQlnN 6uoJeSLUT4PWSdA+BQ6goIxSr2TJlJTvWb9O5mY1Mpa70Gd5pMStToa1e0L8KjItRyvOVpQtD09P Idl5dqo9eiC8DKo2prH4uL1tMlZn5zYd4Xaw/VTtKu3tXbyO5FI+pDk1k49Np105UL+piOm0Jrt7 xgWMfJ74pQKhPD8HIlIe8rfjBTwkmtWv/lq61pYzBsyTZRSRZ9Ft1bosQekIRGmhJ97J1jV1Csda UoXbtmL/ctv2C3JrIapvsnNFroPc+XfQKlcBP5OAJIR6ssvk8rQtIqGhs7bpthjs9FqGuukUZ0bJ +J1JiN2rdo0FsAMyrHFIozdxbXg4E7D783wVF0HdKZSoCawJFoZroi4aS1By/6yGFXnPKDmWdIQP lkbHEU+O7BgclpGG6Vuh3o/A/ST8lDCPpGlIn5c05Unm5aGhuNp65yEOm71Ar5VugN/P7A+i/z2/ sF2n7H87OP5ehTy/A4c77cqm2WcPs0W2nsSLcHJ4nYXkl+Az+o7Dv1Q4rfL/EgUQoRiOEBooU3tp HawnLXWJDbva8CDuX/qM7tYxf7OhkfoBFNCNQLeL3Ob7P1BLAwQUAAAACADus04tnPOZr7cDAAAy CgAAIQBuAFhtbERvY3VtZW50L1htbERvY3VtZW50VGVzdHMuZGlmZlNEWQCYAAAAAAgANWigTGNk YGkQYWBgUGGAAAcgZmQCM1kVgIQCkM3ICuGLAonKx3+CQyT5NG+/5gkAqWNiiGBgBkurMPxnlMep 9gVYkQhEDSNEjRCYkoCIodkJAFVUDQAHL8eqPT/Hqj0/x6o9nVZtb9pIEP4Mv2LiSmeQwS+UqgUM TY6QE1JEoobetSLo5NhDsOq3865D0lP+e2fXGJOGJlaRsJfdmWdmn312hna7DV/C4DR2sxAjPkfG me6yWsc0O23LbFtd6HT65tv+u/e6WXxAM3umWdc0DSLcVHA3+1bvmfvxMbTfd7utd6DJVxeOj+tQ q9UivOdX/k3gR7cwhCj2UJ+VUwNpc8IYpnyWBQE0lMl9gi5HD1IM4zt6Cx+VgQACtkXiMdwgROSh Ky3Yi9GUiI91ra7VaoYB0zCJCZogxESSkZELd7HvgdheuQqNpjD4XzxqRIKciwY5To3xVES9pwjf Pn+a0kaUNedJ3zA2m42+eavH6a1h9Xo948s5mSiDJ15hYAkP+yON4A5T5sfRULV0UwWM3Ngjo6Ga 8VX7gwofR/YqjoVPxPoy3lBVQCtDa6CoI/vGScGxhuqdpeZL/XWKq6H6hpzl8veRfbQYn57MTxau 53AHGJFKcfXr6Jr7HEOwdqPOdbRcjs7SOIQ1ptgilsMkQOCCcXlitiER6ZnSk2KMtlv0tlrRz2PH I9oaYrPNQcFiISWhLBoLAeBmX6KNrW2+vkNR7HV8i0RFduuAQSHlT6UEngQocQUPQ9hlUcBul/Uz P2V8vPYDDxwGpV9xriSQE06ndJNxzPPIUxS5lNpoUBT9L+Q7UzmpCMZJfMXJNFvA0wy3OeaSnvyX OQFrKG9KMF2g6LMr2qvrBDMnRMIosKJytjLO7IqC7+UhUAQASxwXRV5Vgf52gkwmI0Qkk5EzzT2y pKBeIarkfG9YkRuJL1KootnDKW5P+Geh4K/y3Wb2TB8v5lnoqzg+wqEX6pUOrnAWvO/RjU8k9lxe lXE9xCRP6ruE3TuQIr8dWRGx+QCfcEX3PnKxXywALETVNyzTsLpLGKfocMytd8awIc6imIOsFiI0 enpdM4xDdUGxj04vxvOvlxMqK4zD5ec/z6djUL0sDB9UWNhHk9l8Ov8KZxcXNAJVFrLlyE7jmI/+ yGcHtiF/ykIg4xyWYYV6sEN4gc+n2xWU5mkoxRX7PRDa2b+HtXuZxi4yJprGNKLukUn5Hy60iugT I9lT2ow/BMjWiBzyNkBL+j0LZDvJy3VZOssgezEg8YnJxq+Wm7/FcQtWxMfrF+JgyN3derpBmkn8 avfsMOwpFZai4pZE5bBiTZ+nftgobltxMnNqha82vMNiFKQK9+ZPxVE+hQVbWMuK9VHgSB2+0KsP S+ufNZVN2RLEzCP9SaLvY/0HUEsBAhYLFAAAAAgA7rNOLRTG8I76DwAAAUsAAB0AEQAAAAAAAQAg ALaBAAAAAFhtbERvY3VtZW50L25ld1htbERvY3VtZW50LmNzU0QEAJgAAABVVAUABy/Hqj1QSwEC FgsUAAAACADus04t4kQL6/ISAACQdQAAIgARAAAAAAABACAAtoGjEAAAWG1sRG9jdW1lbnQvbmV3 WG1sRG9jdW1lbnRUZXN0cy5jc1NEBACYAAAAVVQFAAcvx6o9UEsBAhYLFAAAAAgA7rNOLQCk/gb2 AwAA/A8AABwAEQAAAAAAAQAgALaBQyQAAFhtbERvY3VtZW50L1htbERvY3VtZW50LmRpZmZTRAQA mAAAAFVUBQAHL8eqPVBLAQIWCxQAAAAIAO6zTi2c85mvtwMAADIKAAAhABEAAAAAAAEAIAC2geEo AABYbWxEb2N1bWVudC9YbWxEb2N1bWVudFRlc3RzLmRpZmZTRAQAmAAAAFVUBQAHL8eqPVBLBQYA AAAABAAEAHgBAABFLQAAAAA= --------_3DAAC76752D40AFD1700_MULTIPART_MIXED_-- From thaynes@openlinksw.com (Tim Haynes) Mon Oct 14 14:45:57 2002 From: thaynes@openlinksw.com (Tim Haynes) (Tim Haynes) Date: Mon, 14 Oct 2002 14:45:57 +0100 Subject: [Mono-list] Patch for bugzilla 31265, plus some pthreads In-Reply-To: <1034589715.5380.119.camel@hagbard.apathetic.discordia.org.uk> (Dick Porter's message of "14 Oct 2002 11:01:55 +0100") References: <87zntlhwri.fsf@purple.uknet.private> <1034351698.17088.105.camel@hagbard.apathetic.discordia.org.uk> <871y6tiex4.fsf@purple.uknet.private> <1034589715.5380.119.camel@hagbard.apathetic.discordia.org.uk> Message-ID: <87elatgmlm.fsf@purple.uknet.private> Dick Porter writes: > OK. You still need to answer the second part though :) It's needed on non-win32 because of the way the CreateThread() / GetCurrentThread() are implemented in the io-layer - using wapi_handle_new & co. The port to Win32 would consist of calling GetCurrentThread() instead of AttachThread(), as the wapi_handle_new equvalent is allready done by the Win32 kernel. Cheers, ~Tim -- Product Development Consultant OpenLink Software Tel: +44 (0) 20 8681 7701 Web: Universal Data Access & Data Integration Technology Providers From ginga@kit.hi-ho.ne.jp Mon Oct 14 15:31:15 2002 From: ginga@kit.hi-ho.ne.jp (ginga(A.E.)) Date: Mon, 14 Oct 2002 23:31:15 +0900 Subject: [Mono-list] Re: More help needed. In-Reply-To: <20021014222416.528B.GINGA@kit.hi-ho.ne.jp> References: <1034371147.14578.347.camel@erandi.boston.ximian.com> <20021014222416.528B.GINGA@kit.hi-ho.ne.jp> Message-ID: <20021014232658.5298.GINGA@kit.hi-ho.ne.jp> Oh sorry, I've received the error mail (size over) like this: > Sorry, your message was not sent out to 'mono-list' because it is > too large. The maximum message size is 50k, and your > message was 75k long. So I didn't think that it was to be delivered. ____________________ A.Enomoto From glennpierce@connectfree.co.uk Mon Oct 14 17:16:05 2002 From: glennpierce@connectfree.co.uk (Glenn Pierce) Date: 14 Oct 2002 16:16:05 +0000 Subject: [Mono-list] mono build error ? Message-ID: <1034612176.13968.12.camel@spiderbaby> --=-nmZvOxukvkgHJeu4ecCG Content-Type: text/plain Content-Transfer-Encoding: 7bit Hi has anyone seen this error. Recently mono builds for me have been failing with: Making all in monoburg make[3]: Entering directory `/usr/local/src/mono-13-Oct-02/mono/mono/monoburg' bison ./monoburg.y -o parser.c ./monoburg.y:52.2-86: type clash (`' `text') on default action make[3]: *** [parser.c] Error 1 make[3]: Leaving directory `/usr/local/src/mono-13-Oct-02/mono/mono/monoburg' make[2]: *** [all-recursive] Error 1 make[2]: Leaving directory `/usr/local/src/mono-13-Oct-02/mono/mono' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/usr/local/src/mono-13-Oct-02/mono' make: *** [all-recursive-am] Error 2 This is running with debian unstable any ideas ? thanks _____________________________ --=-nmZvOxukvkgHJeu4ecCG Content-Type: text/html; charset=utf-8
Hi has anyone seen this error. Recently mono builds for me have been failing with:

Making all in monoburg
make[3]: Entering directory `/usr/local/src/mono-13-Oct-02/mono/mono/monoburg'
bison ./monoburg.y -o parser.c
./monoburg.y:52.2-86: type clash (`' `text') on default action
make[3]: *** [parser.c] Error 1
make[3]: Leaving directory `/usr/local/src/mono-13-Oct-02/mono/mono/monoburg'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/usr/local/src/mono-13-Oct-02/mono/mono'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/usr/local/src/mono-13-Oct-02/mono'
make: *** [all-recursive-am] Error 2

This is running with debian unstable

any ideas ?

thanks

_____________________________
--=-nmZvOxukvkgHJeu4ecCG-- From Neale.Ferguson@SoftwareAG-USA.com Mon Oct 14 17:07:14 2002 From: Neale.Ferguson@SoftwareAG-USA.com (Ferguson, Neale) Date: Mon, 14 Oct 2002 12:07:14 -0400 Subject: [Mono-list] Odbc problems with mcs Message-ID: <9A4FC925410C024792B85198DF1E97E403F45A44@usmsg03.sagus.com> Just updated my tree from CVS and attempted a rebuild of mcs. I got the following: System.Data.Odbc/OdbcCommand.cs(30) error CS0246: Cannot find type `OdbcTransaction' System.Data.Odbc/OdbcCommand.cs(67) error CS0246: Cannot find type `OdbcTransaction' System.Data.Odbc/OdbcCommand.cs(137) error CS0246: Cannot find type `OdbcTransaction' System.Data.Odbc/OdbcConnection.cs(23) error CS0246: Cannot find type `OdbcTransaction' System.Data.Odbc/OdbcConnection.cs(116) error CS0246: Cannot find type `OdbcTransaction' System.Data.Odbc/OdbcConnection.cs(126) error CS0246: Cannot find type `OdbcTransaction' System.Data.Odbc/OdbcDataReader.cs(25) error CS0246: Cannot find type `OdbcColumn' System.Data.Odbc/OdbcDataReader.cs(113) error CS0246: Cannot find type `OdbcColumn' Neale From rodrigo@ximian.com Mon Oct 14 17:30:57 2002 From: rodrigo@ximian.com (Rodrigo Moya) Date: 14 Oct 2002 18:30:57 +0200 Subject: [Mono-list] Odbc problems with mcs In-Reply-To: <9A4FC925410C024792B85198DF1E97E403F45A44@usmsg03.sagus.com> References: <9A4FC925410C024792B85198DF1E97E403F45A44@usmsg03.sagus.com> Message-ID: <1034613057.2367.2.camel@localhost> On Mon, 2002-10-14 at 18:07, Ferguson, Neale wrote: > Just updated my tree from CVS and attempted a rebuild of mcs. I got the > following: > > System.Data.Odbc/OdbcCommand.cs(30) error CS0246: Cannot find type > `OdbcTransaction' > System.Data.Odbc/OdbcCommand.cs(67) error CS0246: Cannot find type > `OdbcTransaction' > System.Data.Odbc/OdbcCommand.cs(137) error CS0246: Cannot find type > `OdbcTransaction' > System.Data.Odbc/OdbcConnection.cs(23) error CS0246: Cannot find type > `OdbcTransaction' > System.Data.Odbc/OdbcConnection.cs(116) error CS0246: Cannot find type > `OdbcTransaction' > System.Data.Odbc/OdbcConnection.cs(126) error CS0246: Cannot find type > `OdbcTransaction' > System.Data.Odbc/OdbcDataReader.cs(25) error CS0246: Cannot find type > `OdbcColumn' > System.Data.Odbc/OdbcDataReader.cs(113) error CS0246: Cannot find type > `OdbcColumn' > yes, there were some new files missing in the list file. It's now fixed, so please update and try again. cheers -- Rodrigo Moya From jason@379.com Mon Oct 14 17:36:02 2002 From: jason@379.com (J. Perkins) Date: 14 Oct 2002 12:36:02 -0400 Subject: [Mono-list] StreamWriter EOL bug in 0.16 Message-ID: <1034613362.927.8.camel@imperius.um.us.sbphrd.com> I didn't see this in bugzilla, but wanted to confirm the problem before I logged the bug. StreamWrite.WriteLine() seems to be adding spurious garbage and the beginning and end of lines now. This wasn't a problem in 0.15. The bit of code below will reproduce the problem. ---- using System; using System.IO; namespace MonoBugs { class Example { public static void Main() { StreamWriter sw = new StreamWriter("example.txt"); sw.WriteLine("Line 1"); sw.WriteLine("Line 2"); sw.Close(); } } } ---- Viewed in vi, it ends up like this: Line 1 Line2 This is from the Mono 0.16 RPM, tried on RH7.3 and RH8.0. Again, I didn't see this problem in 0.15. I am unable to build from sources (automake errors, always) to see if the problem exists in the very latest code. Jason 379 From petehoch@mac.com Mon Oct 14 17:56:34 2002 From: petehoch@mac.com (Pete Hoch) Date: Mon, 14 Oct 2002 12:56:34 -0400 Subject: [Mono-list] Will mono be on OS X? Message-ID: Hi, I was wondering if there is currently anyone working on getting mono to work under Mac OS X? If not are you interested in someone doing this? Thanks, Pete From miguel@ximian.com Mon Oct 14 08:32:57 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 14 Oct 2002 03:32:57 -0400 Subject: [Mono-list] Help needed with XSLT transformations (documentation browser) In-Reply-To: <1034580160.4348.71.camel@emma> References: <1034302508.14577.313.camel@erandi.boston.ximian.com> <1034423173.1574.32.camel@emma> <1034452509.4349.26.camel@emma> <1034463576.14577.444.camel@erandi.boston.ximian.com> <1034580160.4348.71.camel@emma> Message-ID: <1034580777.14577.472.camel@erandi.boston.ximian.com> Hello! > I played around with mscorlib.xml today. Enclosed are some files to > generate a really raw set of index pages. Uh, this is a bit of a problem. mscorlib.xml is what we call the "reference" file, and it is just a mechanism to tell whether we are complete or not in our documentation work. The real file used to process data are the smaller chunks, similar to Type.xml that was attached before. > Where did mscorlib.xml come from? Can we add class summaries to it? > Right now, if I want to create a page that lists classes and their > summaries This should really come from the multiple xml source files. Summary pages will be automatically generated from the browser tool from these smaller chunk files. Miguel From Neale.Ferguson@SoftwareAG-USA.com Mon Oct 14 19:10:51 2002 From: Neale.Ferguson@SoftwareAG-USA.com (Ferguson, Neale) Date: Mon, 14 Oct 2002 14:10:51 -0400 Subject: [Mono-list] Odbc problems with mcs Message-ID: <9A4FC925410C024792B85198DF1E97E403F45A4B@usmsg03.sagus.com> Hmmm.. just did a CVS update and it failed again. So I cleared out everything and did a clean get on mcs and still get the error. MONO_PATH=../../class/lib:/opt/mono mono ../../mcs/mcs.exe --target library --noconfig -o ../../class/lib/System.Data.dll -r corlib -r System -r System.Xml @.response System.Data.Odbc/OdbcCommand.cs(30) error CS0246: Cannot find type `OdbcTransaction' System.Data.Odbc/OdbcCommand.cs(67) error CS0246: Cannot find type `OdbcTransaction' System.Data.Odbc/OdbcCommand.cs(137) error CS0246: Cannot find type `OdbcTransaction' System.Data.Odbc/OdbcConnection.cs(23) error CS0246: Cannot find type `OdbcTransaction' System.Data.Odbc/OdbcConnection.cs(116) error CS0246: Cannot find type `OdbcTransaction' System.Data.Odbc/OdbcConnection.cs(126) error CS0246: Cannot find type `OdbcTransaction' System.Data.Odbc/OdbcDataReader.cs(25) error CS0246: Cannot find type `OdbcColumn' System.Data.Odbc/OdbcDataReader.cs(113) error CS0246: Cannot find type `OdbcColumn' From miguel@ximian.com Mon Oct 14 19:15:20 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 14 Oct 2002 14:15:20 -0400 Subject: [Mono-list] Help needed with XSLT transformations (documentation browser) In-Reply-To: <1034588843.4348.245.camel@emma> References: <1034302508.14577.313.camel@erandi.boston.ximian.com> <1034423173.1574.32.camel@emma> <1034452509.4349.26.camel@emma> <1034463576.14577.444.camel@erandi.boston.ximian.com> <1034588843.4348.245.camel@emma> Message-ID: <1034619320.14578.476.camel@erandi.boston.ximian.com> Hello! > Where did the mscorlib.xml file come from? Is there any chance we can > add the class summaries to it? It will be a disaster if I need to open > each individual class.xml file and read the summaries when generating > index pages. You do not need to generate the Index pages, the documentation browser will do this. Each one of the small xml files contains a single type fully documented. The only summaries that are required to be generated are summaries for methods/properties/fields in that particular type. Everything else is not really possible, since it will probably be the union of multiple assemblies (for example, there are classes that are System.Data providers but live in the System.Xml assembly). This kind of summary will be generated on the flight. I will try your attached files in a couple of hours as I have some things to finish here, I just wanted to reply to this urgent matter. Miguel. From jason@379.com Mon Oct 14 19:13:35 2002 From: jason@379.com (J. Perkins) Date: 14 Oct 2002 14:13:35 -0400 Subject: [Mono-list] Adding new search path for assemblies? Message-ID: <1034619216.13350.3.camel@imperius.um.us.sbphrd.com> Is there a way to specify an additional search path for assemblies? Something that works LD_LIBRARY_PATH? Thanks! Jason 379 From webmaster@golohaas.de Mon Oct 14 23:09:12 2002 From: webmaster@golohaas.de (Golo Haas) Date: Mon, 14 Oct 2002 22:09:12 +0000 Subject: [Mono-list] RPMs for Gtk# Message-ID: <3DAB4088.5010200@golohaas.de> Hi there, are there RPMs for Gtk# available? I've been looking for it on SourceForge and googled for it, too, but I didn't find anything. Thanks in advance, Golo From miguel@ximian.com Mon Oct 14 21:18:01 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 14 Oct 2002 16:18:01 -0400 Subject: [Mono-list] RPMs for Gtk# In-Reply-To: <3DAB4088.5010200@golohaas.de> References: <3DAB4088.5010200@golohaas.de> Message-ID: <1034626681.14577.481.camel@erandi.boston.ximian.com> Hello! > are there RPMs for Gtk# available? I've been looking for it on > SourceForge and googled for it, too, but I didn't find anything. At least from my personal perspective perspective I wont be shipping RPMs of gtk# and the various gtk#-based applications until Ximian ships packages for the foundation out (gnome2-based libraries). Remember that a feature-complete gtk# would need plenty of substrate libraries to be available on the target system, and I rather wait for other people (Ximian's desktop team ;-) to do the heavy lifting ;-) From miguel@ximian.com Mon Oct 14 21:19:12 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 14 Oct 2002 16:19:12 -0400 Subject: [Mono-list] Will mono be on OS X? In-Reply-To: References: Message-ID: <1034626752.14578.483.camel@erandi.boston.ximian.com> Hello! > I was wondering if there is currently anyone working on getting mono to > work under Mac OS X? If not are you interested in someone doing this? A few people have tried to get it running. There are some pending patches that should get Mono closer to functional in MacOS X, but it is not a priority right now. miguel From miguel@ximian.com Mon Oct 14 21:20:06 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 14 Oct 2002 16:20:06 -0400 Subject: [Mono-list] StreamWriter EOL bug in 0.16 In-Reply-To: <1034613362.927.8.camel@imperius.um.us.sbphrd.com> References: <1034613362.927.8.camel@imperius.um.us.sbphrd.com> Message-ID: <1034626805.14578.485.camel@erandi.boston.ximian.com> hello! > I didn't see this in bugzilla, but wanted to confirm the problem before > I logged the bug. StreamWrite.WriteLine() seems to be adding spurious > garbage and the beginning and end of lines now. This wasn't a problem in > 0.15. The bit of code below will reproduce the problem. This sounds like a bug that I might have introduced when I changed the default encodings. Can you try tracking down the problem? miguel://lists.ximian.com/mailman/listinfo/mono-list > From miguel@ximian.com Mon Oct 14 21:22:00 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 14 Oct 2002 16:22:00 -0400 Subject: [Mono-list] Re: [Gtk-sharp-list] ThreadNotify (A bug in Queue.Dequeue method) In-Reply-To: <1034390745.579.15.camel@hal> References: <1034231277.1305.16.camel@rain.vlad1.com> <1034275199.14577.97.camel@erandi.boston.ximian.com> <1034281481.1162.6.camel@rain.vlad1.com> <1034305925.547.9.camel@hal> <1034390745.579.15.camel@hal> Message-ID: <1034626920.14577.489.camel@erandi.boston.ximian.com> Hello! > The last problem I showed here is not ThreadNotify's fault. Seems to be > a bug in Queue.Dequeue. > If you look at the output of the test, you will notice it isn't accurate > to the data in the queue when you use Dequeue, but the commented part > with foreach works fine. This sounds like a case for someone to write some regression tests for Queue. Pablo, would you be interested in that? Miguel. From miguel@ximian.com Mon Oct 14 21:21:18 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 14 Oct 2002 16:21:18 -0400 Subject: [Mono-list] Mono 0.16 Windows Installer Permission? In-Reply-To: <000001c27193$645f3ed0$0301a8c0@gao2001> References: <000001c27193$645f3ed0$0301a8c0@gao2001> Message-ID: <1034626878.14577.487.camel@erandi.boston.ximian.com> Hello! > The Windows installer for Mono 0.16, > http://go-mono.org/archive/mono-0.16-stable.exe > > generated this: > > Forbidden > You don't have permission to access /archive/mono-0.16-stable.exe on > this server. Sorry about that, it is now fixed. Miguel From miguel@ximian.com Mon Oct 14 21:23:06 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 14 Oct 2002 16:23:06 -0400 Subject: [Mono-list] ICryptoTransform In-Reply-To: <008601c271a0$67f6aa80$0301a8c0@einstein> References: <008601c271a0$67f6aa80$0301a8c0@einstein> Message-ID: <1034626986.14577.491.camel@erandi.boston.ximian.com> Hello! > The current definition of ICryptoTransform isn't correct as it doesn't > inherit from IDisposable. I've not commited the modification because it will > break many classes unless they are all patched at the same time. The > affected classes are: Thanks a lot for going through the codebase and fixing those problems Sebastien. Miguel. From miguel@ximian.com Mon Oct 14 21:24:51 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 14 Oct 2002 16:24:51 -0400 Subject: [Mono-list] ODBC.NET Provider on Windows In-Reply-To: References: Message-ID: <1034627090.14578.494.camel@erandi.boston.ximian.com> Hello! > Do we have a #define to force conditional compilation on Linux/Windows? I'd > like to setup the libodbc to point at odbc32 on windows. Or is there a > better way? You should make it point to the library name that is used on Windows, and we will ship a "re-mapping" definition with Mono (just let us know what the mapping should look like). Mono allows us to remap library names to different names (see the mono.config(5) man page for details) because in practice we will need to do this. Miguel From Neale.Ferguson@SoftwareAG-USA.com Mon Oct 14 21:24:15 2002 From: Neale.Ferguson@SoftwareAG-USA.com (Ferguson, Neale) Date: Mon, 14 Oct 2002 14:24:15 -0600 Subject: [Mono-list] Odbc problems with mcs Message-ID: <9A4FC925410C024792B85198DF1E97E403F45A51@usmsg03.sagus.com> Did another update a little while ago and things build fine now. From miguel@ximian.com Mon Oct 14 21:40:22 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 14 Oct 2002 16:40:22 -0400 Subject: [Mono-list] Update of SQL# and the MySQL ADO.NET Provider in Mono In-Reply-To: References: Message-ID: <1034628022.14578.496.camel@erandi.boston.ximian.com> Hello! > For those wanting to see SQL# using the MySQL ADO.NET Provider working in > Mono. This is awesome Dan! SQL# is also a very useful tool to learn how to poke and use the various ADO.NET classes from Mono. Maybe it should be later elevated to the status of "tool" rather than "test" ;-) Miguel From tobe_better@hotmail.com Mon Oct 14 21:41:20 2002 From: tobe_better@hotmail.com (Auge Mike) Date: Tue, 15 Oct 2002 00:41:20 +0400 Subject: [Mono-list] runtime... Message-ID: It seems that cvs fails sometimes to download the latest runtime folder, is there any link or method to download the runtime class-lib seperatly, thanx _________________________________________________________________ Chat with friends online, try MSN Messenger: http://messenger.msn.com From miguel@ximian.com Mon Oct 14 21:50:06 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 14 Oct 2002 16:50:06 -0400 Subject: [Mono-list] Bug in HttpWebRequest.cs and System.Timers namespace In-Reply-To: References: Message-ID: <1034628606.14577.507.camel@erandi.boston.ximian.com> Hello! > 1. I think there is a bug in HttpWebRequest. Line 572 should be > "webRequest.actualUri.PathAndQuery" instead actual > "webRequest.actualUri.AbsolutePath". Without this change is imposible to do > HTTP GET request sending key=value pairs (like a HTML form). Could you mail us a patch? > 2. I'm interested in implement the System.Timers namespace. Are there any > problem? What is the procedure? I implement it and send you? You mean System.Threading.Timer? That would be nice, but you might want to discuss your implementation strategy on the mailing list. I saw that Dick was the last person touching that code, and it would be nice to hear what he thinks about this. There are a number of questions to ponder: * Are timer functions invoked on the same thread or a separate thread? This will tell you whether you have to implement the timers using just a separate thread and sleeping, or not. * Are timers supposed to be invoked during a main loop invocation, or will be triggered even if you are busy? This will tell you whether you have to use SIGITIMER, or if you can get away with running some main loop. Miguel From miguel@ximian.com Mon Oct 14 21:51:19 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 14 Oct 2002 16:51:19 -0400 Subject: [Mono-list] Adding new search path for assemblies? In-Reply-To: <1034619216.13350.3.camel@imperius.um.us.sbphrd.com> References: <1034619216.13350.3.camel@imperius.um.us.sbphrd.com> Message-ID: <1034628679.14577.509.camel@erandi.boston.ximian.com> Hello, > Is there a way to specify an additional search path for assemblies? > Something that works LD_LIBRARY_PATH? MONO_PATH. Check the `mono(1)' man page. Miguel From ggb@tid.es Mon Oct 14 22:45:56 2002 From: ggb@tid.es (gustavo) Date: 14 Oct 2002 23:45:56 +0200 Subject: [Mono-list] Bug in HttpWebRequest.cs and System.Timers namespace In-Reply-To: <1034628606.14577.507.camel@erandi.boston.ximian.com> References: <1034628606.14577.507.camel@erandi.boston.ximian.com> Message-ID: <1034631975.1167.84.camel@cable70a028.usuarios.retecal.es> > Hello! > > > 1. I think there is a bug in HttpWebRequest. Line 572 should be > > "webRequest.actualUri.PathAndQuery" instead actual > > "webRequest.actualUri.AbsolutePath". Without this change is imposible to do > > HTTP GET request sending key=value pairs (like a HTML form). > > Could you mail us a patch? > Is this patch format ok? --- HttpWebRequest.bak 2002-10-14 23:40:17.000000000 +0200 +++ HttpWebRequest.cs 2002-10-14 23:27:58.000000000 +0200 @@ -569,7 +569,7 @@ webWriter = new StreamWriter (this); webWriter.Write (webRequest.Method + " " + - webRequest.actualUri.AbsolutePath + " HTTP/" + webRequest.version.ToString(2) + "\r\n"); + webRequest.actualUri.PathAndQuery + " HTTP/" + webRequest.version.ToString(2) + "\r\n"); foreach (string header in webRequest.webHeaders) webWriter.Write (header + ": " + webRequest.webHeaders[header] + "\r\n"); Best Regards. Gustavo. From ggb@tid.es Mon Oct 14 23:28:26 2002 From: ggb@tid.es (gustavo) Date: 15 Oct 2002 00:28:26 +0200 Subject: [Mono-list] Bug in HttpWebRequest.cs and System.Timers namespace In-Reply-To: <1034628606.14577.507.camel@erandi.boston.ximian.com> References: <1034628606.14577.507.camel@erandi.boston.ximian.com> Message-ID: <1034634511.1167.141.camel@cable70a028.usuarios.retecal.es> There are 3 types of timers in .NET: * System.Windows.Forms.Timer: UI timer. Using only one thread, events received in the UI thread. * System.Timers.Timer: worker ("server based") multithread timer. Events received in a separate thread. * System.Threading.Timer: lightweight worker ("server based") multithread timer. Events received in a separate thread. http://www.fawcette.com/vsm/2002_11/online/hottips/falossi/default_pf.asp http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbcon/html/vbconServerBasedTimers.asp I'm trying to implement System.Timers namespace in System.dll assembly. I think the simplest solution is to spawn a secondary thread (System.Threading.Thread) doing a (Sleep/Notify Elapsed) loop. What do you think about this early implementation? Somebody could explain more clearly the differences between Threading.Timer and Timers.Timer? Best regards Gustavo. > > 2. I'm interested in implement the System.Timers namespace. Are there any > > problem? What is the procedure? I implement it and send you? > > You mean System.Threading.Timer? That would be nice, but you might want > to discuss your implementation strategy on the mailing list. I saw that > Dick was the last person touching that code, and it would be nice to > hear what he thinks about this. > > There are a number of questions to ponder: > > * Are timer functions invoked on the same thread or a separate > thread? This will tell you whether you have to implement > the timers using just a separate thread and sleeping, or not. > > * Are timers supposed to be invoked during a main loop > invocation, or will be triggered even if you are busy? > > This will tell you whether you have to use SIGITIMER, or if > you can get away with running some main loop. > From ggb@tid.es Mon Oct 14 23:28:26 2002 From: ggb@tid.es (gustavo) Date: 15 Oct 2002 00:28:26 +0200 Subject: [Mono-list] Bug in HttpWebRequest.cs and System.Timers namespace In-Reply-To: <1034628606.14577.507.camel@erandi.boston.ximian.com> References: <1034628606.14577.507.camel@erandi.boston.ximian.com> Message-ID: <1034634512.1120.143.camel@cable70a028.usuarios.retecal.es> There are 3 types of timers in .NET: * System.Windows.Forms.Timer: UI timer. Using only one thread, events received in the UI thread. * System.Timers.Timer: worker ("server based") multithread timer. Events received in a separate thread. * System.Threading.Timer: lightweight worker ("server based") multithread timer. Events received in a separate thread. http://www.fawcette.com/vsm/2002_11/online/hottips/falossi/default_pf.asp http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbcon/html/vbconServerBasedTimers.asp I'm trying to implement System.Timers namespace in System.dll assembly. I think the simplest solution is to spawn a secondary thread (System.Threading.Thread) doing a (Sleep/Notify Elapsed) loop. What do you think about this early implementation? Somebody could explain more clearly the differences between Threading.Timer and Timers.Timer? Best regards Gustavo. > > 2. I'm interested in implement the System.Timers namespace. Are there any > > problem? What is the procedure? I implement it and send you? > > You mean System.Threading.Timer? That would be nice, but you might want > to discuss your implementation strategy on the mailing list. I saw that > Dick was the last person touching that code, and it would be nice to > hear what he thinks about this. > > There are a number of questions to ponder: > > * Are timer functions invoked on the same thread or a separate > thread? This will tell you whether you have to implement > the timers using just a separate thread and sleeping, or not. > > * Are timers supposed to be invoked during a main loop > invocation, or will be triggered even if you are busy? > > This will tell you whether you have to use SIGITIMER, or if > you can get away with running some main loop. > From pbaena@uol.com.ar Mon Oct 14 20:40:49 2002 From: pbaena@uol.com.ar (Pablo Baena) Date: 14 Oct 2002 19:40:49 +0000 Subject: [Mono-list] Re: [Gtk-sharp-list] ThreadNotify (A bug in Queue.Dequeue method) In-Reply-To: <1034626920.14577.489.camel@erandi.boston.ximian.com> References: <1034231277.1305.16.camel@rain.vlad1.com> <1034275199.14577.97.camel@erandi.boston.ximian.com> <1034281481.1162.6.camel@rain.vlad1.com> <1034305925.547.9.camel@hal> <1034390745.579.15.camel@hal> <1034626920.14577.489.camel@erandi.boston.ximian.com> Message-ID: <1034624449.1866.8.camel@hal> --=-nXHfOB+UgDYkn3f/IbKr Content-Type: multipart/alternative; boundary="=-y7cJWFf6CBbb7HpSenjr" --=-y7cJWFf6CBbb7HpSenjr Content-Type: text/plain Content-Transfer-Encoding: 7bit Sure!!! I hope this is enough. I will make more as I found more errors. I don't know the guidelines to make these tests so please inform me of any mistakes. Cheers! Pablo On Mon, 2002-10-14 at 20:22, Miguel de Icaza wrote: Hello! > The last problem I showed here is not ThreadNotify's fault. Seems to be > a bug in Queue.Dequeue. > If you look at the output of the test, you will notice it isn't accurate > to the data in the queue when you use Dequeue, but the commented part > with foreach works fine. This sounds like a case for someone to write some regression tests for Queue. Pablo, would you be interested in that? Miguel. --=-y7cJWFf6CBbb7HpSenjr Content-Type: text/html; charset=utf-8 Sure!!! I hope this is enough. I will make more as I found more errors. I don't know the guidelines to make these tests so please inform me of any mistakes.

Cheers!
Pablo




On Mon, 2002-10-14 at 20:22, Miguel de Icaza wrote:
Hello!

> The last problem I showed here is not ThreadNotify's fault. Seems to be
> a bug in Queue.Dequeue. 
> If you look at the output of the test, you will notice it isn't accurate
> to the data in the queue when you use Dequeue, but the commented part
> with foreach works fine. 

This sounds like a case for someone to write some regression tests for
Queue.  Pablo, would you be interested in that?

Miguel.

--=-y7cJWFf6CBbb7HpSenjr-- --=-nXHfOB+UgDYkn3f/IbKr Content-Disposition: attachment; filename=testqueue.cs Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; name=testqueue.cs; charset=ISO-8859-1 // System.Collections.Queue regression test // Author: Pablo Baena namespace queue_test { using System; using System.Collections; class test { public static int Main() { Queue queue =3D new Queue(); for (int i=3D0;i<100;i++) { queue.Enqueue("Data #"+i); } =09 if (test_iteration(queue)=3D=3D1) { Console.WriteLine("iteration in queue object failed"); return 1; } =09 if (test_enum(queue)=3D=3D1) { Console.WriteLine("enumeration in queue object failed"); return 1; } Queue queue2 =3D new Queue(queue); if (test_peek(queue2)=3D=3D1) { Console.WriteLine("peek failed"); return 1; } =09 if (test_dequeue(queue)=3D=3D1) { Console.WriteLine("dequeue failed"); return 1; } =09 return 0; } static int test_iteration(Queue myqueue) { string tmp, tmp2; int i =3D 0; foreach (Object item in myqueue) { tmp =3D "Data #"+i; tmp2 =3D (string) item; if (tmp!=3Dtmp2) return 1;=09 i++; } return 0; } =09 static int test_enum(Queue myqueue) { string tmp, tmp2; int i =3D 0; IEnumerator qenum =3D myqueue.GetEnumerator(); while (qenum.MoveNext()) { tmp =3D "Data #"+i; tmp2 =3D (string) qenum.Current; =09 if (tmp!=3Dtmp2) return 1; i++; } return 0; } static int test_dequeue(Queue myqueue) { =09 string tmp, tmp2; for (int i=3D0;i<100;i++) { tmp =3D "Data #"+i; tmp2 =3D (string) myqueue.Dequeue(); =09 if (tmp!=3Dtmp2) return 1; } return 0; } =09 static int test_peek(Queue myqueue) { =09 string tmp, tmp2; for (int i=3D0;i<100;i++) { tmp =3D "Data #"+i; tmp2 =3D (string) myqueue.Peek(); if (tmp!=3Dtmp2) return 1; myqueue.Dequeue(); } return 0; =09 } } } --=-nXHfOB+UgDYkn3f/IbKr-- From miguel@ximian.com Tue Oct 15 01:03:25 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 14 Oct 2002 20:03:25 -0400 Subject: [Mono-list] Sun's ACE project. Message-ID: <1034640204.14577.514.camel@erandi.boston.ximian.com> Hey everyone! If you are interested in WebForms, you want to look at Sun's ACE research project: http://research.sun.com/features/ace/ Miguel. From miguel@ximian.com Tue Oct 15 01:20:42 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 14 Oct 2002 20:20:42 -0400 Subject: [Mono-list] Bug in HttpWebRequest.cs and System.Timers namespace In-Reply-To: <1034631975.1167.84.camel@cable70a028.usuarios.retecal.es> References: <1034628606.14577.507.camel@erandi.boston.ximian.com> <1034631975.1167.84.camel@cable70a028.usuarios.retecal.es> Message-ID: <1034641242.14577.516.camel@erandi.boston.ximian.com> Hello! > Is this patch format ok? I have manually applied the patch: Your mailer is reformatting the patch, I suggest to use an attachment. You want also to provide us with a ChangeLog entry. I have manually applied the patch, but Miguel. From miguel@ximian.com Tue Oct 15 01:24:11 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 14 Oct 2002 20:24:11 -0400 Subject: [Mono-list] Re: [Gtk-sharp-list] ThreadNotify (A bug in Queue.Dequeue method) In-Reply-To: <1034624449.1866.8.camel@hal> References: <1034231277.1305.16.camel@rain.vlad1.com> <1034275199.14577.97.camel@erandi.boston.ximian.com> <1034281481.1162.6.camel@rain.vlad1.com> <1034305925.547.9.camel@hal> <1034390745.579.15.camel@hal> <1034626920.14577.489.camel@erandi.boston.ximian.com> <1034624449.1866.8.camel@hal> Message-ID: <1034641451.14578.519.camel@erandi.boston.ximian.com> Hello! > Sure!!! I hope this is enough. I will make more as I found more > errors. I don't know the guidelines to make these tests so please > inform me of any mistakes. Take a look at: mcs/class/doc/NUnitGuidelines That document describes how to write a test that we can integrate into the MCS build process. Miguel. From danmorg@sc.rr.com Tue Oct 15 01:33:37 2002 From: danmorg@sc.rr.com (Daniel Morgan) Date: Mon, 14 Oct 2002 20:33:37 -0400 Subject: [Mono-list] Crytography in Mono using NSS Message-ID: I found this on Mono'w web site about needing cyrtography support in Mono. What about using Netscape Security Services? http://www.mozilla.org/projects/security/pki/nss/overview.html The only problem I see with using NSS is that it uses NSPR (Netscape Portable Runtime). How well will NSPR cooperate with the mono runtime? If NSS and NSPR is good enough for Netscape and Sun, don't you think it could be good enough for us? Then again, I have no idea what the requirements are for cryptography support in Mono. However, I thought I would pass the link along to those that maybe interested. Excerpt from www.go-mono.com concering crytography in Mono: "Also Sebastien Pouliot has been improving the various cryptographic classes in Mono, something that we had not done in quite some time. We are looking for a way to handle big-nums. We need either a managed or unmanaged set of classes for handling large numbers, and some volunteers to expose this functionality to C# (Either as an internal assembly, or as a set of P/Invoke, Internal call wrappers" From danmorg@sc.rr.com Tue Oct 15 01:45:48 2002 From: danmorg@sc.rr.com (Daniel Morgan) Date: Mon, 14 Oct 2002 20:45:48 -0400 Subject: [Mono-list] Update of SQL# and the MySQL ADO.NET Provider inMono In-Reply-To: <1034628022.14578.496.camel@erandi.boston.ximian.com> Message-ID: How would I do that? Put SQL# in its own executable assembly SqlSharp.exe at mcs/class/Mono.Data.SqlSharp? How would it be built and installed? > SQL# is also a very useful tool to learn how to > poke and use the various ADO.NET classes from Mono. Maybe it should be > later elevated to the status of "tool" rather than "test" ;-) From brianlritchie@hotmail.com Tue Oct 15 02:18:32 2002 From: brianlritchie@hotmail.com (Brian Ritchie) Date: Mon, 14 Oct 2002 21:18:32 -0400 Subject: [Mono-list] ODBC.NET Provider on Windows Message-ID: I updated the mono/data/config.in per Daniel's instructions... Does this look correct? >From: Miguel de Icaza >To: Brian Ritchie >CC: Dan Morgan , mono-list@ximian.com >Subject: RE: [Mono-list] ODBC.NET Provider on Windows >Date: 14 Oct 2002 16:24:51 -0400 > >Hello! > > > Do we have a #define to force conditional compilation on Linux/Windows? >I'd > > like to setup the libodbc to point at odbc32 on windows. Or is there a > > better way? > >You should make it point to the library name that is used on Windows, >and we will ship a "re-mapping" definition with Mono (just let us know >what the mapping should look like). > >Mono allows us to remap library names to different names (see the >mono.config(5) man page for details) because in practice we will need to >do this. > >Miguel > >_______________________________________________ >Mono-list maillist - Mono-list@ximian.com >http://lists.ximian.com/mailman/listinfo/mono-list _________________________________________________________________ Send and receive Hotmail on your mobile device: http://mobile.msn.com From Sebastien Pouliot Tue Oct 15 02:51:54 2002 From: Sebastien Pouliot (Sebastien Pouliot) Date: Mon, 14 Oct 2002 21:51:54 -0400 Subject: [Mono-list] Crytography in Mono using NSS References: Message-ID: <00f201c273ed$6ff55e30$0301a8c0@einstein> > I found this on Mono'w web site about needing cyrtography support in Mono. > What about using Netscape Security Services? > > http://www.mozilla.org/projects/security/pki/nss/overview.html I've not looked at NSS for quite some time (before Mozilla 1.0 release). As such it predates my interest in Mono... > The only problem I see with using NSS is that it uses NSPR (Netscape > Portable Runtime). How well will NSPR cooperate with the mono runtime? No comments here (but I'm curious too :-) > If > NSS and NSPR is good enough for Netscape and Sun, don't you think it could > be good enough for us? NSS has been certified FIPS140-1 (level 1 or 2) quite a few time in the past so I wouldn't have much concern about the cryptographic quality of the algorithm implementations. However I don't think that NSS (or any other library - there're tons of them) may not implement all the classes required for Mono. > Then again, I have no idea what the requirements are for cryptography > support in Mono. Speaking for myself I'm hoping (and working so) we can have fully managed cryptographic classes on mono. Many reasons are motivating me to this end including: - portability across operating system: I believe that keeping track of multiple external library dependencies across multiple operating system is going to be a tough job on the long run (and still a bigger job for porting to new, and often limited, platform - like new embebbed devices, cell phones, PDA, ...); - security: In the right environment it's easier to be trust managed code than unmanaged code. Also many of the current security flaws are based on exploits (like stack overrun) that are gonna be harder to reproduce in a managed environment (unless it exploit unmanaged code underneath). However I do understand that my criteria aren't universal: performance is often cited as good reason to include unmanaged code, another one is reusing existing code to accelerate the development. Speaking of performance I did some tests using native CryptoAPI on Windows (from managed code) and found out that, depending how you use it (which is something we can't totally control with a frozen API), managed code can be faster than unmanaged code (as too much calls between managed/unmanaged code can reduce or destroy any performance advantage). Hopefully we can get the best of both world (mine and the other one ;-) because we can include many implementations of a single algorithm in the class library. The application could choose directly which one to use (bad choice but 98% of current C# applications are just doing this - so it's kind of too late) or ask for a default algorithm implementation (good choice). This default implementation could be different between operating systems (like CryptoAPI on Windows) or selected at installation time. > However, I thought I would pass the link along to those > that maybe interested. Thanks. I'll get a new (in a mono perspective) look at it. Sebastien Pouliot Security Architect, Motus Technologies, http://www.motus.com/ work: spouliot@motus.com home: spouliot@videotron.ca ----- Original Message ----- From: "Daniel Morgan" To: "Mono-List" Sent: Monday, October 14, 2002 8:33 PM Subject: [Mono-list] Crytography in Mono using NSS > > > Excerpt from www.go-mono.com concering crytography in Mono: > "Also Sebastien Pouliot has been improving the various cryptographic classes > in Mono, something that we had not done in quite some time. We are looking > for a way to handle big-nums. We need either a managed or unmanaged set of > classes for handling large numbers, and some volunteers to expose this > functionality to C# (Either as an internal assembly, or as a set of > P/Invoke, Internal call wrappers" > > > _______________________________________________ > Mono-list maillist - Mono-list@ximian.com > http://lists.ximian.com/mailman/listinfo/mono-list > From brianlritchie@hotmail.com Tue Oct 15 02:52:06 2002 From: brianlritchie@hotmail.com (Brian Ritchie) Date: Mon, 14 Oct 2002 21:52:06 -0400 Subject: [Mono-list] PKCS1MaskGenerationMethod build failure Message-ID: I just did an update from CVS and received the following build error: mcs\class\corlib\System.Security.Cryptography\PKCS1MaskGenerationMethod.cs(35,26): error CS3001: Argument type 'uint' is not CLS-compliant _________________________________________________________________ MSN Photos is the easiest way to share and print your photos: http://photos.msn.com/support/worldwide.aspx From Sebastien Pouliot Tue Oct 15 03:10:43 2002 From: Sebastien Pouliot (Sebastien Pouliot) Date: Mon, 14 Oct 2002 22:10:43 -0400 Subject: [Mono-list] PKCS1MaskGenerationMethod build failure References: Message-ID: <00f901c273f0$11350d70$0301a8c0@einstein> Sorry my error. This file wasn't ready to commit (the source-code isn't formatted the mono-way) but did compile under mcs (test project) but I didn't rebuild the whole class library. You can exclude it without affecting any crypto functionality. I'll be patching it ASAP. ----- Original Message ----- From: "Brian Ritchie" To: Sent: Monday, October 14, 2002 9:52 PM Subject: [Mono-list] PKCS1MaskGenerationMethod build failure > I just did an update from CVS and received the following build error: > > mcs\class\corlib\System.Security.Cryptography\PKCS1MaskGenerationMethod.cs(3 5,26): > error CS3001: Argument type 'uint' is not CLS-compliant > > _________________________________________________________________ > MSN Photos is the easiest way to share and print your photos: > http://photos.msn.com/support/worldwide.aspx > > > _______________________________________________ > Mono-list maillist - Mono-list@ximian.com > http://lists.ximian.com/mailman/listinfo/mono-list > From pbaena@uol.com.ar Tue Oct 15 02:13:34 2002 From: pbaena@uol.com.ar (Pablo Baena) Date: 15 Oct 2002 01:13:34 +0000 Subject: [Mono-list] Re: [Gtk-sharp-list] ThreadNotify (A bug in Queue.Dequeue method) In-Reply-To: <1034641451.14578.519.camel@erandi.boston.ximian.com> References: <1034231277.1305.16.camel@rain.vlad1.com> <1034275199.14577.97.camel@erandi.boston.ximian.com> <1034281481.1162.6.camel@rain.vlad1.com> <1034305925.547.9.camel@hal> <1034390745.579.15.camel@hal> <1034626920.14577.489.camel@erandi.boston.ximian.com> <1034624449.1866.8.camel@hal> <1034641451.14578.519.camel@erandi.boston.ximian.com> Message-ID: <1034644415.563.9.camel@hal> --=-5SY7Xv1cdAg52nRCQb+h Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Silly me!! I totally missed NUnit!! I thought I just needed to add what I had to mcs/tests. Well, it already exists a test suite for Queue, so I'll add my test to the existing suite. Sorry for all the garbage I posted already!! :P I'm sending the diffs in a couple of hours. Pablo On Tue, 2002-10-15 at 00:24, Miguel de Icaza wrote: Hello! =20 > Sure!!! I hope this is enough. I will make more as I found more > errors. I don't know the guidelines to make these tests so please > inform me of any mistakes.=20 =20 Take a look at: =20 mcs/class/doc/NUnitGuidelines =20 That document describes how to write a test that we can integrate into the MCS build process. =20 Miguel. =20 _______________________________________________ Mono-list maillist - Mono-list@ximian.com http://lists.ximian.com/mailman/listinfo/mono-list ________________________________________________________________________ la vida es muy ironica vio? sip la verdad que se nos esta cagando de risa! y la voy a cagar a pi=F1as --=-5SY7Xv1cdAg52nRCQb+h Content-Type: text/html; charset=utf-8 Silly me!! I totally missed NUnit!! I thought I just needed to add what I had to mcs/tests. Well, it already exists a test suite for Queue, so I'll add my test to the existing suite.

Sorry for all the garbage I posted already!! :P
I'm sending the diffs in a couple of hours.

Pablo

On Tue, 2002-10-15 at 00:24, Miguel de Icaza wrote:
Hello!

> Sure!!! I hope this is enough. I will make more as I found more
> errors. I don't know the guidelines to make these tests so please
> inform me of any mistakes. 

Take a look at:

	mcs/class/doc/NUnitGuidelines

That document describes how to write a test that we can integrate into
the MCS build process.

Miguel.

_______________________________________________
Mono-list maillist  -  Mono-list@ximian.com
http://lists.ximian.com/mailman/listinfo/mono-list



<Tetsuo> la vida es muy ironica vio?
<Ranma> sip la verdad que se nos esta cagando de risa!
<Ranma> y la voy a cagar a piñas
--=-5SY7Xv1cdAg52nRCQb+h-- From dru_satori@mac.com Mon Oct 14 18:16:57 2002 From: dru_satori@mac.com (Andy Satori) Date: Mon, 14 Oct 2002 13:16:57 -0400 Subject: [Mono-list] Will mono be on OS X? In-Reply-To: Message-ID: There are a couple of people working on it, but I don't think anyone is as active at it as they'd like to be. Last I heard, the Mono on OS X port was to the point of compiling code, but still having some execution problems with the run-time. Andy On Monday, October 14, 2002, at 12:56 PM, Pete Hoch wrote: > Hi, > > I was wondering if there is currently anyone working on getting mono > to work under Mac OS X? If not are you interested in someone doing > this? > > Thanks, > Pete > > > > _______________________________________________ > Mono-list maillist - Mono-list@ximian.com > http://lists.ximian.com/mailman/listinfo/mono-list > From pbaena@uol.com.ar Tue Oct 15 06:20:17 2002 From: pbaena@uol.com.ar (Pablo Baena) Date: 15 Oct 2002 05:20:17 +0000 Subject: [Mono-list] Re: [Gtk-sharp-list] ThreadNotify (A bug in Queue.Dequeue method) In-Reply-To: <1034644415.563.9.camel@hal> References: <1034231277.1305.16.camel@rain.vlad1.com> <1034275199.14577.97.camel@erandi.boston.ximian.com> <1034281481.1162.6.camel@rain.vlad1.com> <1034305925.547.9.camel@hal> <1034390745.579.15.camel@hal> <1034626920.14577.489.camel@erandi.boston.ximian.com> <1034624449.1866.8.camel@hal> <1034641451.14578.519.camel@erandi.boston.ximian.com> <1034644415.563.9.camel@hal> Message-ID: <1034659218.1642.3.camel@hal> --=-4Wsm4YiPBSkyi1bxY2Zl Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable There is already a test case in there for Queue that should trigger the error I detected, but I can't build it because of this: MONO_PATH=3D mono ../../../mcs/mcs.exe --target library --noconfig -o corlib_linux_test.dll -r ../../../class/lib/corlib.dll -r ../../../class/lib/System.dll -r ../../../class/lib/NUnitCore_mono.dll @.response System.Security.Cryptography/AsymmetricAlgorithmTest.cs(17) error CS0246: Cannot find type `AsymmetricAlgorithm' That is the output of make -f makefile.gnu test. Any help? Pablo On Tue, 2002-10-15 at 01:13, Pablo Baena wrote: Silly me!! I totally missed NUnit!! I thought I just needed to add what I had to mcs/tests. Well, it already exists a test suite for Queue, so I'll add my test to the existing suite.=20 =20 Sorry for all the garbage I posted already!! :P=20 I'm sending the diffs in a couple of hours.=20 =20 Pablo=20 =20 On Tue, 2002-10-15 at 00:24, Miguel de Icaza wrote:=20 Hello! =20 > Sure!!! I hope this is enough. I will make more as I found more > errors. I don't know the guidelines to make these tests so please > inform me of any mistakes.=20 =20 Take a look at: =20 mcs/class/doc/NUnitGuidelines =20 That document describes how to write a test that we can integrate i= nto the MCS build process. =20 Miguel. =20 _______________________________________________ Mono-list maillist - Mono-list@ximian.com http://lists.ximian.com/mailman/listinfo/mono-list =20 =20 ____________________________________________________________________ =20 =20 la vida es muy ironica vio? sip la verdad que se nos esta cagando de risa! y la voy a cagar a pi=F1as ________________________________________________________________________ la vida es muy ironica vio? sip la verdad que se nos esta cagando de risa! y la voy a cagar a pi=F1as --=-4Wsm4YiPBSkyi1bxY2Zl Content-Type: text/html; charset=utf-8 There is already a test case in there for Queue that should trigger the error I detected, but I can't build it because of this:


MONO_PATH= mono ../../../mcs/mcs.exe --target library --noconfig -o corlib_linux_test.dll -r
../../../class/lib/corlib.dll -r ../../../class/lib/System.dll -r ../../../class/lib/NUnitCore_mono.dll @.response
System.Security.Cryptography/AsymmetricAlgorithmTest.cs(17) error CS0246: Cannot find type `AsymmetricAlgorithm'


That is the output of make -f makefile.gnu test. Any help?

Pablo

On Tue, 2002-10-15 at 01:13, Pablo Baena wrote:
Silly me!! I totally missed NUnit!! I thought I just needed to add what I had to mcs/tests. Well, it already exists a test suite for Queue, so I'll add my test to the existing suite.

Sorry for all the garbage I posted already!! :P
I'm sending the diffs in a couple of hours.

Pablo

On Tue, 2002-10-15 at 00:24, Miguel de Icaza wrote:
Hello!

> Sure!!! I hope this is enough. I will make more as I found more
> errors. I don't know the guidelines to make these tests so please
> inform me of any mistakes. 

Take a look at:

	mcs/class/doc/NUnitGuidelines

That document describes how to write a test that we can integrate into
the MCS build process.

Miguel.

_______________________________________________
Mono-list maillist  -  Mono-list@ximian.com
http://lists.ximian.com/mailman/listinfo/mono-list



<Tetsuo> la vida es muy ironica vio?
<Ranma> sip la verdad que se nos esta cagando de risa!
<Ranma> y la voy a cagar a piñas



<Tetsuo> la vida es muy ironica vio?
<Ranma> sip la verdad que se nos esta cagando de risa!
<Ranma> y la voy a cagar a piñas
--=-4Wsm4YiPBSkyi1bxY2Zl-- From serge@wildwestsoftware.com Tue Oct 15 10:06:30 2002 From: serge@wildwestsoftware.com (Sergey Chaban) Date: Tue, 15 Oct 2002 12:06:30 +0300 Subject: [Mono-list] Crytography in Mono using NSS References: <00f201c273ed$6ff55e30$0301a8c0@einstein> Message-ID: <002401c2742a$2cca2950$134e8ac3@mainmachine> > Speaking of performance I did some tests using native CryptoAPI on Windows > (from managed code) and found out that, depending how you use it (which is > something we can't totally control with a frozen API), managed code can be > faster than unmanaged code I think it's indeed true (the fact that managed code can be faster in general). There was a lot of benchmarking in the early days, see for example this MD5 benchmark: http://mono.eurosoft.od.ua/Crypto/md5-mark.tar.gz There are versions in C++, C# and Java (both rolled & unrolled for the latter two). Unrolled C# code is the same as used in mono libs (the unrolled code is machine-generated). > Many reasons are motivating me to this end including: > - portability across operating system: I believe that keeping track of > multiple external library dependencies across multiple operating system is > going to be a tough job on the long run (and still a bigger job for porting > to new, and often limited, platform - like new embebbed devices, cell > phones, PDA, ...); This is very true, I agree 100%. It's already non-trivial to port Mono to such platforms, so it's better to avoid new dependencies (IMO). Sergey ----- Original Message ----- From: "Sebastien Pouliot" To: "Daniel Morgan" ; "Mono-List" Sent: Tuesday, October 15, 2002 4:51 AM Subject: Re: [Mono-list] Crytography in Mono using NSS > > I found this on Mono'w web site about needing cyrtography support in Mono. > > What about using Netscape Security Services? > > > > http://www.mozilla.org/projects/security/pki/nss/overview.html > > I've not looked at NSS for quite some time (before Mozilla 1.0 release). As > such it predates my interest in Mono... > > > The only problem I see with using NSS is that it uses NSPR (Netscape > > Portable Runtime). How well will NSPR cooperate with the mono runtime? > > No comments here (but I'm curious too :-) > > > If > > NSS and NSPR is good enough for Netscape and Sun, don't you think it could > > be good enough for us? > > NSS has been certified FIPS140-1 (level 1 or 2) quite a few time in the past > so I wouldn't have much concern about the cryptographic quality of the > algorithm implementations. However I don't think that NSS (or any other > library - there're tons of them) may not implement all the classes required > for Mono. > > > Then again, I have no idea what the requirements are for cryptography > > support in Mono. > > Speaking for myself I'm hoping (and working so) we can have fully managed > cryptographic classes on mono. > > Many reasons are motivating me to this end including: > - portability across operating system: I believe that keeping track of > multiple external library dependencies across multiple operating system is > going to be a tough job on the long run (and still a bigger job for porting > to new, and often limited, platform - like new embebbed devices, cell > phones, PDA, ...); > - security: In the right environment it's easier to be trust managed code > than unmanaged code. Also many of the current security flaws are based on > exploits (like stack overrun) that are gonna be harder to reproduce in a > managed environment (unless it exploit unmanaged code underneath). > > However I do understand that my criteria aren't universal: performance is > often cited as good reason to include unmanaged code, another one is reusing > existing code to accelerate the development. > > Speaking of performance I did some tests using native CryptoAPI on Windows > (from managed code) and found out that, depending how you use it (which is > something we can't totally control with a frozen API), managed code can be > faster than unmanaged code (as too much calls between managed/unmanaged code > can reduce or destroy any performance advantage). > > Hopefully we can get the best of both world (mine and the other one ;-) > because we can include many implementations of a single algorithm in the > class library. The application could choose directly which one to use (bad > choice but 98% of current C# applications are just doing this - so it's kind > of too late) or ask for a default algorithm implementation (good choice). > This default implementation could be different between operating systems > (like CryptoAPI on Windows) or selected at installation time. > > > However, I thought I would pass the link along to those > > that maybe interested. > > Thanks. I'll get a new (in a mono perspective) look at it. > > > Sebastien Pouliot > Security Architect, Motus Technologies, http://www.motus.com/ > work: spouliot@motus.com > home: spouliot@videotron.ca > From bronson@rinspin.com Tue Oct 15 10:25:15 2002 From: bronson@rinspin.com (Scott Bronson) Date: 15 Oct 2002 02:25:15 -0700 Subject: [Mono-list] Help needed with XSLT transformations (documentation browser) In-Reply-To: <1034619320.14578.476.camel@erandi.boston.ximian.com> References: <1034302508.14577.313.camel@erandi.boston.ximian.com> <1034423173.1574.32.camel@emma> <1034452509.4349.26.camel@emma> <1034463576.14577.444.camel@erandi.boston.ximian.com> <1034588843.4348.245.camel@emma> <1034619320.14578.476.camel@erandi.boston.ximian.com> Message-ID: <1034673916.9728.21.camel@emma> On Mon, 2002-10-14 at 11:15, Miguel de Icaza wrote: > You do not need to generate the Index pages, the documentation browser > will do this. Oh. Too bad I chose to start the project by writing the index generator. :) Well, it's pretty much working now. Example output is at http://www.rinspin.com/~bronson/mono/xsl-test-2/mscorlib.xml,namespace.xsl%5B%5D.html This was made using the "generate.pl" and "namespace.xsl" scripts found in the same directory. > I will try your attached files in a couple of hours as I have some > things to finish here, I just wanted to reply to this urgent matter. I don't think they're worth looking at yet. Hang on a few days -- they will get interesting soon. - Scott From dick@ximian.com Tue Oct 15 11:01:14 2002 From: dick@ximian.com (Dick Porter) Date: 15 Oct 2002 11:01:14 +0100 Subject: [Mono-list] Patch for bugzilla 31265, plus some pthreads In-Reply-To: <87elatgmlm.fsf@purple.uknet.private> References: <87zntlhwri.fsf@purple.uknet.private> <1034351698.17088.105.camel@hagbard.apathetic.discordia.org.uk> <871y6tiex4.fsf@purple.uknet.private> <1034589715.5380.119.camel@hagbard.apathetic.discordia.org.uk> <87elatgmlm.fsf@purple.uknet.private> Message-ID: <1034676074.15332.44.camel@hagbard.apathetic.discordia.org.uk> On Mon, 2002-10-14 at 14:45, Tim Haynes wrote: > Dick Porter writes: > > > OK. You still need to answer the second part though :) > > It's needed on non-win32 because of the way the CreateThread() / > GetCurrentThread() are implemented in the io-layer - using wapi_handle_new > & co. > > The port to Win32 would consist of calling GetCurrentThread() instead of > AttachThread(), as the wapi_handle_new equvalent is allready done by the > Win32 kernel. In that case, could you come up with a patch that makes GetCurrentThread() work as expected? Thanks, - Dick From dick@ximian.com Tue Oct 15 11:08:32 2002 From: dick@ximian.com (Dick Porter) Date: 15 Oct 2002 11:08:32 +0100 Subject: [Mono-list] Bug in HttpWebRequest.cs and System.Timers namespace In-Reply-To: <1034628606.14577.507.camel@erandi.boston.ximian.com> References: <1034628606.14577.507.camel@erandi.boston.ximian.com> Message-ID: <1034676512.15332.47.camel@hagbard.apathetic.discordia.org.uk> On Mon, 2002-10-14 at 21:50, Miguel de Icaza wrote: > > 2. I'm interested in implement the System.Timers namespace. Are there any > > problem? What is the procedure? I implement it and send you? > > You mean System.Threading.Timer? That would be nice, but you might want > to discuss your implementation strategy on the mailing list. I saw that > Dick was the last person touching that code, and it would be nice to > hear what he thinks about this. Someone from Hispalinux mentioned about implementing System.Threading.Timers last week, and I told them to go ahead. I'm not sure if that someone is Gustavo, or not. - Dick From rodrigo@ximian.com Tue Oct 15 12:14:56 2002 From: rodrigo@ximian.com (Rodrigo Moya) Date: 15 Oct 2002 13:14:56 +0200 Subject: [Mono-list] Crytography in Mono using NSS In-Reply-To: <00f201c273ed$6ff55e30$0301a8c0@einstein> References: <00f201c273ed$6ff55e30$0301a8c0@einstein> Message-ID: <1034680495.25201.5.camel@localhost> On Tue, 2002-10-15 at 03:51, Sebastien Pouliot wrote: > > > If > > NSS and NSPR is good enough for Netscape and Sun, don't you think it could > > be good enough for us? > it is also good for ximian, since we use it in Evolution. cheers -- Rodrigo Moya From veromu@hotmail.com Tue Oct 15 10:07:17 2002 From: veromu@hotmail.com (=?iso-8859-1?B?Um9tdWFsZCBldCBW6XJvbmlxdWUgVElTU0VSQU5E?=) Date: Tue, 15 Oct 2002 11:07:17 +0200 Subject: [Mono-list] MonoDoc Message-ID: Hello all, I'm following .Net since 1.5 years and Mono since its beginning. I'm very surprised to see the MonoDoc tool is made in Qt# while other tools and Mono itself use QTK#. In my opinion, this is an inconsistency of Mono, but maybe I'm wrong. Continue your beautiful work. Romu. _________________________________________________________________ Rejoignez MSN Hotmail, le plus important service de messagerie http://www.hotmail.com/fr From kgeorge@plovdiv.techno-link.com Tue Oct 15 09:38:47 2002 From: kgeorge@plovdiv.techno-link.com (George Kodinov) Date: Tue, 15 Oct 2002 11:38:47 +0300 Subject: [Mono-list] System.Runtime.Serialization.Formatters.Binary.BinaryFormatter question Message-ID: <3DABD417.1010603@plovdiv.techno-link.com> Hi, I'm trying to run on Mono an MS.NET application using the BinaryFormatter class. I've noted that the BinaryFormatter class is not currently implemented. I'm thinking about implementing it. But I find no documentation of the MS.NET binary formatter output format (to be able to read data produced by MS.NET BinaryFormatter). Is something known about that format (so I can start filling up the Mono's BinaryFormatter class), or I have to try to reverse-engineer it ? Or is it OK to define some binary format specially for Mono ? Best Regards, George Kodinov From ggb@tid.es Tue Oct 15 13:09:34 2002 From: ggb@tid.es (=?iso-8859-1?Q?Gustavo_Garc=EDa_Bernardo?=) Date: Tue, 15 Oct 2002 14:09:34 +0200 Subject: [Mono-list] Bug in HttpWebRequest.cs and System.Timersnamespace In-Reply-To: <1034676512.15332.47.camel@hagbard.apathetic.discordia.org.uk> Message-ID: I'm not from Hispalinux. I'm interested about implementing a diferent namespace timers System.Timers.Timer, but i'm not sure about differences between System.Timers.Timer and System.Threading.Timer like I said in my last mail. G. On Mon, 2002-10-14 at 21:50, Miguel de Icaza wrote: > > 2. I'm interested in implement the System.Timers namespace. Are there any > > problem? What is the procedure? I implement it and send you? > > You mean System.Threading.Timer? That would be nice, but you might want > to discuss your implementation strategy on the mailing list. I saw that > Dick was the last person touching that code, and it would be nice to > hear what he thinks about this. Someone from Hispalinux mentioned about implementing System.Threading.Timers last week, and I told them to go ahead. I'm not sure if that someone is Gustavo, or not. - Dick From groith@tcrz.net Tue Oct 15 13:52:12 2002 From: groith@tcrz.net (Guenther Roith) Date: Tue, 15 Oct 2002 14:52:12 +0200 Subject: [Mono-list] MonoDoc References: Message-ID: <001701c27449$aea1f740$0100a8c0@roithw2k> Hello! > Hello all, > I'm following .Net since 1.5 years and Mono since its beginning. > > I'm very surprised to see the MonoDoc tool is made in Qt# while > other tools and Mono itself use QTK#. There is also a tool in GTK# available. From dietmar@ximian.com Tue Oct 15 13:54:35 2002 From: dietmar@ximian.com (Dietmar Maurer) Date: 15 Oct 2002 14:54:35 +0200 Subject: [Mono-list] Re: [Mono-list] System.Runtime.Serialization.Formatters.Binary.BinaryFormatter question In-Reply-To: <3DABD417.1010603@plovdiv.techno-link.com> References: <3DABD417.1010603@plovdiv.techno-link.com> Message-ID: <1034686476.9439.18.camel@tequila> On Tue, 2002-10-15 at 10:38, George Kodinov wrote: > Hi, > > I'm trying to run on Mono an MS.NET application using the > BinaryFormatter class. > I've noted that the BinaryFormatter class is not currently implemented. > I'm thinking about implementing it. > But I find no documentation of the MS.NET binary formatter output format > (to be able to read data produced by MS.NET BinaryFormatter). Thats the problem - it is totally undocumented! I also found no useful info about it. > Is something known about that format (so I can start filling up the > Mono's BinaryFormatter class), or I have to try to reverse-engineer it ? > Or is it OK to define some binary format specially for Mono ? You can implement a CORBA compatible formatter, for example. Or you can use the SOAP formatter, which is also a documented standard. - Dietmar From miguel@ximian.com Tue Oct 15 15:43:50 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 15 Oct 2002 10:43:50 -0400 Subject: [Mono-list] MonoDoc In-Reply-To: References: Message-ID: <1034693029.14578.599.camel@erandi.boston.ximian.com> Hello! > I'm following .Net since 1.5 years and Mono since its beginning. > > I'm very surprised to see the MonoDoc tool is made in Qt# while > other tools and Mono itself use QTK#. We have also a Gtk# based version of the MonoDoc tools. Miguel From dick@ximian.com Tue Oct 15 16:15:28 2002 From: dick@ximian.com (Dick Porter) Date: 15 Oct 2002 16:15:28 +0100 Subject: [Mono-list] Re: [Mono-list] System.Runtime.Serialization.Formatters.Binary.BinaryFormatter question In-Reply-To: <3DABD417.1010603@plovdiv.techno-link.com> References: <3DABD417.1010603@plovdiv.techno-link.com> Message-ID: <1034694928.17737.2.camel@hagbard.apathetic.discordia.org.uk> On Tue, 2002-10-15 at 09:38, George Kodinov wrote: > I'm trying to run on Mono an MS.NET application using the > BinaryFormatter class. > I've noted that the BinaryFormatter class is not currently implemented. > I'm thinking about implementing it. > But I find no documentation of the MS.NET binary formatter output format > (to be able to read data produced by MS.NET BinaryFormatter). None of us has been able to find any documentation for that class. > Is something known about that format (so I can start filling up the > Mono's BinaryFormatter class), or I have to try to reverse-engineer it ? If you want to reverse engineer it, that would be great. It might be a long and time consuming task though. You might also want to check out the laws regarding reverse engineering where you are - it might become impossible for you to work on the code for that class if you reverse engineered the MS one. > Or is it OK to define some binary format specially for Mono ? It is if you call it something else. - Dick From pluto@tipic.com Tue Oct 15 14:51:18 2002 From: pluto@tipic.com (Francesco Delfino) Date: Tue, 15 Oct 2002 15:51:18 +0200 Subject: [Mono-list] System.Runtime.Serialization.Formatters.Binary.BinaryFormatter question References: <3DABD417.1010603@plovdiv.techno-link.com> <1034686476.9439.18.camel@tequila> Message-ID: <1034689870.928276@tigri.napoli.consorzio-cini.it> One solution could be to implement a new Formatter class (using, maybe, Corba or whatever public format) and makig it usable even on MS.NET implementation, so that if you want to make interoperable Mono with a MSNET all you need is to use the "open" formatter. Just an idea, hope this helps. -- Regards, Francesco Delfino Tipic Inc. http://www.tipic.com e-mail & Jabber: pluto@tipic.com blog: http://www.tipic.com/blog/pluto@tipic.com "Dietmar Maurer" wrote in message news:1034686476.9439.18.camel@tequila... > On Tue, 2002-10-15 at 10:38, George Kodinov wrote: > > Hi, > > > > I'm trying to run on Mono an MS.NET application using the > > BinaryFormatter class. > > I've noted that the BinaryFormatter class is not currently implemented. > > I'm thinking about implementing it. > > But I find no documentation of the MS.NET binary formatter output format > > (to be able to read data produced by MS.NET BinaryFormatter). > > Thats the problem - it is totally undocumented! I also found no useful > info about it. > > > Is something known about that format (so I can start filling up the > > Mono's BinaryFormatter class), or I have to try to reverse-engineer it ? > > Or is it OK to define some binary format specially for Mono ? > > You can implement a CORBA compatible formatter, for example. Or you can > use the SOAP formatter, which is also a documented standard. > > - Dietmar > > > _______________________________________________ > Mono-list maillist - Mono-list@ximian.com > http://lists.ximian.com/mailman/listinfo/mono-list > From serge@wildwestsoftware.com Tue Oct 15 16:54:57 2002 From: serge@wildwestsoftware.com (Sergey Chaban) Date: Tue, 15 Oct 2002 18:54:57 +0300 Subject: [Mono-list] System.Runtime.Serialization.Formatters.Binary.BinaryFormatter question References: <3DABD417.1010603@plovdiv.techno-link.com> <1034694928.17737.2.camel@hagbard.apathetic.discordia.org.uk> Message-ID: <003b01c27463$3c879ce0$164e8ac3@mainmachine> > If you want to reverse engineer it, that would be great. It might be a > long and time consuming task though. You might also want to check out > the laws regarding reverse engineering where you are - it might become > impossible for you to work on the code for that class if you reverse > engineered the MS one. What about using Rotor's implementation as documentation, instead of reverse-engineering binary format? In any case, from the law point of view results would be the same. One person writes documentation, another implements this class in Mono. Except that it would be infinitely easier (and perhaps more accurate) for the first person to extract format from the source code instead of taking binary apart. Just thinking out loud. Sergey From ndrochak@gol.com Tue Oct 15 17:16:55 2002 From: ndrochak@gol.com (Nick Drochak) Date: Wed, 16 Oct 2002 01:16:55 +0900 Subject: [Mono-list] Crypto Unit tests on linux Message-ID: <000401c27466$47ac5e00$0100a8c0@screamii> The recently submitted unit tests for Crypto are producing lot of errors. Seems to be at least one error per test file or so. I had to disable some of the tests just to get it to build on cygwin with csc, and now when I run the tests on linux under mono I'm seeing the errors. Can someone who knows these classes (Sebastien?) give the tests a try and let me know if it's just me? The tests are running fine on windows, btw. Regards, Nick D. From miguel@ximian.com Tue Oct 15 17:49:03 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 15 Oct 2002 12:49:03 -0400 Subject: [Mono-list] Re: [Mono-list] System.Runtime.Serialization.Formatters.Binary.BinaryFormatter question In-Reply-To: <1034694928.17737.2.camel@hagbard.apathetic.discordia.org.uk> References: <3DABD417.1010603@plovdiv.techno-link.com> <1034694928.17737.2.camel@hagbard.apathetic.discordia.org.uk> Message-ID: <1034700543.14578.602.camel@erandi.boston.ximian.com> Hello! > > Is something known about that format (so I can start filling up the > > Mono's BinaryFormatter class), or I have to try to reverse-engineer it ? > > If you want to reverse engineer it, that would be great. It might be a > long and time consuming task though. You might also want to check out > the laws regarding reverse engineering where you are - it might become > impossible for you to work on the code for that class if you reverse > engineered the MS one. Another thing that you can do is look at the Rotor source code, and write a description of the protocol and the encoding, and then have someone else implement this function. Miguel From giuseppe.greco@bluewin.ch Tue Oct 15 19:58:39 2002 From: giuseppe.greco@bluewin.ch (Giuseppe Greco) Date: 15 Oct 2002 20:58:39 +0200 Subject: [Mono-list] Building NAnt on Linux Message-ID: <1034708318.9721.4.camel@gonzo.lan> Hi, Does anybody know if it is possible to compile NAnt on Linux? I tryed, but I got the following errors: ** (bin/NAnt.exe:9788): WARNING **: Could not find assembly System.Windows.Forms ** (bin/NAnt.exe:9788): WARNING **: Could not find assembly NUnitCore ** (bin/NAnt.exe:9788): WARNING **: Could not find assembly NAnt.Core Can not open image bin/NAnt.exe I downloaded the last version of NAnt from nant.sourceforge.net. -- Giuseppe Greco Fermo Posta 6928 Manno Switzerland Tel. : +41-76-390.60.32 Email: giuseppe.greco@bluewin.ch From miguel@ximian.com Tue Oct 15 17:59:11 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 15 Oct 2002 12:59:11 -0400 Subject: [Mono-list] Re: [Mono-list] System.Runtime.Serialization.Formatters.Binary.BinaryFormatter question In-Reply-To: <003b01c27463$3c879ce0$164e8ac3@mainmachine> References: <3DABD417.1010603@plovdiv.techno-link.com> <1034694928.17737.2.camel@hagbard.apathetic.discordia.org.uk> <003b01c27463$3c879ce0$164e8ac3@mainmachine> Message-ID: <1034701151.14578.604.camel@erandi.boston.ximian.com> Hello! > What about using Rotor's implementation as documentation, instead of > reverse-engineering binary format? In any case, from the law point of view > results would be the same. One person writes documentation, another implements > this class in Mono. Except that it would be infinitely easier (and perhaps more accurate) > for the first person to extract format from the source code instead of taking binary apart. > Just thinking out loud. Yes, this is the right way to go. From vi64pa@koti.soon.fi Tue Oct 15 17:59:33 2002 From: vi64pa@koti.soon.fi (ville) Date: Tue, 15 Oct 2002 19:59:33 +0300 Subject: [Mono-list] Test for SqlSingle Message-ID: <200210151959.33575.vi64pa@koti.soon.fi> --------------Boundary-00=_9J81Q4SJEI1WJU3ITS3O Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable here it is --------------Boundary-00=_9J81Q4SJEI1WJU3ITS3O Content-Type: text/x-c++src; charset="us-ascii"; name="SqlSingleTest.cs" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="SqlSingleTest.cs" // // SqlSingleTest.cs - NUnit Test Cases for System.Data.SqlTypes.SqlSingle // // Ville Palo (vi64pa@koti.soon.fi) // // (C) Ville Palo 2002 // using NUnit.Framework; using System; using System.Data.SqlTypes; namespace MonoTests.System.Data.SqlTypes { public class SqlSingleTest : TestCase { public SqlSingleTest() : base ("System.Data.SqlTypes.SqlSingle") {} public SqlSingleTest(string name) : base(name) {} protected override void TearDown() {} protected override void SetUp() {} public static ITest Suite { get { return new TestSuite(typeof(SqlSingle)); } } // Test constructor public void TestCreate() { SqlSingle Test= new SqlSingle ((float)34.87); SqlSingle Test2 = 45.2f; AssertEquals ("#A01", 34.87f, Test.Value); AssertEquals ("#A02", 45.2f, Test2.Value); Test = new SqlSingle (-9000.6543); AssertEquals ("#A03", -9000.6543f, Test.Value); } // Test public fields public void TestPublicFields() { AssertEquals ("#B01", 3.40282346638528859e38f, SqlSingle.MaxValue.Value); AssertEquals ("#B02", -3.40282346638528859e38f, SqlSingle.MinValue.Value); Assert ("#B03", SqlSingle.Null.IsNull); AssertEquals ("#B04", 0f, SqlSingle.Zero.Value); } // Test properties public void TestProperties() { SqlSingle Test = new SqlSingle (5443e12f); SqlSingle Test1 = new SqlSingle (1); Assert ("#C01", SqlSingle.Null.IsNull); AssertEquals ("#C02", 5443e12f, Test.Value); AssertEquals ("#C03", (float)1, Test1.Value); } // PUBLIC METHODS public void TestArithmeticMethods() { SqlSingle Test0 = new SqlSingle (0); SqlSingle Test1 = new SqlSingle (15e18); SqlSingle Test2 = new SqlSingle (-65e6); SqlSingle Test3 = new SqlSingle (5e30); SqlSingle Test4 = new SqlSingle (5e18); SqlSingle TestMax = new SqlSingle (SqlSingle.MaxValue.Value); // Add() AssertEquals ("#D01A", 15e18f, SqlSingle.Add (Test1, Test0).Value); AssertEquals ("#D02A", 1.5e19f, SqlSingle.Add (Test1, Test2).Value); try { SqlSingle test = SqlSingle.Add (SqlSingle.MaxValue, SqlSingle.MaxValue); Fail ("#D03A"); } catch (Exception e) { AssertEquals ("#D04A", typeof (OverflowException), e.GetType ()); } // Divide() AssertEquals ("#D01B", (SqlSingle)3, SqlSingle.Divide (Test1, Test4)); AssertEquals ("#D02B", -1.3e-23f, SqlSingle.Divide (Test2, Test3).Value); try { SqlSingle test = SqlSingle.Divide(Test1, Test0).Value; Fail ("#D03B"); } catch(Exception e) { AssertEquals ("#D04B", typeof (DivideByZeroException), e.GetType ()); } // Multiply() AssertEquals ("#D01D", (float)(7.5e37), SqlSingle.Multiply (Test1, Test4).Value); AssertEquals ("#D02D", (float)0, SqlSingle.Multiply (Test1, Test0).Value); try { SqlSingle test = SqlSingle.Multiply (TestMax, Test1); Fail ("#D03D"); } catch (Exception e) { AssertEquals ("#D04D", typeof (OverflowException), e.GetType ()); } // Subtract() AssertEquals ("#D01F", (float)(-5e30), SqlSingle.Subtract (Test1, Test3).Value); try { SqlSingle test = SqlSingle.Subtract( SqlSingle.MinValue, SqlSingle.MaxValue); Fail ("D02F"); } catch (Exception e) { AssertEquals ("#D03F", typeof (OverflowException), e.GetType ()); } } public void TestCompareTo() { SqlSingle Test1 = new SqlSingle (4e30); SqlSingle Test11 = new SqlSingle (4e30); SqlSingle Test2 = new SqlSingle (-9e30); SqlSingle Test3 = new SqlSingle (10000); SqlString TestString = new SqlString ("This is a test"); Assert ("#E01", Test1.CompareTo (Test3) > 0); Assert ("#E02", Test2.CompareTo (Test3) < 0); Assert ("#E03", Test1.CompareTo (Test11) == 0); Assert ("#E04", Test11.CompareTo (SqlSingle.Null) > 0); try { Test1.CompareTo (TestString); Fail("#E05"); } catch(Exception e) { AssertEquals ("#E06", typeof (ArgumentException), e.GetType ()); } } public void TestEqualsMethods() { SqlSingle Test0 = new SqlSingle (0); SqlSingle Test1 = new SqlSingle (1.58e30); SqlSingle Test2 = new SqlSingle (1.8e32); SqlSingle Test22 = new SqlSingle (1.8e32); Assert ("#F01", !Test0.Equals (Test1)); Assert ("#F02", !Test1.Equals (Test2)); Assert ("#F03", !Test2.Equals (new SqlString ("TEST"))); Assert ("#F04", Test2.Equals (Test22)); // Static Equals()-method Assert ("#F05", SqlSingle.Equals (Test2, Test22).Value); Assert ("#F06", !SqlSingle.Equals (Test1, Test2).Value); } public void TestGetHashCode() { SqlSingle Test15 = new SqlSingle (15); // FIXME: Better way to test HashCode AssertEquals ("#G01", Test15.GetHashCode (), Test15.GetHashCode ()); } public void TestGetType() { SqlSingle Test = new SqlSingle (84); AssertEquals ("#H01", "System.Data.SqlTypes.SqlSingle", Test.GetType ().ToString ()); AssertEquals ("#H02", "System.Single", Test.Value.GetType ().ToString ()); } public void TestGreaters() { SqlSingle Test1 = new SqlSingle (1e10); SqlSingle Test11 = new SqlSingle (1e10); SqlSingle Test2 = new SqlSingle (64e14); // GreateThan () Assert ("#I01", !SqlSingle.GreaterThan (Test1, Test2).Value); Assert ("#I02", SqlSingle.GreaterThan (Test2, Test1).Value); Assert ("#I03", !SqlSingle.GreaterThan (Test1, Test11).Value); // GreaterTharOrEqual () Assert ("#I04", !SqlSingle.GreaterThanOrEqual (Test1, Test2).Value); Assert ("#I05", SqlSingle.GreaterThanOrEqual (Test2, Test1).Value); Assert ("#I06", SqlSingle.GreaterThanOrEqual (Test1, Test11).Value); } public void TestLessers() { SqlSingle Test1 = new SqlSingle(1.8e10); SqlSingle Test11 = new SqlSingle (1.8e10); SqlSingle Test2 = new SqlSingle (64e14); // LessThan() Assert ("#J01", !SqlSingle.LessThan (Test1, Test11).Value); Assert ("#J02", !SqlSingle.LessThan (Test2, Test1).Value); Assert ("#J03", SqlSingle.LessThan (Test11, Test2).Value); // LessThanOrEqual () Assert ("#J04", SqlSingle.LessThanOrEqual (Test1, Test2).Value); Assert ("#J05", !SqlSingle.LessThanOrEqual (Test2, Test1).Value); Assert ("#J06", SqlSingle.LessThanOrEqual (Test11, Test1).Value); Assert ("#J07", SqlSingle.LessThanOrEqual (Test11, SqlSingle.Null).IsNull); } public void TestNotEquals() { SqlSingle Test1 = new SqlSingle (12800000000001); SqlSingle Test2 = new SqlSingle (128e10); SqlSingle Test22 = new SqlSingle (128e10); Assert ("#K01", SqlSingle.NotEquals (Test1, Test2).Value); Assert ("#K02", SqlSingle.NotEquals (Test2, Test1).Value); Assert ("#K03", SqlSingle.NotEquals (Test22, Test1).Value); Assert ("#K04", !SqlSingle.NotEquals (Test22, Test2).Value); Assert ("#K05", !SqlSingle.NotEquals (Test2, Test22).Value); Assert ("#K06", SqlSingle.NotEquals (SqlSingle.Null, Test22).IsNull); Assert ("#K07", SqlSingle.NotEquals (SqlSingle.Null, Test22).IsNull); } public void TestParse() { try { SqlSingle.Parse (null); Fail ("#L01"); } catch (Exception e) { AssertEquals ("#L02", typeof (ArgumentNullException), e.GetType ()); } try { SqlSingle.Parse ("not-a-number"); Fail ("#L03"); } catch (Exception e) { AssertEquals ("#L04", typeof (FormatException), e.GetType ()); } try { SqlSingle.Parse ("9e44"); Fail ("#L05"); } catch (Exception e) { AssertEquals ("#L06", typeof (OverflowException), e.GetType ()); } AssertEquals("#L07", (float)150, SqlSingle.Parse ("150").Value); } public void TestConversions() { SqlSingle Test0 = new SqlSingle (0); SqlSingle Test1 = new SqlSingle (250); SqlSingle Test2 = new SqlSingle (64e16); SqlSingle Test3 = new SqlSingle (64e30); SqlSingle TestNull = SqlSingle.Null; // ToSqlBoolean () Assert ("#M01A", Test1.ToSqlBoolean ().Value); Assert ("#M02A", !Test0.ToSqlBoolean ().Value); Assert ("#M03A", TestNull.ToSqlBoolean ().IsNull); // ToSqlByte () AssertEquals ("#M01B", (byte)250, Test1.ToSqlByte ().Value); AssertEquals ("#M02B", (byte)0, Test0.ToSqlByte ().Value); try { SqlByte b = (byte)Test2.ToSqlByte (); Fail ("#M03B"); } catch (Exception e) { AssertEquals ("#M04B", typeof (OverflowException), e.GetType ()); } // ToSqlDecimal () AssertEquals ("#M01C", (decimal)250, Test1.ToSqlDecimal ().Value); AssertEquals ("#M02C", (decimal)0, Test0.ToSqlDecimal ().Value); try { SqlDecimal test = Test3.ToSqlDecimal ().Value; Fail ("#M03C"); } catch (Exception e) { AssertEquals ("#M04C", typeof (OverflowException), e.GetType ()); } // ToSqlInt16 () AssertEquals ("#M01D", (short)250, Test1.ToSqlInt16 ().Value); AssertEquals ("#M02D", (short)0, Test0.ToSqlInt16 ().Value); try { SqlInt16 test = Test2.ToSqlInt16().Value; Fail ("#M03D"); } catch (Exception e) { AssertEquals ("#M04D", typeof (OverflowException), e.GetType ()); } // ToSqlInt32 () AssertEquals ("#M01E", (int)250, Test1.ToSqlInt32 ().Value); AssertEquals ("#M02E", (int)0, Test0.ToSqlInt32 ().Value); try { SqlInt32 test = Test2.ToSqlInt32 ().Value; Fail ("#M03E"); } catch (Exception e) { AssertEquals ("#M04E", typeof (OverflowException), e.GetType ()); } // ToSqlInt64 () AssertEquals ("#M01F", (long)250, Test1.ToSqlInt64 ().Value); AssertEquals ("#M02F", (long)0, Test0.ToSqlInt64 ().Value); try { SqlInt64 test = Test3.ToSqlInt64 ().Value; Fail ("#M03F"); } catch (Exception e) { AssertEquals ("#M04F", typeof (OverflowException), e.GetType ()); } // ToSqlMoney () AssertEquals ("#M01G", (decimal)250, Test1.ToSqlMoney ().Value); AssertEquals ("#M02G", (decimal)0, Test0.ToSqlMoney ().Value); try { SqlMoney test = Test3.ToSqlMoney ().Value; Fail ("#M03G"); } catch (Exception e) { AssertEquals ("#M04G", typeof (OverflowException), e.GetType ()); } // ToSqlString () AssertEquals ("#M01H", "250", Test1.ToSqlString ().Value); AssertEquals ("#M02H", "0", Test0.ToSqlString ().Value); AssertEquals ("#M03H", "6,4E+17", Test2.ToSqlString ().Value); // ToString () AssertEquals ("#M01I", "250", Test1.ToString ()); AssertEquals ("#M02I", "0", Test0.ToString ()); AssertEquals ("#M03I", "6,4E+17", Test2.ToString ()); } // OPERATORS public void TestArithmeticOperators() { SqlSingle Test0 = new SqlSingle (0); SqlSingle Test1 = new SqlSingle (24e11); SqlSingle Test2 = new SqlSingle (64e32); SqlSingle Test3 = new SqlSingle (12e11); SqlSingle Test4 = new SqlSingle (1e10); SqlSingle Test5 = new SqlSingle (2e10); // "+"-operator AssertEquals ("#N01", (SqlSingle)3e10, Test4 + Test5); try { SqlSingle test = SqlSingle.MaxValue + SqlSingle.MaxValue; Fail ("#N02"); } catch (Exception e) { AssertEquals ("#N03", typeof (OverflowException), e.GetType ()); } try { SqlSingle test = SqlSingle.MaxValue + SqlSingle.MaxValue; } catch (Exception e) { AssertEquals ("#N03a", typeof (OverflowException), e.GetType ()); } // "/"-operator AssertEquals ("#N04", (SqlSingle)2, Test1 / Test3); try { SqlSingle test = Test3 / Test0; Fail ("#N05"); } catch (Exception e) { AssertEquals ("#N06", typeof (DivideByZeroException), e.GetType ()); } // "*"-operator AssertEquals ("#N07", (SqlSingle)2e20, Test4 * Test5); try { SqlSingle test = SqlSingle.MaxValue * Test1; Fail ("#N08"); } catch (Exception e) { AssertEquals ("#N09", typeof (OverflowException), e.GetType ()); } // "-"-operator AssertEquals ("#N10", (SqlSingle)12e11, Test1 - Test3); try { SqlSingle test = SqlSingle.MinValue - SqlSingle.MaxValue; Fail ("#N11"); } catch (Exception e) { AssertEquals ("#N12", typeof (OverflowException), e.GetType ()); } } public void TestThanOrEqualOperators() { SqlSingle Test1 = new SqlSingle (1e14); SqlSingle Test2 = new SqlSingle (9.7e11); SqlSingle Test22 = new SqlSingle (9.7e11); SqlSingle Test3 = new SqlSingle (2e22); // == -operator Assert ("#O01", (Test2 == Test22).Value); Assert ("#O02", !(Test1 == Test2).Value); Assert ("#O03", (Test1 == SqlSingle.Null).IsNull); // != -operator Assert ("#O04", !(Test2 != Test22).Value); Assert ("#O05", (Test2 != Test3).Value); Assert ("#O06", (Test1 != Test3).Value); Assert ("#O07", (Test1 != SqlSingle.Null).IsNull); // > -operator Assert ("#O08", (Test1 > Test2).Value); Assert ("#O09", !(Test1 > Test3).Value); Assert ("#O10", !(Test2 > Test22).Value); Assert ("#O11", (Test1 > SqlSingle.Null).IsNull); // >= -operator Assert ("#O12", !(Test1 >= Test3).Value); Assert ("#O13", (Test3 >= Test1).Value); Assert ("#O14", (Test2 >= Test22).Value); Assert ("#O15", (Test1 >= SqlSingle.Null).IsNull); // < -operator Assert ("#O16", !(Test1 < Test2).Value); Assert ("#O17", (Test1 < Test3).Value); Assert ("#O18", !(Test2 < Test22).Value); Assert ("#O19", (Test1 < SqlSingle.Null).IsNull); // <= -operator Assert ("#O20", (Test1 <= Test3).Value); Assert ("#O21", !(Test3 <= Test1).Value); Assert ("#O22", (Test2 <= Test22).Value); Assert ("#O23", (Test1 <= SqlSingle.Null).IsNull); } public void TestUnaryNegation() { SqlSingle Test = new SqlSingle (2000000001); SqlSingle TestNeg = new SqlSingle (-3000); SqlSingle Result = -Test; AssertEquals ("#P01", (float)(-2000000001), Result.Value); Result = -TestNeg; AssertEquals ("#P02", (float)3000, Result.Value); } public void TestSqlBooleanToSqlSingle() { SqlBoolean TestBoolean = new SqlBoolean (true); SqlSingle Result; Result = (SqlSingle)TestBoolean; AssertEquals ("#Q01", (float)1, Result.Value); Result = (SqlSingle)SqlBoolean.Null; Assert ("#Q02", Result.IsNull); } public void TestSqlDoubleToSqlSingle() { SqlDouble Test = new SqlDouble (12e12); SqlSingle TestSqlSingle = (SqlSingle)Test; AssertEquals ("R01", 12e12f, TestSqlSingle.Value); } public void TestSqlSingleToSingle() { SqlSingle Test = new SqlSingle (12e12); Single Result = (Single)Test; AssertEquals ("#S01", 12e12f, Result); } public void TestSqlStringToSqlSingle() { SqlString TestString = new SqlString ("Test string"); SqlString TestString100 = new SqlString ("100"); AssertEquals ("#T01", (float)100, ((SqlSingle)TestString100).Value); try { SqlSingle test = (SqlSingle)TestString; Fail ("#T02"); } catch(Exception e) { AssertEquals ("#T03", typeof (FormatException), e.GetType ()); } } public void TestByteToSqlSingle() { short TestShort = 14; AssertEquals ("#U01", (float)14, ((SqlSingle)TestShort).Value); } public void TestSqlDecimalToSqlSingle() { SqlDecimal TestDecimal64 = new SqlDecimal (64); AssertEquals ("#V01", (float)64, ((SqlSingle)TestDecimal64).Value); AssertEquals ("#V02", SqlSingle.Null, ((SqlSingle)SqlDecimal.Null)); } public void TestSqlIntToSqlSingle() { SqlInt16 Test64 = new SqlInt16 (64); SqlInt32 Test640 = new SqlInt32 (640); SqlInt64 Test64000 = new SqlInt64 (64000); AssertEquals ("#W01", (float)64, ((SqlSingle)Test64).Value); AssertEquals ("#W02", (float)640, ((SqlSingle)Test640).Value); AssertEquals ("#W03", (float)64000, ((SqlSingle)Test64000).Value); } public void TestSqlMoneyToSqlSingle() { SqlMoney TestMoney64 = new SqlMoney(64); AssertEquals ("#X01", (float)64, ((SqlSingle)TestMoney64).Value); } public void TestSingleToSqlSingle() { Single TestSingle64 = 64; AssertEquals ("#Y01", (float)64, ((SqlSingle)TestSingle64).Value); } } } --------------Boundary-00=_9J81Q4SJEI1WJU3ITS3O-- From ianm@ActiveState.com Tue Oct 15 19:11:27 2002 From: ianm@ActiveState.com (Ian MacLean) Date: Tue, 15 Oct 2002 11:11:27 -0700 Subject: [Mono-list] Building NAnt on Linux References: <1034708318.9721.4.camel@gonzo.lan> Message-ID: <3DAC5A4F.8000903@activestate.com> Giuseppe, I'm in the process of getting the latest NAnt compiling on mono. I've got it building with a makefile and I'll have it building itself on mono shortly. There are just some platform dependency issues to sort thru. Ian >Hi, > >Does anybody know if it is possible to >compile NAnt on Linux? > >I tryed, but I got the following errors: > >** (bin/NAnt.exe:9788): WARNING **: Could not find assembly >System.Windows.Forms > >** (bin/NAnt.exe:9788): WARNING **: Could not find assembly NUnitCore > >** (bin/NAnt.exe:9788): WARNING **: Could not find assembly NAnt.Core >Can not open image bin/NAnt.exe > >I downloaded the last version of NAnt from >nant.sourceforge.net. > > > From rodrigo@ximian.com Tue Oct 15 19:16:34 2002 From: rodrigo@ximian.com (Rodrigo Moya) Date: 15 Oct 2002 20:16:34 +0200 Subject: [Mono-list] Test for SqlSingle In-Reply-To: <200210151959.33575.vi64pa@koti.soon.fi> References: <200210151959.33575.vi64pa@koti.soon.fi> Message-ID: <1034705794.25419.12.camel@localhost> On Tue, 2002-10-15 at 18:59, ville wrote: > here it is > applied to CVS. thanks -- Rodrigo Moya From Neale.Ferguson@SoftwareAG-USA.com Tue Oct 15 20:12:24 2002 From: Neale.Ferguson@SoftwareAG-USA.com (Ferguson, Neale) Date: Tue, 15 Oct 2002 15:12:24 -0400 Subject: [Mono-list] invoke_trap Message-ID: <9A4FC925410C024792B85198DF1E97E403F45A5A@usmsg03.sagus.com> This message is in MIME format. Since your mail reader does not understand this format, some or all of this message may not be legible. ------_=_NextPart_001_01C2747E.CB77E9D0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable I am trying to work out why S390 doesn't pass the thread5 test. I've = found that the variable frame->invoke_trap is 0 and so in ves_exec_method = when a throw is encountered. Tracing x86 I see that when ves_exec_method is = entered for MyThreadStart the following situation exists: =20 Breakpoint 2, ves_exec_method (frame=3D0xbf5ff84c) at interp.c:1249 (gdb) p *frame $2 =3D {parent =3D 0xbf5ff9e4, child =3D 0x0, method =3D 0x818c780, retval =3D 0xbf5ff9d8, obj =3D 0x0, locals =3D 0x0, args =3D 0x0, stack_args =3D 0xbf5ff9d8, stack =3D 0xbf5ff89c, invoke_trap =3D 0, ip =3D 0x80eb114 "=FC=AF\016\b8`\001@=C0=BC", ex =3D 0x0, ex_handler = =3D 0x0} (gdb) p *frame->parent $3 =3D {parent =3D 0x0, child =3D 0x0, method =3D 0x818c958, retval =3D = 0xbf5ff9d8, obj =3D 0x8107c30, locals =3D 0x8107c00 "=C4c\022\b", args =3D 0x809eccd "[\201=C3G=C4\004", stack_args =3D 0xbf5ff9d8, = stack =3D 0x8093b10, invoke_trap =3D -1084229080, ip =3D 0x80ca628 = "\211=C0\211E=FC\213U=FC\211=D0=EB", ex =3D 0x0, ex_handler =3D 0x0} Now the value -104229080 looks like an uninitialized area of storage. = Within the source, I can only find invoke_trap being set to 0 (in the = INIT_FRAME macro) or 1 (in interp_mono_runtime_invoke). So, is thread5's passing = due to serendipity or am I missing something? =20 =20 Neale ------_=_NextPart_001_01C2747E.CB77E9D0 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
I am = trying to work=20 out why S390 doesn't pass the thread5 test. I've found that the = variable frame->invoke_trap is 0 = and so in=20 ves_exec_method when = a throw is=20 encountered. Tracing x86 I see that when ves_exec_method is entered for MyThreadStart the following situation=20 exists:
 
Breakpoint=20 2, ves_exec_method (frame=3D0xbf5ff84c) at interp.c:1249
(gdb) p = *frame
$2 =3D=20 {parent =3D 0xbf5ff9e4, child =3D 0x0, method =3D 0x818c780,
  = retval =3D=20 0xbf5ff9d8, obj =3D 0x0, locals =3D 0x0, args =3D 0x0,
  = stack_args =3D=20 0xbf5ff9d8, stack =3D 0xbf5ff89c, invoke_trap =3D 0,
  ip =3D = 0x80eb114=20 "=FC=AF\016\b8`\001@=C0=BC", ex =3D 0x0, ex_handler =3D 0x0}
(gdb) p = *frame->parent
$3 =3D {parent =3D 0x0, child =3D 0x0, method =3D = 0x818c958, retval=20 =3D 0xbf5ff9d8,
  obj =3D 0x8107c30, locals =3D 0x8107c00=20 "=C4c\022\b",
  args =3D 0x809eccd "[\201=C3G=C4\004", = stack_args =3D 0xbf5ff9d8,=20 stack =3D 0x8093b10,
  invoke_trap =3D -1084229080
, ip =3D 0x80ca628=20 "\211=C0\211E=FC\213U=FC\211=D0=EB",
  ex =3D 0x0, ex_handler = =3D=20 0x0}

Now the value=20 -104229080 looks like an uninitialized area of storage. Within the = source, I can=20 only find invoke_trap = being set to=20 0 (in the INIT_FRAME=20 macro) or 1 (in interp_mono_runtime_invoke). So, = is thread5's passing=20  due to serendipity or am I missing = something?
 
 
Neale
------_=_NextPart_001_01C2747E.CB77E9D0-- From Hywel@controlspecials.demon.co.uk Tue Oct 15 22:42:42 2002 From: Hywel@controlspecials.demon.co.uk (H.W.Thomas) Date: Tue, 15 Oct 2002 21:42:42 -0000 Subject: [Mono-list] RE: Mono-list digest, Vol 1 #549 - 24 msgs In-Reply-To: <200210140846.g9E8k9o32369@trna.ximian.com> Message-ID: Robin, After much hassle (I'll elaborate sometime) I've got Mandrake running and dhcp installed. However, it fails on bootup with the message (from /var/log/messages) "dhcpd: can't parse standard ddns updater!" Your red book describes roughly what it's doing with the dynamic dns entries, but no detail on setting up config files etc. (Why haven't you had this problem?!) Can any of your networking experts point me in the right direction, ie what file is it trying to parse, and what format should it be. All the Mandrake wizards seem to complete OK, and I can do a "host localhost" OK, so Bind appears to be running with the default configuration. In hope, Hywel -----Original Message----- From: mono-list-admin@ximian.com [mailto:mono-list-admin@ximian.com] Sent: 14 October 2002 08:46 To: mono-list@ximian.com Subject: Mono-list digest, Vol 1 #549 - 24 msgs Send Mono-list mailing list submissions to mono-list@ximian.com To subscribe or unsubscribe via the web, visit http://lists.ximian.com/mailman/listinfo/mono-list or, via email, send a message with subject or body 'help' to mono-list-request@ximian.com You can reach the person managing the list at mono-list-admin@ximian.com When replying, please edit your Subject line so it is more specific than "Re: Contents of Mono-list digest..." Today's Topics: 1. RE: ODBC.NET Provider on Windows (Rodrigo Moya) 2. Re: Help needed with XSLT transformations (documentation browser) (Scott Bronson) 3. RE: Help needed with XSLT transformations(documentation browser) (Piers Haken) 4. Re: Help needed with XSLT transformations(documentation browser) (Adam Treat) 5. Re: Help needed with XSLT transformations (documentation browser) (Adam Treat) 6. Re: Help needed with XSLT transformations (documentation browser) (Miguel de Icaza) 7. Re: Help needed with XSLT transformations (documentation browser) (Miguel de Icaza) 8. Re: Help needed with XSLT transformations (documentation browser) (Scott Bronson) 9. Re: Help needed with XSLT transformations (documentation browser) (Scott Bronson) 10. CNet Article "C# Standardization Moves Ahead" (ISO C# and CLI) (Daniel Morgan) 11. Re: CNet Article "C# Standardization Moves Ahead" (ISO C# and CLI) (Guenther Roith) 12. MacOS X and nonresponsiveness (John Duncan) 13. Update of SQL# and the MySQL ADO.NET Provider in Mono (Daniel Morgan) 14. Any info on MACTripleDES or PKCS1MaskGenerationMethod ? (Sebastien Pouliot) 15. RE: SchemaTable support (Brian Ritchie) 16. ODBC.NET Data Provider Update (Brian Ritchie) 17. Re: Help needed with XSLT transformations (documentation browser) (Scott Bronson) 18. Re: Patch for bugzilla 31265, plus some pthreads (Tim Haynes) --__--__-- Message: 1 Subject: RE: [Mono-list] ODBC.NET Provider on Windows From: Rodrigo Moya To: Brian Ritchie Cc: danmorg@sc.rr.com, Mono List Organization: Date: 12 Oct 2002 13:55:17 +0200 On Sat, 2002-10-12 at 07:57, Brian Ritchie wrote: > Great news!! > > I'm "power-leveling" the odbc code... > - I've jacked in the transaction objects > - I'm straightening out all of the SQL data type mappings. > - DBNull works > - I've implemented the Cancel method > > Do we have a #define to force conditional compilation on Linux/Windows? I'd > like to setup the libodbc to point at odbc32 on windows. Or is there a > better way? > I think using a config entry for mapping the library names is the correct way. Other people will tell you for sure. > I'll be checking this stuff in this weekend. > cool! Thanks a lot for your work cheers -- Rodrigo Moya --__--__-- Message: 2 Subject: Re: [Mono-list] Help needed with XSLT transformations (documentation browser) From: Scott Bronson To: Miguel de Icaza , mono-list@ximian.com, Adam Treat <1034423173.1574.32.camel@emma> Date: 12 Oct 2002 12:55:08 -0700 On Sat, 2002-10-12 at 04:46, Scott Bronson wrote: > Here is a very, very, VERY basic start. Don't expect much. It's a > super quick demo that shows a little of what's possible. Whoops, sorry guys. I didn't realize Evo quoted the entire Types.xml file in the reply. Weird. I'll try to keep mailbombs to a minimum in the future... My questions, a bit more lucid: 1) How do you want the transformed data stored? Need to know this to know how to generate URLs. 2) What sort of output do you want? Right now, I'm just shoving out some really bad HTML. I figure you'll want some sort of parseable XML or at the very least presentable CSS/xhtml. Have you got an example of what you want? 3) Where can I find the other XML files? Is there a DTD or spec or something? I've only tested against Types.xml. --__--__-- Message: 3 charset="US-ASCII" Subject: RE: [Mono-list] Help needed with XSLT transformations(documentation browser) Date: Sat, 12 Oct 2002 15:44:30 -0700 From: "Piers Haken" To: "Scott Bronson" , "Miguel de Icaza" , , "Adam Treat" The file you're looking for is ftp://ftp.ecma.ch/ecma-st/Ecma-335-xml.zip It contains the whole spec as one file: All.xml. Piers. > -----Original Message----- > From: Scott Bronson [mailto:bronson@rinspin.com] > Sent: Saturday, October 12, 2002 12:55 PM > To: Miguel de Icaza; mono-list@ximian.com; Adam Treat > Subject: Re: [Mono-list] Help needed with XSLT > transformations(documentation browser) > > > On Sat, 2002-10-12 at 04:46, Scott Bronson wrote: > > Here is a very, very, VERY basic start. Don't expect much. It's a > > super quick demo that shows a little of what's possible. > > Whoops, sorry guys. I didn't realize Evo quoted the entire > Types.xml file in the reply. Weird. I'll try to keep > mailbombs to a minimum in the future... > > > My questions, a bit more lucid: > > 1) How do you want the transformed data stored? > Need to know this to know how to generate URLs. > > 2) What sort of output do you want? Right now, I'm just shoving > out some really bad HTML. I figure you'll want some sort of > parseable XML or at the very least presentable CSS/xhtml. > Have you got an example of what you want? > > 3) Where can I find the other XML files? Is there a DTD or spec > or something? I've only tested against Types.xml. > > > > > _______________________________________________ > Mono-list maillist - Mono-list@ximian.com > http://lists.ximian.com/mailman/listinfo/mono-list > --__--__-- Message: 4 charset="iso-8859-1" From: Adam Treat Reply-To: manyoso@yahoo.com To: "Piers Haken" , "Scott Bronson" , "Miguel de Icaza" , Subject: Re: [Mono-list] Help needed with XSLT transformations(documentation browser) Date: Sat, 12 Oct 2002 18:41:00 -0400 Well, no. Miguel is placing the All.xml into the monodoc module where every type is broken out into its own file. Please have a look in the cvs monodoc module for other examples. Adam On Saturday 12 October 2002 06:44 pm, Piers Haken wrote: > The file you're looking for is > ftp://ftp.ecma.ch/ecma-st/Ecma-335-xml.zip > > It contains the whole spec as one file: All.xml. > > Piers. > > > -----Original Message----- > > From: Scott Bronson [mailto:bronson@rinspin.com] > > Sent: Saturday, October 12, 2002 12:55 PM > > To: Miguel de Icaza; mono-list@ximian.com; Adam Treat > > Subject: Re: [Mono-list] Help needed with XSLT > > transformations(documentation browser) > > > > On Sat, 2002-10-12 at 04:46, Scott Bronson wrote: > > > Here is a very, very, VERY basic start. Don't expect much. It's a > > > super quick demo that shows a little of what's possible. > > > > Whoops, sorry guys. I didn't realize Evo quoted the entire > > Types.xml file in the reply. Weird. I'll try to keep > > mailbombs to a minimum in the future... > > > > > > My questions, a bit more lucid: > > > > 1) How do you want the transformed data stored? > > Need to know this to know how to generate URLs. > > > > 2) What sort of output do you want? Right now, I'm just shoving > > out some really bad HTML. I figure you'll want some sort of > > parseable XML or at the very least presentable CSS/xhtml. > > Have you got an example of what you want? > > > > 3) Where can I find the other XML files? Is there a DTD or spec > > or something? I've only tested against Types.xml. > > > > > > > > > > _______________________________________________ > > Mono-list maillist - Mono-list@ximian.com > > http://lists.ximian.com/mailman/listinfo/mono-list --__--__-- Message: 5 charset="iso-8859-1" From: Adam Treat Reply-To: manyoso@yahoo.com To: Scott Bronson , Miguel de Icaza , mono-list@ximian.com Subject: Re: [Mono-list] Help needed with XSLT transformations (documentation browser) Date: Sat, 12 Oct 2002 18:54:54 -0400 On Saturday 12 October 2002 03:55 pm, Scott Bronson wrote: > On Sat, 2002-10-12 at 04:46, Scott Bronson wrote: > > Here is a very, very, VERY basic start. Don't expect much. It's a > > super quick demo that shows a little of what's possible. > > Whoops, sorry guys. I didn't realize Evo quoted the entire Types.xml > file in the reply. Weird. I'll try to keep mailbombs to a minimum in > the future... > > > My questions, a bit more lucid: > > 1) How do you want the transformed data stored? > Need to know this to know how to generate URLs. IMHO, every type should have it's own file. Miguel would probably want every member to have it's own file too, but am not sure about that. Many people are clamoring for an msdn like documentation and this would require members to be broken out into individual html files, but many others like javadoc style... So for linking you'd probably have something like Object > 2) What sort of output do you want? Right now, I'm just shoving > out some really bad HTML. I figure you'll want some sort of > parseable XML or at the very least presentable CSS/xhtml. > Have you got an example of what you want? My preference is css/xhtml or compliant css/html ie, it should follow web standards and work in all major browsers. > 3) Where can I find the other XML files? Is there a DTD or spec > or something? I've only tested against Types.xml. The monodoc module in cvs. --__--__-- Message: 6 Subject: Re: [Mono-list] Help needed with XSLT transformations (documentation browser) From: Miguel de Icaza To: Scott Bronson Cc: mono-list@ximian.com, Adam Treat <1034423173.1574.32.camel@emma> <1034452509.4349.26.camel@emma> Organization: Date: 12 Oct 2002 18:59:37 -0400 Hello! > My questions, a bit more lucid: > > 1) How do you want the transformed data stored? > Need to know this to know how to generate URLs. Well, the various "scripts" should be used to generate different presentations (class info, complete class dumping, specific member, member summary). So just assume that you can jump to all of those entry points. I would like to only ship the XML files, and have our documentation browser generate the various presentations on the flight using the XSLT transformations. > 2) What sort of output do you want? Right now, I'm just shoving > out some really bad HTML. I figure you'll want some sort of > parseable XML or at the very least presentable CSS/xhtml. > Have you got an example of what you want? CSS/HTML I think is best, feel free to use CSS liberally, and I will nicely ask Jakub from Ximian to design a nice look for the documentation. Structurally-wise, I think that following the MSDN model is sound. > 3) Where can I find the other XML files? Is there a DTD or spec > or something? I've only tested against Types.xml. I have now checked in all the XML files into the Mono CVS repository in the module `monodoc' (I had forgotten to push it to the anoncvs servers, but am forcing a push right now). Miguel --__--__-- Message: 7 Subject: Re: [Mono-list] Help needed with XSLT transformations (documentation browser) From: Miguel de Icaza To: Adam Treat Cc: Scott Bronson , mono-list@ximian.com <1034423173.1574.32.camel@emma> <1034452509.4349.26.camel@emma> <200210121854.54859.manyoso@yahoo.com> Organization: Date: 12 Oct 2002 19:00:41 -0400 Hello! > member to have it's own file too, but am not sure about that. Many people > are clamoring for an msdn like documentation and this would require members > to be broken out into individual html files, but many others like javadoc > style... > > So for linking you'd probably have something like href="RelativePath/System.Object.html">Object Do not worry too much about the a href, since we are going to be the ones parsing this information on the flight, just make up something, as we will be the ones resolving the link anyways: Miguel --__--__-- Message: 8 Subject: Re: [Mono-list] Help needed with XSLT transformations (documentation browser) From: Scott Bronson To: manyoso@yahoo.com Cc: Miguel de Icaza , mono-list@ximian.com <1034423173.1574.32.camel@emma> <1034452509.4349.26.camel@emma> <200210121854.54859.manyoso@yahoo.com> Date: 12 Oct 2002 16:05:39 -0700 On Sat, 2002-10-12 at 15:54, Adam Treat wrote: > On Saturday 12 October 2002 03:55 pm, Scott Bronson wrote: > > 2) What sort of output do you want? Right now, I'm just shoving > > out some really bad HTML. > My preference is css/xhtml or compliant css/html ie, it should follow web > standards and work in all major browsers. OK, I can definitely do the XSLT. I'm not a web designer though. High quality HTML/CSS is not in my toolbox. If you guys could send me a style sheet and a *tiny* example of an HTML file showing the desired colors, headings, font choices, tables spacing, etc., I can use that as a guide to generate the rest. - Scott --__--__-- Message: 9 Subject: Re: [Mono-list] Help needed with XSLT transformations (documentation browser) From: Scott Bronson To: Miguel de Icaza Cc: mono-list@ximian.com, Adam Treat <1034423173.1574.32.camel@emma> <1034452509.4349.26.camel@emma> <1034463576.14577.444.camel@erandi.boston.ximian.com> Date: 12 Oct 2002 16:21:47 -0700 OK, that's enough to get me started. I'm looking forward to Jakub's style sheet... - Scott On Sat, 2002-10-12 at 15:59, Miguel de Icaza wrote: > Hello! > > > My questions, a bit more lucid: > > > > 1) How do you want the transformed data stored? > > Need to know this to know how to generate URLs. > > Well, the various "scripts" should be used to generate different > presentations (class info, complete class dumping, specific member, > member summary). So just assume that you can jump to all of those entry > points. > > I would like to only ship the XML files, and have our documentation > browser generate the various presentations on the flight using the XSLT > transformations. > > > 2) What sort of output do you want? Right now, I'm just shoving > > out some really bad HTML. I figure you'll want some sort of > > parseable XML or at the very least presentable CSS/xhtml. > > Have you got an example of what you want? > > CSS/HTML I think is best, feel free to use CSS liberally, and I will > nicely ask Jakub from Ximian to design a nice look for the > documentation. > > Structurally-wise, I think that following the MSDN model is sound. > > > 3) Where can I find the other XML files? Is there a DTD or spec > > or something? I've only tested against Types.xml. > > I have now checked in all the XML files into the Mono CVS repository in > the module `monodoc' (I had forgotten to push it to the anoncvs servers, > but am forcing a push right now). > > Miguel > --__--__-- Message: 10 From: "Daniel Morgan" To: "Mono-List" Date: Sun, 13 Oct 2002 02:38:14 -0400 charset="iso-8859-1" Subject: [Mono-list] CNet Article "C# Standardization Moves Ahead" (ISO C# and CLI) CNet news.com "C# standardization moves ahead" By Stephen Shankland The news article is at: http://news.com.com/2100-1001-961737.html However, I found the link at: http://developers.slashdot.org/developers/02/10/11/150256.shtml?tid=156 Some interesting tid bits I found I have commented on below. "Last week, an ISO subcommittee cleared the way for final ratification by the full ISO of C# and the required underpinnings called the Common Language Infrastructure (CLI), said John Montgomery, group product manager for the .Net Developer Platform at Microsoft." Cool. ISO C# and CLI standards. "Analysts said the C# and CLI submissions from Microsoft to ECMA and now ISO define only a subset of the .Net Framework that makes it possible to share data with applications on other operating systems. Not included, for example, is software needed to define a Windows or Web graphical user interface... Also missing from the submission is the .Net code needed to access databases" And I'm sure there are many other neccessary pieces missing from the C# and CLI submissions. What are they? Good thing Mono is implementing many of these missing pieces, such as, Windows Forms based on winelib, ASP.NET, and ADO.NET. "Microsoft is... including the .Net Framework, with Service Pack 1 for the Windows XP operating system." I never did like "Service Packs" to include new fuctionality. They should only contain bug fixes. However, we know that .NET will be included with any new operating systems from Microsoft now. Those new operating systems will not contain Java. If you want Java, you will have to download it. Microsoft has also "released a version of the CLI--the software apparatus to run C# programs--under its "shared source" license. That license permits people to see how Microsoft programmers wrote the software and to tinker with it, but not to sell products using it." However, Microsoft is considering to allow people to sell products with the shared-source CLI for a price. "Microsoft has attracted some unusual allies to C# and the CLI, including advocates of open-source software who often are opposed to Microsoft's proprietary approach to software. Among the allies is desktop Linux specialist Ximian, which with help from Hewlett-Packard and Intel is working to clone much of the C# environment in a project called Mono." I didn't realize that HP (or is it HPQ now?) and Intel were helping Ximian with Mono. Is this true? Moreover, those are my thoughts on the article, what do you think? --__--__-- Message: 11 From: groith@tcrz.net (Guenther Roith) To: "Daniel Morgan" Cc: "mono-list" Subject: Re: [Mono-list] CNet Article "C# Standardization Moves Ahead" (ISO C# and CLI) Date: Sun, 13 Oct 2002 09:21:44 +0200 charset="iso-8859-1" > "Microsoft has attracted some unusual allies to C# and the CLI, including > advocates of open-source software who often are opposed to Microsoft's > proprietary approach to software. Among the allies is desktop Linux > specialist Ximian, which with help from Hewlett-Packard and Intel is working > to clone much of the C# environment in a project called Mono." > > I didn't realize that HP (or is it HPQ now?) and Intel were helping Ximian > with Mono. Is this true? That was the reason for BSD-license change in January. But I don't know if it helped ;-) Johannes --__--__-- Message: 12 Date: Sun, 13 Oct 2002 10:27:47 -0400 From: John Duncan To: mono-list@ximian.com Subject: [Mono-list] MacOS X and nonresponsiveness Hi Everyone, I thought I should mention my general reason for not responding to messages regarding MacOS X development. I've been keeping the messages and I intend to respond to them provided they are not outdated when I get to doing so. But I've been going through some tough personal times and I haven't been able to do any development, let alone mono, recently. Sorry for the immense delays. John --__--__-- Message: 13 From: "Daniel Morgan" To: "Mono-List" Date: Sun, 13 Oct 2002 17:17:05 -0400 charset="iso-8859-1" Subject: [Mono-list] Update of SQL# and the MySQL ADO.NET Provider in Mono Hey, For those wanting to see SQL# using the MySQL ADO.NET Provider working in Mono. SQL# has better formatting of the output then it did before. It was buggy before. Numbers are right-justified now. DateTime is expressed in ISO format "YYYY-MM-DD HH:MM:SS". Any column longer than 32 characters is truncated to 32 characters. Here is the output of running it: DanielMorgan@DANPC ~/mono/mcs/class/System.Data/Test $ mcs SqlSharpCli.cs -r System.Data.dll Compilation succeeded DanielMorgan@DANPC ~/mono/mcs/class/System.Data/Test $ mono SqlSharpCli.exe Welcome to SQL#. The interactive SQL command-line client for Mono.Data. See http://www.go-mono.com/ for more details. Type: \Q to quit \ConnectionString to set the ConnectionString \Provider to set the Provider: {OleDb,SqlClient,MySql,Odbc, Oracle,PostgreSql,Sqlite) \Open to open the connection \Close to close the connection \Execute to execute SQL command(s)/queries(s) \h to show this help. \defaults to show default variables. The default Provider is POSTGRESQL The default ConnectionString is: "host=localhost;dbname=test;user=postgres" SQL# \provider mysql The default Provider is LOADEXTPROVIDER Assembly: Mono.Data.MySql Connection Class: Mono.Data.MySql.MySqlConnection SQL# \connectionstring dbname=test SQL# \open Attempt to open connection... Loading external provider... External provider loaded. Open was successfull. SQL# select int_value,datetime_value,text_value,double_value SQL# from mono_mysql_test SQL# \e Execute SQL: select int_value,datetime_value,text_value,double_value from mono_mysql_test Display any result sets... Display the result set 1 Fields in Query Result: 4 int_value datetime_value text_value double_value ========= =================== ========== ============ 777 2002-12-31 11:15:07 smell 2.2 4 2002-12-31 11:15:07 smell 2.2 94 2003-11-23 10:24:45 nope 92.2 Rows retrieved: 3 SQL# --__--__-- Message: 14 Date: Sun, 13 Oct 2002 19:15:21 -0400 From: Sebastien Pouliot To: mono-list Reply-to: Sebastien Pouliot Subject: [Mono-list] Any info on MACTripleDES or PKCS1MaskGenerationMethod ? Hello all, 1. MACTripleDES I'm a little confused by MACTripleDES as there are many variant out there (CBC, CFB, with/without IV, encrypting the last block, ...) depending which standard you choose from: like FIPS81, FIPS113 and ANSI X9.19. Has any body used this class to exchange data with another system (not using the .NET framework)? 2. PKCS1MaskGenerationMethod This one is a bugger! I couldn't find a single sample using this class on the net. This isn't surprising because it normally only used when encrypting a value (using RSA) which is something that we can't do using the framework (as RSACryptoServiceProvider.EncryptValue throws a NotSupportedException). Right now I'm beginning to doubt that Microsoft is using this class in the framework as all their asymmetric crypto comes from CryptoAPI (unmanaged) why do they need this class ? Anyway I'll commit the "pkcs official" version (the one that generate the same output as the test vectors supplied with PKCS#1) as it is required for other PKCS#1 related classes. But we may have to change this IF i'm wrong! Sebastien Pouliot Security Architect, Motus Technologies, http://www.motus.com/ work: spouliot@motus.com home: spouliot@videotron.ca --__--__-- Message: 15 From: "Brian Ritchie" To: danmorg@sc.rr.com, mono-list@ximian.com Subject: RE: [Mono-list] SchemaTable support Date: Mon, 14 Oct 2002 00:06:25 -0400 Daniel, I've implemented the SchemaTable support using your MySQL code as a guide. I need to move the following line directly under the NewRow(): dataTableSchema.Rows.Add (schemaRow); It was throwing the following exception: System.Data.RowNotInTableException: Cannot perform this operation on a row not in the table. I was using the MS.NET System.Data when I got the exception. The Mono class must not be checking for this. Brian _________________________________________________________________ MSN Photos is the easiest way to share and print your photos: http://photos.msn.com/support/worldwide.aspx --__--__-- Message: 16 From: "Brian Ritchie" To: mono-list@ximian.com Date: Mon, 14 Oct 2002 01:00:18 -0400 Subject: [Mono-list] ODBC.NET Data Provider Update For those that are following the life and times of the ODBC provider... I've updated the provider significantly. It should now work on Linux and Windows. SqlSharp has also been updated to work with the provider. Here's the low down... - Added OdbcTransaction Object and moved transaction logic out of connection and into new object. - Support for DSN-less connection strings - Fixed OdbcType enum to have correct values - General cleanup on all objects - Implemented Cancel in OdbcCommand - Added DBNull support - Updated OdbcType enum with values from header files. - Modified column description code to happen dynamically as a column is accessed instead of describing all columns when the query opens - Works with SqlSharp - Implemented GetSchemaTable for OdbcDataReader Known Issues: - Transaction Isolation Level isn't handled - A number of data types are returned as strings instead of native types - Parameter support is weak -- only supports int types - ExecuteReader: CommandBehavior isn't implemented - ExecuteScalar not implemented - Need better error handling Happy Hacking... Brian _________________________________________________________________ Join the world’s largest e-mail service with MSN Hotmail. http://www.hotmail.com --__--__-- Message: 17 Subject: Re: [Mono-list] Help needed with XSLT transformations (documentation browser) From: Scott Bronson To: Miguel de Icaza Cc: mono-list@ximian.com, Adam Treat <1034423173.1574.32.camel@emma> <1034452509.4349.26.camel@emma> <1034463576.14577.444.camel@erandi.boston.ximian.com> Date: 14 Oct 2002 00:22:39 -0700 --=-MIBDmR7iduu5GJDQEAUq Content-Type: text/plain Content-Transfer-Encoding: 7bit I played around with mscorlib.xml today. Enclosed are some files to generate a really raw set of index pages. On Sat, 2002-10-12 at 15:59, Miguel de Icaza wrote: > Well, the various "scripts" should be used to generate different > presentations (class info, complete class dumping, specific member, > member summary). So just assume that you can jump to all of those entry > points. OK, right now they're generating static html files, locally browsable. All the information needed to generate the files is contained in the link, i.e. > I would like to only ship the XML files, and have our documentation > browser generate the various presentations on the flight using the XSLT > transformations. It takes both Sablotron and xalan C++ the better part of a second just to read in mscorlib.xml (Athlon 1800, 512 Mb RAM). Breakdown: parsing the input files takes 900 ms, the transform takes 150 ms. I can cut this down by doing a pre-transform and caching the results. Where did mscorlib.xml come from? Can we add class summaries to it? Right now, if I want to create a page that lists classes and their summaries > > 3) Where can I find the other XML files? Is there a DTD or spec > > or something? I've only tested against Types.xml. > > I have now checked in all the XML files into the Mono CVS repository in > the module `monodoc' (I had forgotten to push it to the anoncvs servers, > but am forcing a push right now). --=-MIBDmR7iduu5GJDQEAUq Content-Disposition: attachment; filename=generate-index.pl Content-Transfer-Encoding: quoted-printable Content-Type: text/x-perl; name=generate-index.pl; charset=ANSI_X3.4-1968 #!/usr/bin/perl -w my $xml =3D 'mscorlib.xml'; open(FH, "xalan -Q -XSL list-namespaces.xsl -IN $xml |") or die "Could not list namespaces: $!\n"; my @arr =3D ; close FH; print "Generating (root)\n"; system("xalan -Q -XSL show-namespace.xsl -IN $xml -OUT show-namespace.xsl--= [].html") =3D=3D 0 or die "Could not run xalan: returned $?\n"; for(@arr) { chomp; print "Generating $_\n"; system("xalan -Q -XSL show-namespace.xsl -IN $xml -PARAM ns \"'$_'\" -OU= T show-namespace.xsl--[$_].html") =3D=3D 0 or die "Could not run xalan: ret= urned $?\n"; } --=-MIBDmR7iduu5GJDQEAUq-- --__--__-- Message: 18 To: mono-list@ximian.com Subject: Re: [Mono-list] Patch for bugzilla 31265, plus some pthreads <1034351698.17088.105.camel@hagbard.apathetic.discordia.org.uk> From: Tim Haynes Reply-To: thaynes@openlinksw.com (Tim Haynes) Date: Mon, 14 Oct 2002 09:48:55 +0100 (i386-debian-linux-gnu) Dick Porter writes: > On Fri, 2002-10-11 at 15:32, Tim Haynes wrote: >> Also, there was a mono_thread_create, but no mono_thread_attach for >> existing threads). Have copied the mono_thread_create and replaced a >> call t pthread_create() with pthread_self(), which works. There is a >> callback to be called on unhandled exception for example, which now can >> call a user-registerable callback or the original callback (calling >> pthread_exit). The code in the user callback >> mono_thread_attach_aborted_cb should do a longjmp to unwind the stack to >> a frame above any Mono frames. > > Could you explain why this code is needed? Suppose an already multithreaded program needs to host the Mono runtime. In order to issue mono calls from an exitsing thread it needs a mono environment (usually setup by mono_jit_init). But since mono jit_init can only be called once per process, it has to create the environment somehow (or it should create a new thread by calling mono_thread_create, pass the info to its start function and wait for it - but just imagine what it would be like if we create/wait/destry a pthread for each operation!). That's where the mono_thread_attach comes in handy. Cheers, ~Tim -- Product Development Consultant OpenLink Software Tel: +44 (0) 20 8681 7701 Web: Universal Data Access & Data Integration Technology Providers --__--__-- _______________________________________________ Mono-list mailing list Mono-list@ximian.com http://lists.ximian.com/mailman/listinfo/mono-list End of Mono-list Digest From neilcawse@hotmail.com Tue Oct 15 22:19:42 2002 From: neilcawse@hotmail.com (Neil Cawse) Date: Tue, 15 Oct 2002 17:19:42 -0400 Subject: [Mono-list] PInvoke works with ms runtime but not mono BUG?? Message-ID:

I am trying to run a simple windows message pump class under Windows XP using Mono.

When running the following class using mono class1.exe, the app fails to create the hwnd.

Yet running the same class using ms runtime runs perfectly.

Doesnt matter if i compile with mcs or ms compiler - gives same result.

Could it be that the mono jit/mint are not keeping the WNDPROC address fixed?? Not sure - its beyond me.

Can anyone help?

If i can get this to work properly then WOW!

using System;

using System.Runtime.InteropServices;

class Class1

{

static void Main(string[] args)

{

WNDCLASS wc = new WNDCLASS();

wc.style=0;

wc.lpfnWndProc = new WNDPROC(MyWndProc);

wc.hbrBackground = 6;

wc.lpszClassName = "NativeFormClass";

if (RegisterClass(wc)==0)

{

Console.WriteLine("Failed to create window class");

}

else

{

int hwnd = CreateWindowEx(0, "NativeFormClass", "NativeForm",0x10cf0000,

-2147483648, -2147483648, -2147483648, -2147483648,

0, 0,0, 0);

if (hwnd==0)

{

Console.WriteLine("Failed to create HWND");

}

else

{

MSG msgvalue;

while (GetMessage(out msgvalue, 0,0,0))

{

TranslateMessage(ref msgvalue);

DispatchMessage(ref msgvalue);

}

Console.WriteLine("Done");

}

}

}

[DllImport("user32", EntryPoint="GetMessageA", CharSet = CharSet.Ansi)]

static extern bool GetMessage(out MSG msgvalue, int hwnd, int minFilter, int maxFilter);

[DllImport("user32", EntryPoint="DispatchMessageA", CharSet = CharSet.Ansi)]

static extern int DispatchMessage(ref MSG msgvalue);

[DllImport("user32")]

static extern bool TranslateMessage(ref MSG msgValue);

[DllImport("user32", EntryPoint="RegisterClassA", CharSet = CharSet.Ansi)]

static extern int RegisterClass(WNDCLASS wc);

static int MyWndProc (int hWnd, int msgvalue, int wParam, int lParam)

{

int retval = 0;

switch(msgvalue)

{

case 2:

PostQuitMessage(0);

break;

default:

retval = DefWindowProc(hWnd, msgvalue, wParam, lParam);

break;

}

return retval;

}

[StructLayout(LayoutKind.Sequential)]

public struct MSG

{

public int hwnd;

public int message;

public int wParam;

public int lParam;

public int itime;

public int pt_x;

public int pt_y;

}

[DllImport("user32", EntryPoint="PostQuitMessage")]

static extern void PostQuitMessage(int nExitCode);

[DllImport("user32", EntryPoint="DefWindowProcA", CharSet = CharSet.Ansi)]

static extern int DefWindowProc(int hWnd, int msg, int wParam, int lParam);

[DllImport("user32", EntryPoint="CreateWindowExA", CharSet =CharSet.Ansi)]//, CharSet=CharSet.Unicode)]

static extern int CreateWindowEx(int dwExStyle, string lpszClassName, string lpszWindowName,

int style, int x, int y, int width, int height, int hWndParent, int hMenu,

int hInst, int pvParam);

[StructLayout(LayoutKind.Sequential)]

public class WNDCLASS

{

public int style;

public WNDPROC lpfnWndProc;

public int cbClsExtra;

public int cbWndExtra;

public int hInstance;

public int hIcon;

public int hCursor;

public int hbrBackground;

public string lpszMenuName;

public string lpszClassName;

}

public delegate int WNDPROC( int hWnd, int msgvalue, int wParam, int lParam);

}



Surf the Web without missing calls! Get MSN Broadband.
Click Here From Sebastien Pouliot Tue Oct 15 23:34:43 2002 From: Sebastien Pouliot (Sebastien Pouliot) Date: Tue, 15 Oct 2002 18:34:43 -0400 Subject: [Mono-list] Crypto Unit tests on linux References: <000401c27466$47ac5e00$0100a8c0@screamii> Message-ID: <015501c2749b$0f00aa90$0301a8c0@einstein> > The recently submitted unit tests for Crypto are producing lot of > errors. Seems to be at least one error per test file or so. Must be me :-( > I had to disable some of the tests just to get it to build on cygwin > with csc, and now when I run the tests on linux under mono I'm seeing > the errors. There shouldn't be any problem with csc to compile the tests (that's what I do) unless the there are some missing dependencies. (I'm not using the mono NAnt build right now - but I'm feeling that this is gonna be my next work item) > Can someone who knows these classes (Sebastien?) give the tests a try > and let me know if it's just me? The tests are running fine on windows, > btw. Got me ;-) I only have Windows so I'm rather limited on the tests I may do before commiting my stuff. Can you send me the results of the test (and the build errors) so I can get a look where they fail ? Thanks Sebastien Pouliot Security Architect, Motus Technologies, http://www.motus.com/ work: spouliot@motus.com home: spouliot@videotron.ca From Sebastien Pouliot Wed Oct 16 00:15:52 2002 From: Sebastien Pouliot (Sebastien Pouliot) Date: Tue, 15 Oct 2002 19:15:52 -0400 Subject: [Mono-list] Crypto Unit tests on linux References: <000401c27466$47ac5e00$0100a8c0@screamii> <015501c2749b$0f00aa90$0301a8c0@einstein> Message-ID: <016101c274a0$ce9054f0$0301a8c0@einstein> I made the whole build process work (it wasn't as bad as anticipated ;-). I found out that I made a cyclic dependency: some classes (AsymmetricAlgorithm, DSA, RSA) requires XmlDocument. And still the problem didn't show up until I tried a "make clean" (else it would just use the one present in System.Xml.Dll). These classes have been excluded from the build process (probably just because of this) but I wasn't aware of it. So this is the reason for the class library is compiling just fine. However the problem is that the test assembly are (or were) referencing these classes (again thanks for removing the offending code). Question: What's done elsewhere for those kind of cyclic dependency ? > > The recently submitted unit tests for Crypto are producing lot of > > errors. Seems to be at least one error per test file or so. Note that I didn't have any other error (for the other classes) - so I will still be needing the logs in order to correct any remaining problems. Sebastien Pouliot Security Architect, Motus Technologies, http://www.motus.com/ work: spouliot@motus.com home: spouliot@videotron.ca From ndrochak@gol.com Wed Oct 16 00:19:46 2002 From: ndrochak@gol.com (Nick Drochak) Date: Wed, 16 Oct 2002 08:19:46 +0900 Subject: [Mono-list] Crypto Unit tests on linux In-Reply-To: <016101c274a0$ce9054f0$0301a8c0@einstein> Message-ID: <001001c274a1$5a487590$0100a8c0@screamii> | -----Original Message----- | From: Sebastien Pouliot [mailto:spouliot@videotron.ca] | Sent: Wednesday, October 16, 2002 8:16 AM | To: Nick Drochak; 'mono-list' | Subject: Re: [Mono-list] Crypto Unit tests on linux | | | Note that I didn't have any other error (for the other | classes) - so I will still be needing the logs in order to | correct any remaining problems. Are you able to run the tests on linux? If you can, you'll see the errors there. If not, I can send a log of the Nunit output to the list. Regards, Nick D. From ndrochak@gol.com Wed Oct 16 00:20:57 2002 From: ndrochak@gol.com (Nick Drochak) Date: Wed, 16 Oct 2002 08:20:57 +0900 Subject: [Mono-list] Crypto Unit tests on linux In-Reply-To: <015501c2749b$0f00aa90$0301a8c0@einstein> Message-ID: <001101c274a1$84745b90$0100a8c0@screamii> | -----Original Message----- | From: Sebastien Pouliot [mailto:spouliot@videotron.ca] | Sent: Wednesday, October 16, 2002 7:35 AM | To: Nick Drochak; 'mono-list' | Subject: Re: [Mono-list] Crypto Unit tests on linux | | Got me ;-) I only have Windows so I'm rather limited on the | tests I may do before commiting my stuff. Can you send me the | results of the test (and the build errors) so I can get a | look where they fail ? Ah. Should have read this one first before replying :) OK. I'll send it as soon as I can run them again. Probably tonight for me. Nick D. From jsohn@columbus.rr.com Wed Oct 16 01:07:04 2002 From: jsohn@columbus.rr.com (John Sohn) Date: 15 Oct 2002 20:07:04 -0400 Subject: [Mono-list] PInvoke works with ms runtime but not mono BUG?? In-Reply-To: References: Message-ID: <1034726824.2184.6.camel@pooh.hundredacrewood> I've encountered this same problem and opened the issue in Bugzilla at: http://bugzilla.ximian.com/show_bug.cgi?id=29548. It is currently marked as fixed but I still encountered the problem the last time I checked around a month ago. I have not had a chance to try it with the latest versions of Mono in CVS though so I did not feel it was appropriate to re-open the item. John I am trying to run a simple windows message pump class under Windows XP using Mono. When running the following class using mono class1.exe, the app fails to create the hwnd. Yet running the same class using ms runtime runs perfectly. Doesnt matter if i compile with mcs or ms compiler - gives same result. Could it be that the mono jit/mint are not keeping the WNDPROC address fixed?? Not sure - its beyond me. Can anyone help? If i can get this to work properly then WOW! using System; using System.Runtime.InteropServices; class Class1 { static void Main(string[] args) { WNDCLASS wc = new WNDCLASS(); wc.style=0; wc.lpfnWndProc = new WNDPROC(MyWndProc); wc.hbrBackground = 6; wc.lpszClassName = "NativeFormClass"; if (RegisterClass(wc)==0) { Console.WriteLine("Failed to create window class"); } else { int hwnd = CreateWindowEx(0, "NativeFormClass", "NativeForm",0x10cf0000, -2147483648, -2147483648, -2147483648, -2147483648, 0, 0,0, 0); if (hwnd==0) { Console.WriteLine("Failed to create HWND"); } else { MSG msgvalue; while (GetMessage(out msgvalue, 0,0,0)) { TranslateMessage(ref msgvalue); DispatchMessage(ref msgvalue); } Console.WriteLine("Done"); } } } [DllImport("user32", EntryPoint="GetMessageA", CharSet = CharSet.Ansi)] static extern bool GetMessage(out MSG msgvalue, int hwnd, int minFilter, int maxFilter); [DllImport("user32", EntryPoint="DispatchMessageA", CharSet = CharSet.Ansi)] static extern int DispatchMessage(ref MSG msgvalue); [DllImport("user32")] static extern bool TranslateMessage(ref MSG msgValue); [DllImport("user32", EntryPoint="RegisterClassA", CharSet = CharSet.Ansi)] static extern int RegisterClass(WNDCLASS wc); static int MyWndProc (int hWnd, int msgvalue, int wParam, int lParam) { int retval = 0; switch(msgvalue) { case 2: PostQuitMessage(0); break; default: retval = DefWindowProc(hWnd, msgvalue, wParam, lParam); break; } return retval; } [StructLayout(LayoutKind.Sequential)] public struct MSG { public int hwnd; public int message; public int wParam; public int lParam; public int itime; public int pt_x; public int pt_y; } [DllImport("user32", EntryPoint="PostQuitMessage")] static extern void PostQuitMessage(int nExitCode); [DllImport("user32", EntryPoint="DefWindowProcA", CharSet = CharSet.Ansi)] static extern int DefWindowProc(int hWnd, int msg, int wParam, int lParam); [DllImport("user32", EntryPoint="CreateWindowExA", CharSet =CharSet.Ansi)]//, CharSet=CharSet.Unicode)] static extern int CreateWindowEx(int dwExStyle, string lpszClassName, string lpszWindowName, int style, int x, int y, int width, int height, int hWndParent, int hMenu, int hInst, int pvParam); [StructLayout(LayoutKind.Sequential)] public class WNDCLASS { public int style; public WNDPROC lpfnWndProc; public int cbClsExtra; public int cbWndExtra; public int hInstance; public int hIcon; public int hCursor; public int hbrBackground; public string lpszMenuName; public string lpszClassName; } public delegate int WNDPROC( int hWnd, int msgvalue, int wParam, int lParam); } ________________________________________________________________________ Surf the Web without missing calls! Get MSN Broadband. Click Here _______________________________________________ Mono-list maillist - Mono-list@ximian.com http://lists.ximian.com/mailman/listinfo/mono-list From miguel@ximian.com Wed Oct 16 03:53:58 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 15 Oct 2002 22:53:58 -0400 Subject: [Mono-list] Help needed with XSLT transformations (documentation browser) In-Reply-To: <1034423173.1574.32.camel@emma> References: <1034302508.14577.313.camel@erandi.boston.ximian.com> <1034423173.1574.32.camel@emma> Message-ID: <1034736838.14577.667.camel@erandi.boston.ximian.com> Hello! > Here is a very, very, VERY basic start. Don't expect much. It's a > super quick demo that shows a little of what's possible. The summary page has everything we need. The tricky part is still going to be selecting a particular member, is it possible to do this using an XPath expression? > If you tell me more about what you want to end up with, I can fill this > in. Especially, if you tell me how you want to store the files, I can > modify it to generate the correct links. I have asked Jakub to come up with a design that we can use to render this with GtkHtml, he agreed to help us. Miguel From miguel@ximian.com Wed Oct 16 04:13:56 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 15 Oct 2002 23:13:56 -0400 Subject: [Mono-list] Update of SQL# and the MySQL ADO.NET Provider inMono In-Reply-To: References: Message-ID: <1034738036.14577.692.camel@erandi.boston.ximian.com> Hello! > How would I do that? Put SQL# in its own executable assembly SqlSharp.exe > at mcs/class/Mono.Data.SqlSharp? How would it be built and installed? It would be more a matter of making it more visible, like having that on the top level directory instead of buried in the class libraries. From miguel@ximian.com Wed Oct 16 05:02:58 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 16 Oct 2002 00:02:58 -0400 Subject: [Mono-list] Help needed with XSLT transformations (documentation browser) In-Reply-To: <1034673916.9728.21.camel@emma> References: <1034302508.14577.313.camel@erandi.boston.ximian.com> <1034423173.1574.32.camel@emma> <1034452509.4349.26.camel@emma> <1034463576.14577.444.camel@erandi.boston.ximian.com> <1034588843.4348.245.camel@emma> <1034619320.14578.476.camel@erandi.boston.ximian.com> <1034673916.9728.21.camel@emma> Message-ID: <1034740977.14578.704.camel@erandi.boston.ximian.com> > I will try your attached files in a couple of hours as I have some > > things to finish here, I just wanted to reply to this urgent matter. > > I don't think they're worth looking at yet. Hang on a few days -- they > will get interesting soon. Ok, I will be waiting ;-) Miguel From brianlritchie@hotmail.com Wed Oct 16 05:11:54 2002 From: brianlritchie@hotmail.com (Brian Ritchie) Date: Wed, 16 Oct 2002 00:11:54 -0400 Subject: [Mono-list] Possible P/Invoke bug found in ODBC.NET Message-ID: I've run across what looks to be a bug with P/Invoke in mono... In the ODBC.NET provider, I've declared a reference to an external dll as follows... [DllImport("odbc32.dll")] public static extern OdbcReturn SQLDescribeCol(IntPtr StatementHandle, ushort ColumnNumber, byte[] ColumnName, short BufferLength, ref short NameLength, ref OdbcType DataType, ref short ColumnSize, ref short DecimalDigits, ref short Nullable); The OdbcType is an enumeration declared as: public enum OdbcType : short { BigInt=-5, Binary=-2, ... } This call works fine under ms.net...and the DataType parameter is returned correctly. However, when run through mono on windows...it return 0. It looks like mono isn't using the declared type of the enumeration: short. I modified the code as follows...and it works in mono and ms.net... [DllImport("odbc32.dll")] public static extern OdbcReturn SQLDescribeCol(IntPtr StatementHandle, ushort ColumnNumber, byte[] ColumnName, short BufferLength, ref short NameLength, ref short DataType, ref short ColumnSize, ref short DecimalDigits, ref short Nullable); Could someone on the runtime side take a look at this? Thanks, Brian BTW... I've checked in the alternate Dllimport declaration for the ODBC.NET provider so it will work in Mono. Daniel, this should fix the problem you report to me today. _________________________________________________________________ Protect your PC - get McAfee.com VirusScan Online http://clinic.mcafee.com/clinic/ibuy/campaign.asp?cid=3963 From piersh@friskit.com Wed Oct 16 06:04:43 2002 From: piersh@friskit.com (Piers Haken) Date: Tue, 15 Oct 2002 22:04:43 -0700 Subject: [Mono-list] Help needed with XSLT transformations(documentation browser) Message-ID: <9891913C5BFE87429D71E37F08210CB92974F1@zeus.sfhq.friskit.com> You should be ble to address any prt of the assmebly with an Xpath expression. I'm curious, why are you going for a GtkHtml implementation? I would have thought that a simple DHTML/CSS implementation would be much simpler, more portable and have the added benefit that the docs go-mono.com web page would be identical to those in the distribution. It seems a little over the top to be implementing a documentation browser when all you're doing is displaying web pages. Of course, search may be a little tricky ;-) Piers. > -----Original Message----- > From: Miguel de Icaza [mailto:miguel@ximian.com] > Sent: Tuesday, October 15, 2002 7:54 PM > To: Scott Bronson > Cc: mono-list@ximian.com; Adam Treat > Subject: Re: [Mono-list] Help needed with XSLT > transformations(documentation browser) > > > Hello! > > > Here is a very, very, VERY basic start. Don't expect much. It's a > > super quick demo that shows a little of what's possible. > > The summary page has everything we need. > > The tricky part is still going to be selecting a particular > member, is it possible to do this using an XPath expression? > > > If you tell me more about what you want to end up with, I can fill > > this in. Especially, if you tell me how you want to store > the files, > > I can modify it to generate the correct links. > > I have asked Jakub to come up with a design that we can use > to render this with GtkHtml, he agreed to help us. > > Miguel > > _______________________________________________ > Mono-list maillist - Mono-list@ximian.com > http://lists.ximian.com/mailman/listinfo/mono-list > From miguel@ximian.com Wed Oct 16 07:23:49 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 16 Oct 2002 02:23:49 -0400 Subject: [Mono-list] Help needed with XSLT transformations(documentation browser) In-Reply-To: <9891913C5BFE87429D71E37F08210CB92974F1@zeus.sfhq.friskit.com> References: <9891913C5BFE87429D71E37F08210CB92974F1@zeus.sfhq.friskit.com> Message-ID: <1034749429.14577.716.camel@erandi.boston.ximian.com> hello! > I'm curious, why are you going for a GtkHtml implementation? I would > have thought that a simple DHTML/CSS implementation would be much > simpler, more portable and have the added benefit that the docs > go-mono.com web page would be identical to those in the distribution. It > seems a little over the top to be implementing a documentation browser > when all you're doing is displaying web pages. Of course, search may be > a little tricky ;-) Oh, do not get me wrong. GtkHTML is just a lightweight HTML rendering engine that does not support CSS, so we need it to look decent for those of us that will be using the documentation in our day-to-day work on Linux. The Web-based interfaces lack the agility that you get from a native GUI tool to browse your documentation. I have no problems if we take later the scripts and generate a full documentation set that is web-browsable (in fact, it might just be part of the process), but we need a command-line and GUI tools that we can use natively on Linux when disconnected from the Web (and that has better interactions than a web page). Miguel From martin_aliger@email.cz Wed Oct 16 07:41:06 2002 From: martin_aliger@email.cz (Martin Aliger) Date: Wed, 16 Oct 2002 08:41:06 +0200 (CEST) Subject: [Mono-list] NAnt Message-ID: <3DAD0A02.000001.30839@email1.atc.cz> Hi, I already compiled (succesfully) NAnt sources in mono some time ago. There was several issues but now I hope are all solved. Only few tasks do not compile yet (mail,ndoc,...) - nothing important If you have all my bugfixes to nant there should be no problem. You could refer to this link of not: http://maliger.webpark.cz/mono-nant.tar.gz Martin ______________________________________________________________________________ SB KOMPLET® Informaèní ekonomický systém http://www.sb-komplet.cz …umíme svoji práci! From sadasivuni kartikeyan" I downloaded the files mcs*.tar.gz mono*.tar.gz gc6*.tar.gz when i am trying to unzip them i am getting a error not a valid gunzip file i downloaded two times today both the times i was unable to unzip them See if the source files being distributed have any error in it s.kartikeyan ------------------- S.Kartikeyan ------------------- From manyoso@yahoo.com Wed Oct 16 08:27:47 2002 From: manyoso@yahoo.com (Adam Treat) Date: Wed, 16 Oct 2002 03:27:47 -0400 Subject: [Mono-list] Help needed with XSLT transformations(documentation browser) In-Reply-To: <1034749429.14577.716.camel@erandi.boston.ximian.com> References: <9891913C5BFE87429D71E37F08210CB92974F1@zeus.sfhq.friskit.com> <1034749429.14577.716.camel@erandi.boston.ximian.com> Message-ID: <200210160327.47265.manyoso@yahoo.com> On Wednesday 16 October 2002 02:23 am, Miguel de Icaza wrote: > hello! > > > I'm curious, why are you going for a GtkHtml implementation? I would > > have thought that a simple DHTML/CSS implementation would be much > > simpler, more portable and have the added benefit that the docs > > go-mono.com web page would be identical to those in the distribution. It > > seems a little over the top to be implementing a documentation browser > > when all you're doing is displaying web pages. Of course, search may be > > a little tricky ;-) > > Oh, do not get me wrong. > > GtkHTML is just a lightweight HTML rendering engine that does not > support CSS, so we need it to look decent for those of us that will be > using the documentation in our day-to-day work on Linux. Ouch. CSS is really necessary for good looking docs otherwise you get into complex html that will not be consistent across browsers. > The Web-based interfaces lack the agility that you get from a native GUI > tool to browse your documentation. I think a html documentation is less cumbersome than a doc viewer and if you browse from the local drive it is just as fast. IMHO, documentation in html format that can be used with a regular browser should be the first priority. > I have no problems if we take later the scripts and generate a full > documentation set that is web-browsable (in fact, it might just be part > of the process), but we need a command-line and GUI tools that we can > use natively on Linux when disconnected from the Web (and that has > better interactions than a web page). > > Miguel From richard.torkar@htu.se Wed Oct 16 09:00:45 2002 From: richard.torkar@htu.se (Richard Torkar) Date: 16 Oct 2002 10:00:45 +0200 Subject: [Mono-list] Downloaded Source files are not in zip format In-Reply-To: <20021015214856.10096.qmail@webmail30.rediffmail.com> References: <20021015214856.10096.qmail@webmail30.rediffmail.com> Message-ID: <1034755245.5573.1.camel@tpc171.thnteach.htu.se> --=-VKBrJ1A5q+mtjdslSET+ Content-Type: text/plain Content-Transfer-Encoding: quoted-printable On Tue, 2002-10-15 at 23:48, sadasivuni kartikeyan wrote: > I downloaded the files > mcs*.tar.gz > mono*.tar.gz > gc6*.tar.gz >=20 > when i am trying to unzip them i am getting a error not a valid > gunzip file >=20 > i downloaded two times today both the times i was unable to > unzip them >=20 > See if the source files being distributed have any error in it >=20 Are you downloading it with Netscape/Mozilla? In some cases it gunzips the files. Do a: file mcs*.tar.gz and see what it says regarding file types. /Richard --=-VKBrJ1A5q+mtjdslSET+ Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.7 (GNU/Linux) iD8DBQA9rRytmTD+ECRI4eERAmtrAKCclnkGjmwmm8wzgPIqpb4oLGmOSgCeMjzQ F3S9Je5E52vWaZgxToKCcNw= =jAdw -----END PGP SIGNATURE----- --=-VKBrJ1A5q+mtjdslSET+-- From jmallett@FreeBSD.ORG Wed Oct 16 09:19:41 2002 From: jmallett@FreeBSD.ORG (Juli Mallett) Date: Wed, 16 Oct 2002 01:19:41 -0700 Subject: [Mono-list] Downloaded Source files are not in zip format In-Reply-To: <20021015214856.10096.qmail@webmail30.rediffmail.com>; from s_kartikeyan@rediffmail.com on Tue, Oct 15, 2002 at 09:48:56PM -0000 References: <20021015214856.10096.qmail@webmail30.rediffmail.com> Message-ID: <20021016011941.A42257@FreeBSD.org> Your browser probably gunzipped them on the fly, try renaming them to .tar and using the appropriate application to extract the directory trees from them. juli. * De: sadasivuni kartikeyan [ Data: 2002-10-15 ] [ Subjecte: [Mono-list] Downloaded Source files are not in zip format ] > I downloaded the files > mcs*.tar.gz > mono*.tar.gz > gc6*.tar.gz > > when i am trying to unzip them i am getting a error not a valid > gunzip file > > i downloaded two times today both the times i was unable to > unzip them > > See if the source files being distributed have any error in it > > s.kartikeyan > > ------------------- > S.Kartikeyan > ------------------- > > > _______________________________________________ > Mono-list maillist - Mono-list@ximian.com > http://lists.ximian.com/mailman/listinfo/mono-list -- Juli Mallett | FreeBSD: The Power To Serve Will break world for fulltime employment. | finger jmallett@FreeBSD.org http://people.FreeBSD.org/~jmallett/ | Support my FreeBSD hacking! From lupus@ximian.com Wed Oct 16 09:35:56 2002 From: lupus@ximian.com (Paolo Molaro) Date: Wed, 16 Oct 2002 10:35:56 +0200 Subject: [Mono-list] Crypto Unit tests on linux In-Reply-To: <016101c274a0$ce9054f0$0301a8c0@einstein> References: <000401c27466$47ac5e00$0100a8c0@screamii> <015501c2749b$0f00aa90$0301a8c0@einstein> <016101c274a0$ce9054f0$0301a8c0@einstein> Message-ID: <20021016083556.GA5321@debian.org> On 10/15/02 Sebastien Pouliot wrote: > I found out that I made a cyclic dependency: some classes > (AsymmetricAlgorithm, DSA, RSA) requires XmlDocument. And still the problem > didn't show up until I tried a "make clean" (else it would just use the one > present in System.Xml.Dll). These classes have been excluded from the build > process (probably just because of this) but I wasn't aware of it. So this is > the reason for the class library is compiling just fine. corlib needs to be self-contained: you can't use types from any other assembly in it, so you need to remove the use of XmlDocument from the crypto classes. You have two choices for the substitute code: 1) write a small xml parser that handles just the stuff you need in corlib 2) (better, IMHO) write an internalcall that uses the GMarkup parser in glib and fills in the RSA and DSA structures. To do 2), you need to declare in the runtime header files two structures that match the C# implementation of DSAParameters and RSAParameters. typedef struct { MonoArray *P; MonoArray *Q; MonoArray *D; MonoArray *DP; MonoArray *DQ; MonoArray *InverseQ; MonoArray *Modulus; MonoArray *Exponent; } MonoRSAParameters; Then you write the two internalcalls as: static extern bool GetRSA (string xml, out RSAParameters rsap); and static extern bool GetDSA (string xml, out DSAParameters rsap); The C functions will look like: MonoBoolean CryptoGetRSA (MonoString *xml, MonoRSAParameters *rsap) { GMarkupParseContext *context; char *p = mono_string_to_utf8 (xml); context = ...create markup context...; ...parse and set the fields in rsap... g_free (p); if (parse_success) return TRUE; return FALSE; } mono/docs/internal-calls has some more info on registering the internal call to the runtime. lupus -- ----------------------------------------------------------------- lupus@debian.org debian/rules lupus@ximian.com Monkeys do it better From Zoltan.2.Varga@nokia.com Wed Oct 16 10:06:06 2002 From: Zoltan.2.Varga@nokia.com (Zoltan.2.Varga@nokia.com) Date: Wed, 16 Oct 2002 11:06:06 +0200 Subject: [Mono-list] mono build error ? Message-ID: <214ABAB6BF4DC24EAD9AB1C7461DA6A101F3C2@buebe002.europe.nokia.com> This is a multi-part message in MIME format. ------_=_NextPart_001_01C274F3.42758F66 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable >> Hi has anyone seen this error. Recently mono builds for me have been >> failing with: >>=20 >> Making all in monoburg >> make[3]: Entering directory >> `/usr/local/src/mono-13-Oct-02/mono/mono/monoburg' >> bison ./monoburg.y -o parser.c >> ./monoburg.y:52.2-86: type clash (`' `text') on default action >> make[3]: *** [parser.c] Error 1 >> make[3]: Leaving directory >> `/usr/local/src/mono-13-Oct-02/mono/mono/monoburg' >> make[2]: *** [all-recursive] Error 1 >> make[2]: Leaving directory `/usr/local/src/mono-13-Oct-02/mono/mono' >> make[1]: *** [all-recursive] Error 1 >> make[1]: Leaving directory `/usr/local/src/mono-13-Oct-02/mono' Hi, Try this patch: <>=20 It solved the compilation problems for me. bye Zoltan ------_=_NextPart_001_01C274F3.42758F66 Content-Type: application/octet-stream; name="monoburg.patch" Content-Transfer-Encoding: base64 Content-Description: monoburg.patch Content-Disposition: attachment; filename="monoburg.patch" SW5kZXg6IG1vbm9idXJnLnkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9wdWJsaWMvbW9uby9t b25vL21vbm9idXJnL21vbm9idXJnLnksdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTIKZGlmZiAt dSAtMyAtcCAtcjEuMTIgbW9ub2J1cmcueQotLS0gbW9ub2J1cmcueQkzIE9jdCAyMDAyIDEwOjM1 OjMwIC0wMDAwCTEuMTIKKysrIG1vbm9idXJnLnkJMTYgT2N0IDIwMDIgMDk6MDY6MjYgLTAwMDAK QEAgLTQ3LDEyICs0NywxMiBAQCBzdGF0aWMgaW50IHl5bGluZXBvcyA9IDA7CiAKIGRlY2xzICAg OiAvKiBlbXB0eSAqLyAKIAl8IFNUQVJUIElERU5UIHsgc3RhcnRfbm9udGVybSAoJDIpOyB9IGRl Y2xzCi0JfCBURVJNICB0bGlzdCBkZWNscwotCXwgVEVSTVBSRUZJWCBwbGlzdCBkZWNscwotCXwg SURFTlQgJzonIHRyZWUgb3B0Y29zdCBvcHRjb2RlIG9wdGNmdW5jIHsgY3JlYXRlX3J1bGUgKCQx LCAkMywgJDUsICQ0LCAkNik7IH0gZGVjbHMgCisJfCBURVJNICB0bGlzdCBkZWNscyB7fQorCXwg VEVSTVBSRUZJWCBwbGlzdCBkZWNscyB7fQorCXwgSURFTlQgJzonIHRyZWUgb3B0Y29zdCBvcHRj b2RlIG9wdGNmdW5jIHsgY3JlYXRlX3J1bGUgKCQxLCAkMywgJDUsICQ0LCAkNik7IH0gZGVjbHMg e30KIAk7CiAKLW9wdGNvZGUgOiAvKiBlbXB0eSAqLyB7ICQkID0gTlVMTCB9CitvcHRjb2RlIDog LyogZW1wdHkgKi8geyAkJCA9IE5VTEw7IH0KIAl8IENPREUgCiAJOwogCg== ------_=_NextPart_001_01C274F3.42758F66-- From piersh@friskit.com Wed Oct 16 10:16:58 2002 From: piersh@friskit.com (Piers Haken) Date: Wed, 16 Oct 2002 02:16:58 -0700 Subject: [Mono-list] Help needed with XSLTtransformations(documentation browser) Message-ID: <9891913C5BFE87429D71E37F08210CB92974F2@zeus.sfhq.friskit.com> Can't you use mozilla (or some other similarly capable browser) to view the files locally? As long as all the hrefs are relative it should all work. Piers. > -----Original Message----- > From: Miguel de Icaza [mailto:miguel@ximian.com] > Sent: Tuesday, October 15, 2002 11:24 PM > To: Piers Haken > Cc: Scott Bronson; mono-list@ximian.com; Adam Treat > Subject: RE: [Mono-list] Help needed with > XSLTtransformations(documentation browser) > > > hello! > > > I'm curious, why are you going for a GtkHtml > implementation? I would > > have thought that a simple DHTML/CSS implementation would be much > > simpler, more portable and have the added benefit that the docs > > go-mono.com web page would be identical to those in the > distribution. > > It seems a little over the top to be implementing a documentation > > browser when all you're doing is displaying web pages. Of course, > > search may be a little tricky ;-) > > Oh, do not get me wrong. > > GtkHTML is just a lightweight HTML rendering engine that does > not support CSS, so we need it to look decent for those of us > that will be using the documentation in our day-to-day work on Linux. > > The Web-based interfaces lack the agility that you get from a > native GUI tool to browse your documentation. > > I have no problems if we take later the scripts and generate > a full documentation set that is web-browsable (in fact, it > might just be part of the process), but we need a > command-line and GUI tools that we can use natively on Linux > when disconnected from the Web (and that has better > interactions than a web page). > > Miguel > From piersh@friskit.com Wed Oct 16 10:23:48 2002 From: piersh@friskit.com (Piers Haken) Date: Wed, 16 Oct 2002 02:23:48 -0700 Subject: [Mono-list] Crypto Unit tests on linux Message-ID: <9891913C5BFE87429D71E37F08210CB92974F3@zeus.sfhq.friskit.com> Or, even better: 3) use: Assembly.Load, Activator.CreateInstance & MethodInfo.Invoke Assuming they're supported, of course. Piers. > -----Original Message----- > From: Paolo Molaro [mailto:lupus@ximian.com] > Sent: Wednesday, October 16, 2002 1:36 AM > To: 'mono-list' > Subject: Re: [Mono-list] Crypto Unit tests on linux > > > On 10/15/02 Sebastien Pouliot wrote: > > I found out that I made a cyclic dependency: some classes > > (AsymmetricAlgorithm, DSA, RSA) requires XmlDocument. And still the > > problem didn't show up until I tried a "make clean" (else it would > > just use the one present in System.Xml.Dll). These classes > have been > > excluded from the build process (probably just because of > this) but I > > wasn't aware of it. So this is the reason for the class library is > > compiling just fine. > > corlib needs to be self-contained: you can't use types from > any other assembly in it, so you need to remove the use of > XmlDocument from the crypto classes. You have two choices for > the substitute code: > 1) write a small xml parser that handles just the stuff you > need in corlib > 2) (better, IMHO) write an internalcall that uses the GMarkup > parser in glib and fills in the RSA and DSA structures. > > To do 2), you need to declare in the runtime header files two > structures that match the C# implementation of DSAParameters > and RSAParameters. > > typedef struct { > MonoArray *P; > MonoArray *Q; > MonoArray *D; > MonoArray *DP; > MonoArray *DQ; > MonoArray *InverseQ; > MonoArray *Modulus; > MonoArray *Exponent; > } MonoRSAParameters; > > Then you write the two internalcalls as: > > static extern bool GetRSA (string xml, out > RSAParameters rsap); and > static extern bool GetDSA (string xml, out DSAParameters rsap); > > The C functions will look like: > > MonoBoolean > CryptoGetRSA (MonoString *xml, MonoRSAParameters *rsap) > { > GMarkupParseContext *context; > char *p = mono_string_to_utf8 (xml); > > context = ...create markup context...; > ...parse and set the fields in rsap... > g_free (p); > if (parse_success) > return TRUE; > return FALSE; > } > > mono/docs/internal-calls has some more info on registering > the internal call to the runtime. > > lupus > > -- > ----------------------------------------------------------------- > lupus@debian.org debian/rules > lupus@ximian.com Monkeys do it better > > _______________________________________________ > Mono-list maillist - Mono-list@ximian.com > http://lists.ximian.com/mailman/listinfo/mono-list > From rodrigo@ximian.com Wed Oct 16 10:28:52 2002 From: rodrigo@ximian.com (Rodrigo Moya) Date: 16 Oct 2002 11:28:52 +0200 Subject: [Mono-list] Update of SQL# and the MySQL ADO.NET Provider inMono In-Reply-To: <1034738036.14577.692.camel@erandi.boston.ximian.com> References: <1034738036.14577.692.camel@erandi.boston.ximian.com> Message-ID: <1034760532.802.7.camel@localhost> On Wed, 2002-10-16 at 05:13, Miguel de Icaza wrote: > Hello! > > > How would I do that? Put SQL# in its own executable assembly SqlSharp.exe > > at mcs/class/Mono.Data.SqlSharp? How would it be built and installed? > > It would be more a matter of making it more visible, like having that on > the top level directory instead of buried in the class libraries. > yes, also having it in a Test directory for a specific assembly seems to not help much in its visibility. So, as Miguel says, moving it to the top tools/ directory might be a good idea. cheers -- Rodrigo Moya From lupus@ximian.com Wed Oct 16 11:42:54 2002 From: lupus@ximian.com (Paolo Molaro) Date: Wed, 16 Oct 2002 12:42:54 +0200 Subject: [Mono-list] Crypto Unit tests on linux In-Reply-To: <9891913C5BFE87429D71E37F08210CB92974F3@zeus.sfhq.friskit.com> References: <9891913C5BFE87429D71E37F08210CB92974F3@zeus.sfhq.friskit.com> Message-ID: <20021016104253.GB5321@debian.org> On 10/16/02 Piers Haken wrote: > Or, even better: > > 3) use: Assembly.Load, Activator.CreateInstance & MethodInfo.Invoke > > Assuming they're supported, of course. They are supported, but the problem with that is that this still makes corlib depend on System.Xml (and System). If someone wants to, like, embed the mono runtime in a crypto token, he may need only corlib, but the above solution means that he needs to include System and System.Xml as well (increasing the space requirements). lupus -- ----------------------------------------------------------------- lupus@debian.org debian/rules lupus@ximian.com Monkeys do it better From gkodinov@openlinksw.co.uk Wed Oct 16 12:24:46 2002 From: gkodinov@openlinksw.co.uk (George Kodinov) Date: Wed, 16 Oct 2002 14:24:46 +0300 Subject: [Mono-list] Debugging problem Message-ID: <3DAD4C7D.8040209@openlinksw.co.uk> Hi, Does the source level debugging of managed code work w/ the CVS version of Mono ? I had the following problems repeating the steps described in Debug sample 2(http://www.go-mono.com/jit-debug-sample2.html) : 1) --debug=dwarf-plus is not a valid option (so I've tried with the following : 'dwarf', 'stabs' and 'mono' 2) All I get is 'next' on the IL code. I've found no way to get the source lines. I've found no new info re. the GDB debugging. Can somebody help me/update the sample ? I'm running mono on Redhat 7.0/ gdb 5.2-2 (compiled from the Redhat's source RPM gdb-5.2-2.src.rpm) Best Regards, George Kodinov From yannick.koehler@colubris.com Wed Oct 16 12:57:31 2002 From: yannick.koehler@colubris.com (Yannick Koehler) Date: Wed, 16 Oct 2002 07:57:31 -0400 Subject: [Mono-list] C# -> Binary Message-ID: <200210160757.32569.yannick.koehler@colubris.com> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi, I have gone through the C# documentation and I really liked what I read on this language from a syntax/semantic point of view. Is there plan support to have this language generate binary instead of CLI code? Such as an integration to gcc or something that I could use to code and then get a binary like I do for my C, C++ projects? I think I have seen something on this, just don't remember if it was on Mono project page or somewhere else. - -- Yannick Koehler -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.6 (GNU/Linux) Comment: For info see http://www.gnupg.org iD8DBQE9rVQrfuKOJNEyL1URAuYBAJ9zBpWP/p7ubUXSIygzXNfW+VpTBgCcC3Ue MQPTxU69pcqQ+iAUzi7+mh0= =amLL -----END PGP SIGNATURE----- From giuseppe.greco@bluewin.ch Wed Oct 16 15:43:07 2002 From: giuseppe.greco@bluewin.ch (Giuseppe Greco) Date: 16 Oct 2002 16:43:07 +0200 Subject: [Mono-list] Re: Building NAnt on Linux In-Reply-To: References: <1034708318.9721.4.camel@gonzo.lan> Message-ID: <1034779387.1680.1.camel@gonzo.lan> Guys, Thanks very much for your support. Giuseppe On Tue, 2002-10-15 at 20:09, Cesar Octavio López Nataren wrote: > Giuseppe Greco writes: > > > Hi, > > > > Does anybody know if it is possible to > > compile NAnt on Linux? > > > > I tryed, but I got the following errors: > > > > ** (bin/NAnt.exe:9788): WARNING **: Could not find assembly > > System.Windows.Forms > > hello, at this moment Mono does not have a System.Windows.Forms > implementation but is in progress. Contributions are welcome. > > Recently was created a new mailing list about the topic, check: > http://lists.ximian.com/archives/public/mono-announce-list/2002-October/0000 > 30.html > > > > Best regards. > > cesar -- Giuseppe Greco Fermo Posta 6928 Manno Switzerland Tel. : +41-76-390.60.32 Email: giuseppe.greco@bluewin.ch From freddy_bl@hotmail.com Wed Oct 16 14:04:52 2002 From: freddy_bl@hotmail.com (Freddy BL) Date: Wed, 16 Oct 2002 13:04:52 +0000 Subject: [Mono-list] Re: C# -> Binary Message-ID: >I really liked what I read on this language from a syntax/semantic >point of view. Is there plan support to have this language generate >binary instead of CLI code? I don't know if there existing at the moment plans for this, but the eminent feature of C#/.net is the .net-platform itself. If you create native-code, the code is neither platform-independent nor creates its a bridge for different languages. So the nicest featues of C#/.net are lost. Btw: I think, that there was in any place here in the internet a side by IBM, where IBM compares different Java-platforms/compilers/etc. And Java-Bianary-Code programs runs on the IBM-JVM - according to IBM - faster then the same programs compiled with gcj in native-code. Greatings BL-Freddy _________________________________________________________________ Hotmail  -  Absolut kostenfrei! Der weltweit größte E-Mail-Anbieter im Netz: http://www.msn.de/hotmail From danmorg@sc.rr.com Wed Oct 16 14:59:25 2002 From: danmorg@sc.rr.com (Daniel Morgan) Date: Wed, 16 Oct 2002 09:59:25 -0400 Subject: [Mono-list] Sybase and Microsoft SQL Server database support in Mono ADO.NET Message-ID: Hey, Currently, ADO.NET in Mono does not support Sybase nor Microsoft SQL Server. Unless, you want to use System.Data.Odbc with unixODBC with FreeTDS on Linux, System.Data.OleDb with libgda with FreeTDS on Linux, or with the native ODBC support and MDAC on Windows. However, this adds a lot of dependencies, configurations, and another layer for data to have to travel degrading performance. I would like to create a provider for Microsoft SQL Server in System.Data.SqlClient and for Sybase in Mono.Data.SybaseClient. It will use the native FreeTDS libraries to provide this capability. In order to use FreeTDS, we will need to create C# bindings to FreeTDS. Is there a way that the C# bindings to FreeTDS could be used statically by both assemblies: System.Data.dll and Mono.Data.SybaseClient.dll? The FreeTDS C# bindings could go in Mono.Data.FreeTDS. This way, we would not have to maintain two copies of the C# bindings to FreeTDS. Can mono/mcs create static libraries or assemblies? If not, I can always get the build files for System.Data and Mono.Data.SybaseClient to point to the Mono.Data.FreeTDS C# files to build as well. The best approach is to create a pure managed provider in C#, but who has the time to implement the TDS protocol in C#? In the meantime, we can use the native FreeTDS libraries for this. There is jTDS at http://www.freetds.org/ but that involves time porting from Java/JFC/JDBC to the C#/.NET/ADO.NET stuff. FreeTDS can be found at http://www.freetds.org/ and builds and installs on Linux and Windows. For Windows, you will have to check out the latest freetds from cvs because it includes fixes to build and install on Windows. See http://www.freetds.org/faq.html#How%20to%20I%20access%20the%20CVS on how to check out freetds from cvs. Before Microsoft SQL Server support at System.Data.SqlClient can begin, the PostgreSQL provider at System.Data.SqlClient will have to be moved to Mono.Data.PostgreSqlClient. Can someone move this in cvs for me so we will not lose history? The importance for FreeTDS and Mono running on Windows is that a developer may have only one machine (me) to develop Mono, and Microsoft SQL Server only runs on Windows. So, the development would have to be done on Windows. Anybody willing to help? Thanks, Daniel From ndrochak@gol.com Wed Oct 16 15:25:29 2002 From: ndrochak@gol.com (Nick Drochak) Date: 16 Oct 2002 23:25:29 +0900 Subject: [Mono-list] Crypto Unit tests on linux In-Reply-To: <001001c274a1$5a487590$0100a8c0@screamii> References: <001001c274a1$5a487590$0100a8c0@screamii> Message-ID: <1034778328.1812.2.camel@bubo> On Wed, 2002-10-16 at 08:19, Nick Drochak wrote: > Are you able to run the tests on linux? If you can, you'll see the > errors there. If not, I can send a log of the Nunit output to the list. Since you aren't able to run the tests, here is what you would see... ............... ** (NUnitConsole_mono.exe:1759): WARNING **: Entropy error! Length != bytes read E........... ** (NUnitConsole_mono.exe:1759): WARNING **: Entropy error! Length != bytes read E. ** (NUnitConsole_mono.exe:1759): WARNING **: Entropy error! Length != bytes read E. ** (NUnitConsole_mono.exe:1759): WARNING **: Entropy error! Length != bytes read E. ** (NUnitConsole_mono.exe:1759): WARNING **: Entropy error! Length != bytes read E. ** (NUnitConsole_mono.exe:1759): WARNING **: Entropy error! Length != bytes read E. ** (NUnitConsole_mono.exe:1759): WARNING **: Entropy error! Length != bytes read E. ** (NUnitConsole_mono.exe:1759): WARNING **: Entropy error! Length != bytes read E. ** (NUnitConsole_mono.exe:1759): WARNING **: Entropy error! Length != bytes read ** (NUnitConsole_mono.exe:1759): WARNING **: Entropy error! Length != bytes read E. ** (NUnitConsole_mono.exe:1759): WARNING **: Entropy error! Length != bytes read ** (NUnitConsole_mono.exe:1759): WARNING **: Entropy error! Length != bytes read E. ** (NUnitConsole_mono.exe:1759): WARNING **: Entropy error! Length != bytes read ** (NUnitConsole_mono.exe:1759): WARNING **: Entropy error! Length != bytes read E. ** (NUnitConsole_mono.exe:1759): WARNING **: Entropy error! Length != bytes read ** (NUnitConsole_mono.exe:1759): WARNING **: Entropy error! Length != bytes read E. ** (NUnitConsole_mono.exe:1759): WARNING **: Entropy error! Length != bytes read ** (NUnitConsole_mono.exe:1759): WARNING **: Entropy error! Length != bytes read E. ** (NUnitConsole_mono.exe:1759): WARNING **: Entropy error! Length != bytes read ** (NUnitConsole_mono.exe:1759): WARNING **: Entropy error! Length != bytes read E. ** (NUnitConsole_mono.exe:1759): WARNING **: Entropy error! Length != bytes read ** (NUnitConsole_mono.exe:1759): WARNING **: Entropy error! Length != bytes read E. ** (NUnitConsole_mono.exe:1759): WARNING **: Entropy error! Length != bytes read ** (NUnitConsole_mono.exe:1759): WARNING **: Entropy error! Length != bytes read E. ** (NUnitConsole_mono.exe:1759): WARNING **: Entropy error! Length != bytes read ** (NUnitConsole_mono.exe:1759): WARNING **: Entropy error! Length != bytes read E. ** (NUnitConsole_mono.exe:1759): WARNING **: Entropy error! Length != bytes read ** (NUnitConsole_mono.exe:1759): WARNING **: Entropy error! Length != bytes read E. ** (NUnitConsole_mono.exe:1759): WARNING **: Entropy error! Length != bytes read ** (NUnitConsole_mono.exe:1759): WARNING **: Entropy error! Length != bytes read E Time: 9.709 There were 19 errors: 1) TestFIPS140(MonoTests.System.Security.Cryptography.RandomNumberGeneratorTest): The requested feature is not yet implemented(System.NotImplementedException) in (unmanaged) 06 System.Security.Cryptography.RNGCryptoServiceProvider:GetBytes (byte[]) in <0x00004> 06 System.Security.Cryptography.RNGCryptoServiceProvider:GetBytes (byte[]) in <0x000b6> 00 MonoTests.System.Security.Cryptography.RandomNumberGeneratorTest:TestFIPS140 () in <0x00042> 04 MonoTests.System.Security.Cryptography.RandomNumberGeneratorTest:TestFIPS140 (object,intptr,intptr) in (unmanaged) 06 System.Reflection.MonoMethod:InternalInvoke (object,object[]) in <0x00004> 06 System.Reflection.MonoMethod:InternalInvoke (object,object[]) in <0x0009e> 00 System.Reflection.MonoMethod:Invoke (object,System.Reflection.BindingFlags,System.Reflection.Binder,object[],System.Globalization.CultureInfo) 2) TestKey(MonoTests.System.Security.Cryptography.KeyedHashAlgorithmTest): A null value was found where an object instance was required(System.NullReferenceException) in <0x00086> 00 MonoTests.System.Security.Cryptography.KeyedHashAlgorithmTest:TestKey () in <0x00042> 04 MonoTests.System.Security.Cryptography.KeyedHashAlgorithmTest:TestKey (object,intptr,intptr) in (unmanaged) 06 System.Reflection.MonoMethod:InternalInvoke (object,object[]) in <0x00004> 06 System.Reflection.MonoMethod:InternalInvoke (object,object[]) in <0x0009e> 00 System.Reflection.MonoMethod:Invoke (object,System.Reflection.BindingFlags,System.Reflection.Binder,object[],System.Globalization.CultureInfo) 3) TestCreate(MonoTests.System.Security.Cryptography.KeyedHashAlgorithmTest): A null value was found where an object instance was required(System.NullReferenceException) in <0x00046> 00 MonoTests.System.Security.Cryptography.KeyedHashAlgorithmTest:TestCreate () in <0x00042> 04 MonoTests.System.Security.Cryptography.KeyedHashAlgorithmTest:TestCreate (object,intptr,intptr) in (unmanaged) 06 System.Reflection.MonoMethod:InternalInvoke (object,object[]) in <0x00004> 06 System.Reflection.MonoMethod:InternalInvoke (object,object[]) in <0x0009e> 00 System.Reflection.MonoMethod:Invoke (object,System.Reflection.BindingFlags,System.Reflection.Binder,object[],System.Globalization.CultureInfo) 4) TestClear(MonoTests.System.Security.Cryptography.HMACSHA1Test): A null value was found where an object instance was required(System.NullReferenceException) in <0x0006f> 00 MonoTests.System.Security.Cryptography.HashAlgorithmTest:TestClear () in <0x00042> 04 MonoTests.System.Security.Cryptography.HashAlgorithmTest:TestClear (object,intptr,intptr) in (unmanaged) 06 System.Reflection.MonoMethod:InternalInvoke (object,object[]) in <0x00004> 06 System.Reflection.MonoMethod:InternalInvoke (object,object[]) in <0x0009e> 00 System.Reflection.MonoMethod:Invoke (object,System.Reflection.BindingFlags,System.Reflection.Binder,object[],System.Globalization.CultureInfo) 5) TestKey(MonoTests.System.Security.Cryptography.HMACSHA1Test): A null value was found where an object instance was required(System.NullReferenceException) in <0x00086> 00 MonoTests.System.Security.Cryptography.KeyedHashAlgorithmTest:TestKey () in <0x00042> 04 MonoTests.System.Security.Cryptography.KeyedHashAlgorithmTest:TestKey (object,intptr,intptr) in (unmanaged) 06 System.Reflection.MonoMethod:InternalInvoke (object,object[]) in <0x00004> 06 System.Reflection.MonoMethod:InternalInvoke (object,object[]) in <0x0009e> 00 System.Reflection.MonoMethod:Invoke (object,System.Reflection.BindingFlags,System.Reflection.Binder,object[],System.Globalization.CultureInfo) 6) TestCreate(MonoTests.System.Security.Cryptography.HMACSHA1Test): A null value was found where an object instance was required(System.NullReferenceException) in <0x00102> 00 MonoTests.System.Security.Cryptography.KeyedHashAlgorithmTest:TestCreate () in <0x00042> 04 MonoTests.System.Security.Cryptography.KeyedHashAlgorithmTest:TestCreate (object,intptr,intptr) in (unmanaged) 06 System.Reflection.MonoMethod:InternalInvoke (object,object[]) in <0x00004> 06 System.Reflection.MonoMethod:InternalInvoke (object,object[]) in <0x0009e> 00 System.Reflection.MonoMethod:Invoke (object,System.Reflection.BindingFlags,System.Reflection.Binder,object[],System.Globalization.CultureInfo) 7) TestRFC2202_TC7(MonoTests.System.Security.Cryptography.HMACSHA1Test): The requested feature is not yet implemented(System.NotImplementedException) in (unmanaged) 06 System.Security.Cryptography.RNGCryptoServiceProvider:GetBytes (byte[]) in <0x00004> 06 System.Security.Cryptography.RNGCryptoServiceProvider:GetBytes (byte[]) in <0x0007c> 00 System.Security.Cryptography.HMACSHA1:GenerateKey () in <0x00055> 00 System.Security.Cryptography.HMACSHA1:.ctor () in <0x00028> 00 MonoTests.System.Security.Cryptography.HMACSHA1Test:CheckA (string,byte[],byte[],byte[]) in <0x00039> 00 MonoTests.System.Security.Cryptography.HMACSHA1Test:Check (string,byte[],byte[],byte[]) in <0x000d0> 00 MonoTests.System.Security.Cryptography.HMACSHA1Test:TestRFC2202_TC7 () in <0x00042> 04 MonoTests.System.Security.Cryptography.HMACSHA1Test:TestRFC2202_TC7 (object,intptr,intptr) in (unmanaged) 06 System.Reflection.MonoMethod:InternalInvoke (object,object[]) in <0x00004> 06 System.Reflection.MonoMethod:InternalInvoke (object,object[]) in <0x0009e> 00 System.Reflection.MonoMethod:Invoke (object,System.Reflection.BindingFlags,System.Reflection.Binder,object[],System.Globalization.CultureInfo) 8) TestRFC2202_TC6(MonoTests.System.Security.Cryptography.HMACSHA1Test): The requested feature is not yet implemented(System.NotImplementedException) in (unmanaged) 06 System.Security.Cryptography.RNGCryptoServiceProvider:GetBytes (byte[]) in <0x00004> 06 System.Security.Cryptography.RNGCryptoServiceProvider:GetBytes (byte[]) in <0x0007c> 00 System.Security.Cryptography.HMACSHA1:GenerateKey () in <0x00055> 00 System.Security.Cryptography.HMACSHA1:.ctor () in <0x00028> 00 MonoTests.System.Security.Cryptography.HMACSHA1Test:CheckA (string,byte[],byte[],byte[]) in <0x00039> 00 MonoTests.System.Security.Cryptography.HMACSHA1Test:Check (string,byte[],byte[],byte[]) in <0x000d0> 00 MonoTests.System.Security.Cryptography.HMACSHA1Test:TestRFC2202_TC6 () in <0x00042> 04 MonoTests.System.Security.Cryptography.HMACSHA1Test:TestRFC2202_TC6 (object,intptr,intptr) in (unmanaged) 06 System.Reflection.MonoMethod:InternalInvoke (object,object[]) in <0x00004> 06 System.Reflection.MonoMethod:InternalInvoke (object,object[]) in <0x0009e> 00 System.Reflection.MonoMethod:Invoke (object,System.Reflection.BindingFlags,System.Reflection.Binder,object[],System.Globalization.CultureInfo) 9) TestRFC2202_TC5(MonoTests.System.Security.Cryptography.HMACSHA1Test): The requested feature is not yet implemented(System.NotImplementedException) in (unmanaged) 06 System.Security.Cryptography.RNGCryptoServiceProvider:GetBytes (byte[]) in <0x00004> 06 System.Security.Cryptography.RNGCryptoServiceProvider:GetBytes (byte[]) in <0x0007c> 00 System.Security.Cryptography.HMACSHA1:GenerateKey () in <0x00055> 00 System.Security.Cryptography.HMACSHA1:.ctor () in <0x00028> 00 MonoTests.System.Security.Cryptography.HMACSHA1Test:CheckA (string,byte[],byte[],byte[]) in <0x00039> 00 MonoTests.System.Security.Cryptography.HMACSHA1Test:Check (string,byte[],byte[],byte[]) in <0x000af> 00 MonoTests.System.Security.Cryptography.HMACSHA1Test:TestRFC2202_TC5 () in <0x00042> 04 MonoTests.System.Security.Cryptography.HMACSHA1Test:TestRFC2202_TC5 (object,intptr,intptr) in (unmanaged) 06 System.Reflection.MonoMethod:InternalInvoke (object,object[]) in <0x00004> 06 System.Reflection.MonoMethod:InternalInvoke (object,object[]) in <0x0009e> 00 System.Reflection.MonoMethod:Invoke (object,System.Reflection.BindingFlags,System.Reflection.Binder,object[],System.Globalization.CultureInfo) 10) TestRFC2202_TC4(MonoTests.System.Security.Cryptography.HMACSHA1Test): The requested feature is not yet implemented(System.NotImplementedException) in (unmanaged) 06 System.Security.Cryptography.RNGCryptoServiceProvider:GetBytes (byte[]) in <0x00004> 06 System.Security.Cryptography.RNGCryptoServiceProvider:GetBytes (byte[]) in <0x0007c> 00 System.Security.Cryptography.HMACSHA1:GenerateKey () in <0x00055> 00 System.Security.Cryptography.HMACSHA1:.ctor () in <0x00028> 00 MonoTests.System.Security.Cryptography.HMACSHA1Test:CheckA (string,byte[],byte[],byte[]) in <0x00039> 00 MonoTests.System.Security.Cryptography.HMACSHA1Test:Check (string,byte[],byte[],byte[]) in <0x000d8> 00 MonoTests.System.Security.Cryptography.HMACSHA1Test:TestRFC2202_TC4 () in <0x00042> 04 MonoTests.System.Security.Cryptography.HMACSHA1Test:TestRFC2202_TC4 (object,intptr,intptr) in (unmanaged) 06 System.Reflection.MonoMethod:InternalInvoke (object,object[]) in <0x00004> 06 System.Reflection.MonoMethod:InternalInvoke (object,object[]) in <0x0009e> 00 System.Reflection.MonoMethod:Invoke (object,System.Reflection.BindingFlags,System.Reflection.Binder,object[],System.Globalization.CultureInfo) 11) TestRFC2202_TC3(MonoTests.System.Security.Cryptography.HMACSHA1Test): The requested feature is not yet implemented(System.NotImplementedException) in (unmanaged) 06 System.Security.Cryptography.RNGCryptoServiceProvider:GetBytes (byte[]) in <0x00004> 06 System.Security.Cryptography.RNGCryptoServiceProvider:GetBytes (byte[]) in <0x0007c> 00 System.Security.Cryptography.HMACSHA1:GenerateKey () in <0x00055> 00 System.Security.Cryptography.HMACSHA1:.ctor () in <0x00028> 00 MonoTests.System.Security.Cryptography.HMACSHA1Test:CheckA (string,byte[],byte[],byte[]) in <0x00039> 00 MonoTests.System.Security.Cryptography.HMACSHA1Test:Check (string,byte[],byte[],byte[]) in <0x000d8> 00 MonoTests.System.Security.Cryptography.HMACSHA1Test:TestRFC2202_TC3 () in <0x00042> 04 MonoTests.System.Security.Cryptography.HMACSHA1Test:TestRFC2202_TC3 (object,intptr,intptr) in (unmanaged) 06 System.Reflection.MonoMethod:InternalInvoke (object,object[]) in <0x00004> 06 System.Reflection.MonoMethod:InternalInvoke (object,object[]) in <0x0009e> 00 System.Reflection.MonoMethod:Invoke (object,System.Reflection.BindingFlags,System.Reflection.Binder,object[],System.Globalization.CultureInfo) 12) TestRFC2202_TC2(MonoTests.System.Security.Cryptography.HMACSHA1Test): The requested feature is not yet implemented(System.NotImplementedException) in (unmanaged) 06 System.Security.Cryptography.RNGCryptoServiceProvider:GetBytes (byte[]) in <0x00004> 06 System.Security.Cryptography.RNGCryptoServiceProvider:GetBytes (byte[]) in <0x0007c> 00 System.Security.Cryptography.HMACSHA1:GenerateKey () in <0x00055> 00 System.Security.Cryptography.HMACSHA1:.ctor () in <0x00028> 00 MonoTests.System.Security.Cryptography.HMACSHA1Test:CheckA (string,byte[],byte[],byte[]) in <0x00039> 00 MonoTests.System.Security.Cryptography.HMACSHA1Test:Check (string,byte[],byte[],byte[]) in <0x000a0> 00 MonoTests.System.Security.Cryptography.HMACSHA1Test:TestRFC2202_TC2 () in <0x00042> 04 MonoTests.System.Security.Cryptography.HMACSHA1Test:TestRFC2202_TC2 (object,intptr,intptr) in (unmanaged) 06 System.Reflection.MonoMethod:InternalInvoke (object,object[]) in <0x00004> 06 System.Reflection.MonoMethod:InternalInvoke (object,object[]) in <0x0009e> 00 System.Reflection.MonoMethod:Invoke (object,System.Reflection.BindingFlags,System.Reflection.Binder,object[],System.Globalization.CultureInfo) 13) TestRFC2202_TC1(MonoTests.System.Security.Cryptography.HMACSHA1Test): The requested feature is not yet implemented(System.NotImplementedException) in (unmanaged) 06 System.Security.Cryptography.RNGCryptoServiceProvider:GetBytes (byte[]) in <0x00004> 06 System.Security.Cryptography.RNGCryptoServiceProvider:GetBytes (byte[]) in <0x0007c> 00 System.Security.Cryptography.HMACSHA1:GenerateKey () in <0x00055> 00 System.Security.Cryptography.HMACSHA1:.ctor () in <0x00028> 00 MonoTests.System.Security.Cryptography.HMACSHA1Test:CheckA (string,byte[],byte[],byte[]) in <0x00039> 00 MonoTests.System.Security.Cryptography.HMACSHA1Test:Check (string,byte[],byte[],byte[]) in <0x000af> 00 MonoTests.System.Security.Cryptography.HMACSHA1Test:TestRFC2202_TC1 () in <0x00042> 04 MonoTests.System.Security.Cryptography.HMACSHA1Test:TestRFC2202_TC1 (object,intptr,intptr) in (unmanaged) 06 System.Reflection.MonoMethod:InternalInvoke (object,object[]) in <0x00004> 06 System.Reflection.MonoMethod:InternalInvoke (object,object[]) in <0x0009e> 00 System.Reflection.MonoMethod:Invoke (object,System.Reflection.BindingFlags,System.Reflection.Binder,object[],System.Globalization.CultureInfo) 14) TestFIPS198_A4(MonoTests.System.Security.Cryptography.HMACSHA1Test): The requested feature is not yet implemented(System.NotImplementedException) in (unmanaged) 06 System.Security.Cryptography.RNGCryptoServiceProvider:GetBytes (byte[]) in <0x00004> 06 System.Security.Cryptography.RNGCryptoServiceProvider:GetBytes (byte[]) in <0x0007c> 00 System.Security.Cryptography.HMACSHA1:GenerateKey () in <0x00055> 00 System.Security.Cryptography.HMACSHA1:.ctor () in <0x00028> 00 MonoTests.System.Security.Cryptography.HMACSHA1Test:CheckB (string,byte[],byte[],byte[]) in <0x00057> 00 MonoTests.System.Security.Cryptography.HMACSHA1Test:Check (string,byte[],byte[],byte[]) in <0x000a8> 00 MonoTests.System.Security.Cryptography.HMACSHA1Test:TestFIPS198_A4 () in <0x00042> 04 MonoTests.System.Security.Cryptography.HMACSHA1Test:TestFIPS198_A4 (object,intptr,intptr) in (unmanaged) 06 System.Reflection.MonoMethod:InternalInvoke (object,object[]) in <0x00004> 06 System.Reflection.MonoMethod:InternalInvoke (object,object[]) in <0x0009e> 00 System.Reflection.MonoMethod:Invoke (object,System.Reflection.BindingFlags,System.Reflection.Binder,object[],System.Globalization.CultureInfo) 15) TestFIPS198_A3(MonoTests.System.Security.Cryptography.HMACSHA1Test): The requested feature is not yet implemented(System.NotImplementedException) in (unmanaged) 06 System.Security.Cryptography.RNGCryptoServiceProvider:GetBytes (byte[]) in <0x00004> 06 System.Security.Cryptography.RNGCryptoServiceProvider:GetBytes (byte[]) in <0x0007c> 00 System.Security.Cryptography.HMACSHA1:GenerateKey () in <0x00055> 00 System.Security.Cryptography.HMACSHA1:.ctor () in <0x00028> 00 MonoTests.System.Security.Cryptography.HMACSHA1Test:CheckA (string,byte[],byte[],byte[]) in <0x00039> 00 MonoTests.System.Security.Cryptography.HMACSHA1Test:Check (string,byte[],byte[],byte[]) in <0x000a8> 00 MonoTests.System.Security.Cryptography.HMACSHA1Test:TestFIPS198_A3 () in <0x00042> 04 MonoTests.System.Security.Cryptography.HMACSHA1Test:TestFIPS198_A3 (object,intptr,intptr) in (unmanaged) 06 System.Reflection.MonoMethod:InternalInvoke (object,object[]) in <0x00004> 06 System.Reflection.MonoMethod:InternalInvoke (object,object[]) in <0x0009e> 00 System.Reflection.MonoMethod:Invoke (object,System.Reflection.BindingFlags,System.Reflection.Binder,object[],System.Globalization.CultureInfo) 16) TestFIPS198_A2(MonoTests.System.Security.Cryptography.HMACSHA1Test): The requested feature is not yet implemented(System.NotImplementedException) in (unmanaged) 06 System.Security.Cryptography.RNGCryptoServiceProvider:GetBytes (byte[]) in <0x00004> 06 System.Security.Cryptography.RNGCryptoServiceProvider:GetBytes (byte[]) in <0x0007c> 00 System.Security.Cryptography.HMACSHA1:GenerateKey () in <0x00055> 00 System.Security.Cryptography.HMACSHA1:.ctor () in <0x00028> 00 MonoTests.System.Security.Cryptography.HMACSHA1Test:CheckA (string,byte[],byte[],byte[]) in <0x00039> 00 MonoTests.System.Security.Cryptography.HMACSHA1Test:Check (string,byte[],byte[],byte[]) in <0x000a8> 00 MonoTests.System.Security.Cryptography.HMACSHA1Test:TestFIPS198_A2 () in <0x00042> 04 MonoTests.System.Security.Cryptography.HMACSHA1Test:TestFIPS198_A2 (object,intptr,intptr) in (unmanaged) 06 System.Reflection.MonoMethod:InternalInvoke (object,object[]) in <0x00004> 06 System.Reflection.MonoMethod:InternalInvoke (object,object[]) in <0x0009e> 00 System.Reflection.MonoMethod:Invoke (object,System.Reflection.BindingFlags,System.Reflection.Binder,object[],System.Globalization.CultureInfo) 17) TestFIPS198_A1(MonoTests.System.Security.Cryptography.HMACSHA1Test): The requested feature is not yet implemented(System.NotImplementedException) in (unmanaged) 06 System.Security.Cryptography.RNGCryptoServiceProvider:GetBytes (byte[]) in <0x00004> 06 System.Security.Cryptography.RNGCryptoServiceProvider:GetBytes (byte[]) in <0x0007c> 00 System.Security.Cryptography.HMACSHA1:GenerateKey () in <0x00055> 00 System.Security.Cryptography.HMACSHA1:.ctor () in <0x00028> 00 MonoTests.System.Security.Cryptography.HMACSHA1Test:CheckA (string,byte[],byte[],byte[]) in <0x00039> 00 MonoTests.System.Security.Cryptography.HMACSHA1Test:Check (string,byte[],byte[],byte[]) in <0x000a8> 00 MonoTests.System.Security.Cryptography.HMACSHA1Test:TestFIPS198_A1 () in <0x00042> 04 MonoTests.System.Security.Cryptography.HMACSHA1Test:TestFIPS198_A1 (object,intptr,intptr) in (unmanaged) 06 System.Reflection.MonoMethod:InternalInvoke (object,object[]) in <0x00004> 06 System.Reflection.MonoMethod:InternalInvoke (object,object[]) in <0x0009e> 00 System.Reflection.MonoMethod:Invoke (object,System.Reflection.BindingFlags,System.Reflection.Binder,object[],System.Globalization.CultureInfo) 18) TestExceptions(MonoTests.System.Security.Cryptography.HMACSHA1Test): The requested feature is not yet implemented(System.NotImplementedException) in (unmanaged) 06 System.Security.Cryptography.RNGCryptoServiceProvider:GetBytes (byte[]) in <0x00004> 06 System.Security.Cryptography.RNGCryptoServiceProvider:GetBytes (byte[]) in <0x0007c> 00 System.Security.Cryptography.HMACSHA1:GenerateKey () in <0x00055> 00 System.Security.Cryptography.HMACSHA1:.ctor () in <0x00036> 00 MonoTests.System.Security.Cryptography.HMACSHA1Test:TestExceptions () in <0x00042> 04 MonoTests.System.Security.Cryptography.HMACSHA1Test:TestExceptions (object,intptr,intptr) in (unmanaged) 06 System.Reflection.MonoMethod:InternalInvoke (object,object[]) in <0x00004> 06 System.Reflection.MonoMethod:InternalInvoke (object,object[]) in <0x0009e> 00 System.Reflection.MonoMethod:Invoke (object,System.Reflection.BindingFlags,System.Reflection.Binder,object[],System.Globalization.CultureInfo) 19) TestInvariants(MonoTests.System.Security.Cryptography.HMACSHA1Test): The requested feature is not yet implemented(System.NotImplementedException) in (unmanaged) 06 System.Security.Cryptography.RNGCryptoServiceProvider:GetBytes (byte[]) in <0x00004> 06 System.Security.Cryptography.RNGCryptoServiceProvider:GetBytes (byte[]) in <0x0007c> 00 System.Security.Cryptography.HMACSHA1:GenerateKey () in <0x00055> 00 System.Security.Cryptography.HMACSHA1:.ctor () in <0x00021> 00 MonoTests.System.Security.Cryptography.HMACSHA1Test:TestInvariants () in <0x00042> 04 MonoTests.System.Security.Cryptography.HMACSHA1Test:TestInvariants (object,intptr,intptr) in (unmanaged) 06 System.Reflection.MonoMethod:InternalInvoke (object,object[]) in <0x00004> 06 System.Reflection.MonoMethod:InternalInvoke (object,object[]) in <0x0009e> 00 System.Reflection.MonoMethod:Invoke (object,System.Reflection.BindingFlags,System.Reflection.Binder,object[],System.Globalization.CultureInfo) FAILURES!!! Tests Run: 43, Failures: 0, Errors: 19 From danmorg@sc.rr.com Wed Oct 16 15:31:20 2002 From: danmorg@sc.rr.com (Daniel Morgan) Date: Wed, 16 Oct 2002 10:31:20 -0400 Subject: [Mono-list] Update of SQL# and the MySQL ADO.NET ProviderinMono In-Reply-To: <1034738036.14577.692.camel@erandi.boston.ximian.com> Message-ID: Miguel, Can someone move SqlSharpCli.cs in cvs from mcs/class/System.Data/Test to mcs/SqlSharp/CommandLineInterface please? This is so I will not lose the history on SqlSharpCl.cs that exists now in cvs. Once that is done, I will create the build/makefile for windows/linux, and include it in the mcs build process. I noticed the debugger has a command line and gui front end. Should I follow the same model? Thanks, Daniel -----Original Message----- From: mono-list-admin@ximian.com [mailto:mono-list-admin@ximian.com]On Behalf Of Miguel de Icaza Sent: Tuesday, October 15, 2002 11:14 PM To: Dan Morgan Cc: Mono-List Subject: RE: [Mono-list] Update of SQL# and the MySQL ADO.NET ProviderinMono Hello! > How would I do that? Put SQL# in its own executable assembly SqlSharp.exe > at mcs/class/Mono.Data.SqlSharp? How would it be built and installed? It would be more a matter of making it more visible, like having that on the top level directory instead of buried in the class libraries. _______________________________________________ Mono-list maillist - Mono-list@ximian.com http://lists.ximian.com/mailman/listinfo/mono-list From richard.torkar@htu.se Wed Oct 16 15:34:12 2002 From: richard.torkar@htu.se (Richard Torkar) Date: 16 Oct 2002 16:34:12 +0200 Subject: [Mono-list] Sybase and Microsoft SQL Server database support in Mono ADO.NET In-Reply-To: References: Message-ID: <1034778854.6559.0.camel@tpc171.thnteach.htu.se> --=-B/+n1/PQFCF7DgpcMOXW Content-Type: text/plain Content-Transfer-Encoding: quoted-printable On Wed, 2002-10-16 at 15:59, Daniel Morgan wrote: > Hey, >=20 > Currently, ADO.NET in Mono does not support Sybase nor Microsoft SQL Serv= er. > Unless, you want to use System.Data.Odbc with unixODBC with FreeTDS on > Linux, System.Data.OleDb with libgda with FreeTDS on Linux, or with the > native ODBC support and MDAC on Windows. However, this adds a lot of > dependencies, configurations, and another layer for data to have to trave= l > degrading performance. >=20 > I would like to create a provider for Microsoft SQL Server in > System.Data.SqlClient and for Sybase in Mono.Data.SybaseClient. It will = use > the native FreeTDS libraries to provide this capability. In order to use > FreeTDS, we will need to create C# bindings to FreeTDS. I have two students planning to port jTDS to C#. Why don't you take that approach instead? I talked with Rodrigo about this yesterday. /Richard --=-B/+n1/PQFCF7DgpcMOXW Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.7 (GNU/Linux) iD8DBQA9rXjkmTD+ECRI4eERAvxTAJ9KpFYF30lcS/rO0bmJfXWWinAN/ACff6Bk b63AoT8rO1q+nh5IXG8mgck= =RpK6 -----END PGP SIGNATURE----- --=-B/+n1/PQFCF7DgpcMOXW-- From tim@timcoleman.com Wed Oct 16 15:43:10 2002 From: tim@timcoleman.com (Tim Coleman) Date: Wed, 16 Oct 2002 10:43:10 -0400 Subject: [Mono-list] Sybase and Microsoft SQL Server database support in Mono ADO.NET In-Reply-To: References: Message-ID: <20021016104310.A17588@tux.epenguin.org> On Wed, Oct 16, 2002 at 09:59:25AM -0400, Daniel Morgan wrote: > Hey, > > Currently, ADO.NET in Mono does not support Sybase nor Microsoft SQL Server. > Unless, you want to use System.Data.Odbc with unixODBC with FreeTDS on > Linux, System.Data.OleDb with libgda with FreeTDS on Linux, or with the > native ODBC support and MDAC on Windows. However, this adds a lot of > dependencies, configurations, and another layer for data to have to travel > degrading performance. > > I would like to create a provider for Microsoft SQL Server in > System.Data.SqlClient and for Sybase in Mono.Data.SybaseClient. It will use > the native FreeTDS libraries to provide this capability. In order to use > FreeTDS, we will need to create C# bindings to FreeTDS. > > [...] > > The best approach is to create a pure managed provider in C#, but who has > the time to implement the TDS protocol in C#? In the meantime, we can use > the native FreeTDS libraries for this. > There is jTDS at http://www.freetds.org/ but that involves time porting from > Java/JFC/JDBC to the C#/.NET/ADO.NET stuff. > > [...] > > The importance for FreeTDS and Mono running on Windows is that a developer > may have only one machine (me) to develop Mono, and Microsoft SQL Server > only runs on Windows. So, the development would have to be done on Windows. > > Anybody willing to help? At one point in the past I looked at creating a libgda provider for FreeTDS. Unfortunately, I ran out of time :). I would like to help create a provider for FreeTDS in mono. I'm not sure that going through libgda is the correct approach though. I do have Windows and Microsoft SQL Server, however I don't see why developing a SQL Server provider requires development to be done on Windows. It would require that the developer have SQL Server available on a network, but that's all. I haven't looked at the FreeTDS source in a while, so I don't know how difficult it would be to implement a native provider in C#. Since I'm trying to get back into mono development, I would be interested in helping out. -- Tim Coleman [43.28 N 80.31 W] BMath, Honours Combinatorics and Optimization, University of Waterloo "Under capitalism, man exploits man. Under communism, it's just the opposite." -- J.K. Galbraith From yannick.koehler@colubris.com Wed Oct 16 15:45:10 2002 From: yannick.koehler@colubris.com (Yannick Koehler) Date: Wed, 16 Oct 2002 10:45:10 -0400 Subject: [Mono-list] Re: C# -> Binary In-Reply-To: References: Message-ID: <200210161045.10848.yannick.koehler@colubris.com> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Le October 16, 2002 09:04 am, Freddy BL a écrit: / On October 16, 2002 09:04 am, Freddy BL wrote: > >I really liked what I read on this language from a syntax/semantic > >point of view. Is there plan support to have this language generate > >binary instead of CLI code? > > I don't know if there existing at the moment plans for this, but the > eminent feature of C#/.net is the .net-platform itself. If you create > native-code, the code is neither platform-independent nor creates its a > bridge for different languages. So the nicest featues of C#/.net are lost. > > Btw: I think, that there was in any place here in the internet a side by > IBM, where IBM compares different Java-platforms/compilers/etc. And > Java-Bianary-Code programs runs on the IBM-JVM - according to IBM - faster > then the same programs compiled with gcj in native-code. It depends what you mean by nicest feature of C#/CLI... I'm not interested for my software to run on many platform without re-compilation. But I am interested in the - - includeless feature of C# - - EventHandler - - implicit conversion of int to object - - all type has a base object class - - better keyword such as internal, readonly. - - notion of safe/unsafe code for section using pointer - - {0}, {1} when printing instead of %s ... (which probably resume in better class library) - - Garbage Collector - - By default exception support - - Jagged arrays And others I forgot. Those interest me as they seems to make the code more comprehensive and remove annoyances. If the whole CLI stuff is needed for all those features to work then you're kind of right that it won't matter between a pre-compiled and a version compiled by the jit and cached. I have not gone through the CLI ECMA doc yet so I wasn't able to know by myself. - -- Yannick Koehler -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.6 (GNU/Linux) Comment: For info see http://www.gnupg.org iD8DBQE9rXt2fuKOJNEyL1URAmeZAKCBSjAqHcgInosyEeCULFEldlBRYACeLzpq 17BOv7EjRDrs0zuqgs5dUTw= =VrA7 -----END PGP SIGNATURE----- From danmorg@sc.rr.com Wed Oct 16 15:49:21 2002 From: danmorg@sc.rr.com (Daniel Morgan) Date: Wed, 16 Oct 2002 10:49:21 -0400 Subject: [Mono-list] Sybase and Microsoft SQL Server database support inMono ADO.NET In-Reply-To: <1034778854.6559.0.camel@tpc171.thnteach.htu.se> Message-ID: Richard, Can these students contribute their work to Mono under a X11/MIT license? I would be more than happy to use a port of jTDS to C# in Mono System.Data.SqlClient instead of FreeTDS. Thanks, Daniel -----Original Message----- From: mono-list-admin@ximian.com [mailto:mono-list-admin@ximian.com]On Behalf Of Richard Torkar Sent: Wednesday, October 16, 2002 10:34 AM To: Daniel Morgan Cc: Mono-List Subject: Re: [Mono-list] Sybase and Microsoft SQL Server database support inMono ADO.NET On Wed, 2002-10-16 at 15:59, Daniel Morgan wrote: > Hey, > > Currently, ADO.NET in Mono does not support Sybase nor Microsoft SQL Server. > Unless, you want to use System.Data.Odbc with unixODBC with FreeTDS on > Linux, System.Data.OleDb with libgda with FreeTDS on Linux, or with the > native ODBC support and MDAC on Windows. However, this adds a lot of > dependencies, configurations, and another layer for data to have to travel > degrading performance. > > I would like to create a provider for Microsoft SQL Server in > System.Data.SqlClient and for Sybase in Mono.Data.SybaseClient. It will use > the native FreeTDS libraries to provide this capability. In order to use > FreeTDS, we will need to create C# bindings to FreeTDS. I have two students planning to port jTDS to C#. Why don't you take that approach instead? I talked with Rodrigo about this yesterday. /Richard From rodrigo@ximian.com Wed Oct 16 15:55:20 2002 From: rodrigo@ximian.com (Rodrigo Moya) Date: 16 Oct 2002 16:55:20 +0200 Subject: [Mono-list] Sybase and Microsoft SQL Server database support in Mono ADO.NET In-Reply-To: References: Message-ID: <1034780120.11239.12.camel@localhost> On Wed, 2002-10-16 at 15:59, Daniel Morgan wrote: > Hey, > > Currently, ADO.NET in Mono does not support Sybase nor Microsoft SQL Server. > Unless, you want to use System.Data.Odbc with unixODBC with FreeTDS on > Linux, System.Data.OleDb with libgda with FreeTDS on Linux, or with the > native ODBC support and MDAC on Windows. However, this adds a lot of > dependencies, configurations, and another layer for data to have to travel > degrading performance. > > I would like to create a provider for Microsoft SQL Server in > System.Data.SqlClient and for Sybase in Mono.Data.SybaseClient. It will use > the native FreeTDS libraries to provide this capability. In order to use > FreeTDS, we will need to create C# bindings to FreeTDS. > hmm, if using FreeTDS, one implementation should be able to connect to both databases. So I think it would be a good idea to have a System.Data.TDS provider, and have then SD.SqlClient and MD.SybaseClient just inherit from it. > Is there a way that the C# bindings to FreeTDS could be used statically by > both assemblies: > System.Data.dll and Mono.Data.SybaseClient.dll? The FreeTDS C# bindings > could go in Mono.Data.FreeTDS. This way, we would not have to maintain two > copies of the C# bindings to FreeTDS. Can mono/mcs create static libraries > or assemblies? If not, I can always get the build files for System.Data and > Mono.Data.SybaseClient to point to the Mono.Data.FreeTDS C# files to build > as well. > The best approach is to create a pure managed provider in C#, but who has > the time to implement the TDS protocol in C#? In the meantime, we can use > the native FreeTDS libraries for this. > There is jTDS at http://www.freetds.org/ but that involves time porting from > Java/JFC/JDBC to the C#/.NET/ADO.NET stuff. > there is a jTDS JDBC driver that was based on FreeTDS, and then just forked from it. This means it is implementing the TDS protocol directly. Maybe that jTDS could be ported to C#. > FreeTDS can be found at http://www.freetds.org/ and builds and installs on > Linux and Windows. > For Windows, you will have to check out the latest freetds from cvs because > it includes fixes to build and install on Windows. > > See http://www.freetds.org/faq.html#How%20to%20I%20access%20the%20CVS > on how to check out freetds from cvs. > > Before Microsoft SQL Server support at System.Data.SqlClient can begin, the > PostgreSQL provider at System.Data.SqlClient will have to be moved to > Mono.Data.PostgreSqlClient. Can someone move this in cvs for me so we will > not lose history? > Miguel can do it, AFAIK. cheers -- Rodrigo Moya From rodrigo@ximian.com Wed Oct 16 15:57:22 2002 From: rodrigo@ximian.com (Rodrigo Moya) Date: 16 Oct 2002 16:57:22 +0200 Subject: [Mono-list] Update of SQL# and the MySQL ADO.NET ProviderinMono In-Reply-To: References: Message-ID: <1034780241.11239.14.camel@localhost> On Wed, 2002-10-16 at 16:31, Daniel Morgan wrote: > Miguel, > > Can someone move SqlSharpCli.cs in cvs > > from mcs/class/System.Data/Test > > to mcs/SqlSharp/CommandLineInterface > maybe mcs/tools/SqlSharp is a better place? cheers -- Rodrigo Moya From danmorg@sc.rr.com Wed Oct 16 16:00:44 2002 From: danmorg@sc.rr.com (Daniel Morgan) Date: Wed, 16 Oct 2002 11:00:44 -0400 Subject: [Mono-list] Sybase and Microsoft SQL Server database support in Mono ADO.NET In-Reply-To: <20021016104310.A17588@tux.epenguin.org> Message-ID: Hey Tim, There is a FreeTDS provider in libgda now. Developing a SQL Server provider does not require development to be on Windows, but if you have only one computer - it does. I can only develop a Microsoft SQL Server provider on Windows because I only have one computer to run Microsoft SQL Server, Mono, and Windows. I can dual boot between Linux and Windows now, but I can not connect to SQL Server from Linux since SQL Server does not run on Linux. Unless, someone is willing to provide a public SQL Server database through the internet. Great! I'm glad you're back on Mono ADO.NET. Thanks, Daniel -----Original Message----- From: mono-list-admin@ximian.com [mailto:mono-list-admin@ximian.com]On Behalf Of Tim Coleman Sent: Wednesday, October 16, 2002 10:43 AM To: Daniel Morgan Cc: Mono-List Subject: Re: [Mono-list] Sybase and Microsoft SQL Server database support in Mono ADO.NET At one point in the past I looked at creating a libgda provider for FreeTDS. Unfortunately, I ran out of time :). I would like to help create a provider for FreeTDS in mono. I'm not sure that going through libgda is the correct approach though. I do have Windows and Microsoft SQL Server, however I don't see why developing a SQL Server provider requires development to be done on Windows. It would require that the developer have SQL Server available on a network, but that's all. I haven't looked at the FreeTDS source in a while, so I don't know how difficult it would be to implement a native provider in C#. Since I'm trying to get back into mono development, I would be interested in helping out. -- Tim Coleman [43.28 N 80.31 W] BMath, Honours Combinatorics and Optimization, University of Waterloo "Under capitalism, man exploits man. Under communism, it's just the opposite." -- J.K. Galbraith _______________________________________________ Mono-list maillist - Mono-list@ximian.com http://lists.ximian.com/mailman/listinfo/mono-list From rodrigo@ximian.com Wed Oct 16 15:58:31 2002 From: rodrigo@ximian.com (Rodrigo Moya) Date: 16 Oct 2002 16:58:31 +0200 Subject: [Mono-list] Sybase and Microsoft SQL Server database support in Mono ADO.NET In-Reply-To: <1034778854.6559.0.camel@tpc171.thnteach.htu.se> References: <1034778854.6559.0.camel@tpc171.thnteach.htu.se> Message-ID: <1034780311.11298.16.camel@localhost> On Wed, 2002-10-16 at 16:34, Richard Torkar wrote: > On Wed, 2002-10-16 at 15:59, Daniel Morgan wrote: > > Hey, > > > > Currently, ADO.NET in Mono does not support Sybase nor Microsoft SQL Server. > > Unless, you want to use System.Data.Odbc with unixODBC with FreeTDS on > > Linux, System.Data.OleDb with libgda with FreeTDS on Linux, or with the > > native ODBC support and MDAC on Windows. However, this adds a lot of > > dependencies, configurations, and another layer for data to have to travel > > degrading performance. > > > > I would like to create a provider for Microsoft SQL Server in > > System.Data.SqlClient and for Sybase in Mono.Data.SybaseClient. It will use > > the native FreeTDS libraries to provide this capability. In order to use > > FreeTDS, we will need to create C# bindings to FreeTDS. > > I have two students planning to port jTDS to C#. > Why don't you take that approach instead? > > I talked with Rodrigo about this yesterday. > yes, we talked yesterday. The only thing that worries me is that if somebody does the TDS provider, we won't have a job for your students :-) Maybe we should be looking for something else for them? cheers -- Rodrigo Moya From rodrigo@ximian.com Wed Oct 16 16:02:40 2002 From: rodrigo@ximian.com (Rodrigo Moya) Date: 16 Oct 2002 17:02:40 +0200 Subject: [Mono-list] Sybase and Microsoft SQL Server database support in Mono ADO.NET In-Reply-To: <20021016104310.A17588@tux.epenguin.org> References: <20021016104310.A17588@tux.epenguin.org> Message-ID: <1034780560.11239.19.camel@localhost> On Wed, 2002-10-16 at 16:43, Tim Coleman wrote: > On Wed, Oct 16, 2002 at 09:59:25AM -0400, Daniel Morgan wrote: > > Hey, > > > > Currently, ADO.NET in Mono does not support Sybase nor Microsoft SQL Server. > > Unless, you want to use System.Data.Odbc with unixODBC with FreeTDS on > > Linux, System.Data.OleDb with libgda with FreeTDS on Linux, or with the > > native ODBC support and MDAC on Windows. However, this adds a lot of > > dependencies, configurations, and another layer for data to have to travel > > degrading performance. > > > > I would like to create a provider for Microsoft SQL Server in > > System.Data.SqlClient and for Sybase in Mono.Data.SybaseClient. It will use > > the native FreeTDS libraries to provide this capability. In order to use > > FreeTDS, we will need to create C# bindings to FreeTDS. > > > > [...] > > > > The best approach is to create a pure managed provider in C#, but who has > > the time to implement the TDS protocol in C#? In the meantime, we can use > > the native FreeTDS libraries for this. > > There is jTDS at http://www.freetds.org/ but that involves time porting from > > Java/JFC/JDBC to the C#/.NET/ADO.NET stuff. > > > > [...] > > > > The importance for FreeTDS and Mono running on Windows is that a developer > > may have only one machine (me) to develop Mono, and Microsoft SQL Server > > only runs on Windows. So, the development would have to be done on Windows. > > > > Anybody willing to help? > > At one point in the past I looked at creating a libgda provider for > FreeTDS. Unfortunately, I ran out of time :). I would like to help > create a provider for FreeTDS in mono. I'm not sure that going through > libgda is the correct approach though. > it's not going through libgda, but it's gonna use the TDS protocol directly, either via FreeTDS or talking it directly (if we port jTDS). > I do have Windows and Microsoft SQL Server, however I don't see why > developing a SQL Server provider requires development to be done on > Windows. It would require that the developer have SQL Server available > on a network, but that's all. > yes, that's all. In fact, if we use FreeTDS, having a Sybase database server available would also help. cheers -- Rodrigo Moya From rodrigo@ximian.com Wed Oct 16 16:05:49 2002 From: rodrigo@ximian.com (Rodrigo Moya) Date: 16 Oct 2002 17:05:49 +0200 Subject: [Mono-list] Sybase and Microsoft SQL Server database support in Mono ADO.NET In-Reply-To: References: Message-ID: <1034780748.11298.21.camel@localhost> On Wed, 2002-10-16 at 17:00, Daniel Morgan wrote: > Hey Tim, > > There is a FreeTDS provider in libgda now. > > Developing a SQL Server provider does not require development to be on > Windows, but if you have only one computer - it does. > > I can only develop a Microsoft SQL Server provider on Windows because I only > have one computer to run Microsoft SQL Server, Mono, and Windows. I can > dual boot between Linux and Windows now, but I can not connect to SQL Server > from Linux since SQL Server does not run on Linux. Unless, someone is > willing to provide a public SQL Server database through the internet. > that would be really great, if someone can do it. cheers -- Rodrigo Moya From danmorg@sc.rr.com Wed Oct 16 16:10:47 2002 From: danmorg@sc.rr.com (Daniel Morgan) Date: Wed, 16 Oct 2002 11:10:47 -0400 Subject: [Mono-list] Sybase and Microsoft SQL Server database supportin Mono ADO.NET In-Reply-To: <1034780120.11239.12.camel@localhost> Message-ID: Hey Rodrigo, No, this would not work because System.Data.TDS would have to be private to the System.Data.dll assembly which would could not be seen by the Mono.Data.SybaseClient.dll assembly. System.Data in Mono must expose only the same classes that's in the .NET Framework. This is why I said we need to put the TDS common c# files in Mono.Data.TDS and then System.Data.dll and Mono.Data.SybaseClient.dll will both build from those files. There will be no Mono.Data.TDS assembly. >hmm, if using FreeTDS, one implementation should be able to connect to >both databases. So I think it would be a good idea to have a >System.Data.TDS provider, and have then SD.SqlClient and MD.SybaseClient >just inherit from it. Daniel From danmorg@sc.rr.com Wed Oct 16 16:12:57 2002 From: danmorg@sc.rr.com (Daniel Morgan) Date: Wed, 16 Oct 2002 11:12:57 -0400 Subject: [Mono-list] Update of SQL# and the MySQL ADO.NET ProviderinMono In-Reply-To: <1034780241.11239.14.camel@localhost> Message-ID: mcs/tools/SqlSharp sounds good to me. -----Original Message----- From: Rodrigo Moya [mailto:rodrigo@ximian.com] Sent: Wednesday, October 16, 2002 10:57 AM To: Daniel Morgan Cc: Miguel de Icaza; Mono List Subject: RE: [Mono-list] Update of SQL# and the MySQL ADO.NET ProviderinMono On Wed, 2002-10-16 at 16:31, Daniel Morgan wrote: > Miguel, > > Can someone move SqlSharpCli.cs in cvs > > from mcs/class/System.Data/Test > > to mcs/SqlSharp/CommandLineInterface > maybe mcs/tools/SqlSharp is a better place? cheers -- Rodrigo Moya From thaynes@openlinksw.com (Tim Haynes) Wed Oct 16 16:07:13 2002 From: thaynes@openlinksw.com (Tim Haynes) (Tim Haynes) Date: Wed, 16 Oct 2002 16:07:13 +0100 Subject: [Mono-list] Patch for bugzilla 31265, plus some pthreads In-Reply-To: <1034676074.15332.44.camel@hagbard.apathetic.discordia.org.uk> (Dick Porter's message of "15 Oct 2002 11:01:14 +0100") References: <87zntlhwri.fsf@purple.uknet.private> <1034351698.17088.105.camel@hagbard.apathetic.discordia.org.uk> <871y6tiex4.fsf@purple.uknet.private> <1034589715.5380.119.camel@hagbard.apathetic.discordia.org.uk> <87elatgmlm.fsf@purple.uknet.private> <1034676074.15332.44.camel@hagbard.apathetic.discordia.org.uk> Message-ID: <87smz6e82m.fsf@purple.uknet.private> --=-=-= Dick Porter writes: > In that case, could you come up with a patch that makes > GetCurrentThread() work as expected? Hi, Attached, a reworked diff with AttachThread made static. The mono_thread_attach now calls GetCurrentThread() which calls AttachThread() if the thread can't be found. Cheers, ~Tim -- Product Development Consultant OpenLink Software Tel: +44 (0) 20 8681 7701 Web: Universal Data Access & Data Integration Technology Providers --=-=-= Content-Disposition: attachment; filename=pthreads-reworked.diff Content-Description: fix for GetCurrentThread() ? autom4te.cache ? diff.diff ? mono.pc ? mono.spec ? stamp-h1 ? diff.diff.gz ? data/Makefile.in ? data/Makefile ? data/config ? doc/.jit-debug-sample2.swp ? mono/arch/sparc/.deps ? mono/io-layer/.threads.c.swp ? mono/metadata/.threads.c.swp ? mono/metadata/monosn ? mono/os/win32/.deps Index: mono/io-layer/threads.c =================================================================== RCS file: /mono/mono/mono/io-layer/threads.c,v retrieving revision 1.35 diff -u -b -r1.35 threads.c --- mono/io-layer/threads.c 3 Oct 2002 14:01:29 -0000 1.35 +++ mono/io-layer/threads.c 16 Oct 2002 13:43:03 -0000 @@ -263,6 +263,97 @@ return(handle); } +static gpointer +AttachThread(WapiSecurityAttributes *security G_GNUC_UNUSED, guint32 stacksize G_GNUC_UNUSED, + WapiThreadStart start, gpointer param, guint32 create, + guint32 *tid) +{ + struct _WapiHandle_thread *thread_handle; + struct _WapiHandlePrivate_thread *thread_private_handle; + gpointer handle; + gboolean ok; + int ret; + + mono_once(&thread_hash_once, thread_hash_init); + mono_once (&thread_ops_once, thread_ops_init); + + if(start==NULL) { + return(NULL); + } + + handle=_wapi_handle_new (WAPI_HANDLE_THREAD); + if(handle==_WAPI_HANDLE_INVALID) { + g_warning (G_GNUC_PRETTY_FUNCTION + ": error creating thread handle"); + return(NULL); + } + + _wapi_handle_lock_handle (handle); + + ok=_wapi_lookup_handle (handle, WAPI_HANDLE_THREAD, + (gpointer *)&thread_handle, + (gpointer *)&thread_private_handle); + if(ok==FALSE) { + g_warning (G_GNUC_PRETTY_FUNCTION + ": error looking up thread handle %p", handle); + _wapi_handle_unlock_handle (handle); + return(NULL); + } + + /* Hold a reference while the thread is active, because we use + * the handle to store thread exit information + */ + _wapi_handle_ref (handle); + + thread_handle->state=THREAD_STATE_START; + + /* Lock around the thread create, so that the new thread cant + * race us to look up the thread handle in GetCurrentThread() + */ + mono_mutex_lock(&thread_hash_mutex); + + ret=_wapi_timed_thread_attach(&thread_private_handle->thread, + create, start, thread_exit, param, + handle); + if(ret!=0) { +#ifdef DEBUG + g_message(G_GNUC_PRETTY_FUNCTION ": Thread attach error: %s", + strerror(ret)); +#endif + mono_mutex_unlock(&thread_hash_mutex); + _wapi_handle_unlock_handle (handle); + _wapi_handle_unref (handle); + + /* And again, because of the reference we took above */ + _wapi_handle_unref (handle); + return(NULL); + } + + g_hash_table_insert(thread_hash, &thread_private_handle->thread->id, + handle); + mono_mutex_unlock(&thread_hash_mutex); + +#ifdef DEBUG + g_message(G_GNUC_PRETTY_FUNCTION + ": Started thread handle %p thread %p ID %ld", handle, + thread_private_handle->thread, + thread_private_handle->thread->id); +#endif + + if(tid!=NULL) { +#ifdef PTHREAD_POINTER_ID + *tid=GPOINTER_TO_UINT(thread_private_handle->thread->id); +#else + *tid=thread_private_handle->thread->id; +#endif + } + + _wapi_handle_unlock_handle (handle); + + return(handle); +} + + gpointer OpenThread (guint32 access G_GNUC_UNUSED, gboolean inherit G_GNUC_UNUSED, guint32 tid) { gpointer ret=NULL; @@ -399,9 +490,11 @@ mono_mutex_lock(&thread_hash_mutex); ret=g_hash_table_lookup(thread_hash, &tid); - mono_mutex_unlock(&thread_hash_mutex); + if (!ret) + ret = AttachThread (NULL, 0, NULL, NULL, 0, NULL); + return(ret); } Index: mono/io-layer/timed-thread.c =================================================================== RCS file: /mono/mono/mono/io-layer/timed-thread.c,v retrieving revision 1.10 diff -u -b -r1.10 timed-thread.c --- mono/io-layer/timed-thread.c 1 Oct 2002 15:59:51 -0000 1.10 +++ mono/io-layer/timed-thread.c 16 Oct 2002 13:43:03 -0000 @@ -131,6 +131,33 @@ return(0); } +int _wapi_timed_thread_attach(TimedThread **threadp, + guint32 create_flags, + guint32 (*start_routine)(gpointer), + void (*exit_routine)(guint32, gpointer), + gpointer arg, gpointer exit_userdata) +{ + TimedThread *thread; + + thread=(TimedThread *)g_new0(TimedThread, 1); + + mono_mutex_init(&thread->join_mutex, NULL); + pthread_cond_init(&thread->exit_cond, NULL); + thread->create_flags = create_flags; + sem_init (&thread->suspend_sem, 0, 0); + thread->start_routine = start_routine; + thread->exit_routine = exit_routine; + thread->arg = arg; + thread->exit_userdata = exit_userdata; + thread->exitstatus = 0; + thread->exiting = FALSE; + + *threadp = thread; + + thread->id = pthread_self(); + return(0); +} + int _wapi_timed_thread_join(TimedThread *thread, struct timespec *timeout, guint32 *exitstatus) { Index: mono/io-layer/timed-thread.h =================================================================== RCS file: /mono/mono/mono/io-layer/timed-thread.h,v retrieving revision 1.5 diff -u -b -r1.5 timed-thread.h --- mono/io-layer/timed-thread.h 1 Oct 2002 15:59:51 -0000 1.5 +++ mono/io-layer/timed-thread.h 16 Oct 2002 13:43:03 -0000 @@ -41,6 +41,11 @@ guint32 (*start_routine)(gpointer), void (*exit_routine)(guint32, gpointer), gpointer arg, gpointer exit_userdata); +extern int _wapi_timed_thread_attach(TimedThread **threadp, + guint32 create_flags, + guint32 (*start_routine)(gpointer), + void (*exit_routine)(guint32, gpointer), + gpointer arg, gpointer exit_userdata); extern int _wapi_timed_thread_join(TimedThread *thread, struct timespec *timeout, guint32 *exitstatus); Index: mono/jit/jit.c =================================================================== RCS file: /mono/mono/mono/jit/jit.c,v retrieving revision 1.258 diff -u -b -r1.258 jit.c --- mono/jit/jit.c 15 Oct 2002 13:14:27 -0000 1.258 +++ mono/jit/jit.c 16 Oct 2002 13:43:38 -0000 @@ -4038,6 +4038,30 @@ jit_tls->end_of_stack = stack_start; } +void (*mono_thread_attach_aborted_cb ) (MonoObject *obj) = NULL; + +static void +mono_thread_abort_dummy (MonoObject *obj) +{ + if (mono_thread_attach_aborted_cb) + mono_thread_attach_aborted_cb (obj); + else + mono_thread_abort (obj); +} + +static void +mono_thread_attach_cb (gpointer stack_start) +{ + MonoJitTlsData *jit_tls; + + jit_tls = g_new0 (MonoJitTlsData, 1); + + TlsSetValue (mono_jit_tls_id, jit_tls); + + jit_tls->abort_func = mono_thread_abort_dummy; + jit_tls->end_of_stack = stack_start; +} + static CRITICAL_SECTION ms; static void @@ -4123,7 +4147,7 @@ mono_install_stack_walk (mono_jit_walk_stack); domain = mono_init (file); - mono_runtime_init (domain, mono_thread_start_cb); + mono_runtime_init_with_attach (domain, mono_thread_start_cb, mono_thread_attach_cb); return domain; } Index: mono/jit/jit.h =================================================================== RCS file: /mono/mono/mono/jit/jit.h,v retrieving revision 1.84 diff -u -b -r1.84 jit.h --- mono/jit/jit.h 2 Aug 2002 14:16:20 -0000 1.84 +++ mono/jit/jit.h 16 Oct 2002 13:43:38 -0000 @@ -48,6 +48,8 @@ extern int mono_exc_esp_offset; +extern void (*mono_thread_attach_aborted_cb ) (MonoObject *obj); + typedef struct _MBTree MBTree; typedef enum { Index: mono/metadata/appdomain.c =================================================================== RCS file: /mono/mono/mono/metadata/appdomain.c,v retrieving revision 1.46 diff -u -b -r1.46 appdomain.c --- mono/metadata/appdomain.c 1 Sep 2002 20:47:55 -0000 1.46 +++ mono/metadata/appdomain.c 16 Oct 2002 13:43:44 -0000 @@ -37,7 +37,7 @@ * operational. */ void -mono_runtime_init (MonoDomain *domain, MonoThreadStartCB start_cb) +mono_runtime_init_with_attach (MonoDomain *domain, MonoThreadStartCB start_cb, MonoThreadStartCB attach_cb) { MonoAppDomainSetup *setup; MonoAppDomain *ad; @@ -57,7 +57,7 @@ g_assert (mono_delegate_semaphore != INVALID_HANDLE_VALUE); InitializeCriticalSection (&mono_delegate_section); - mono_thread_init (domain, start_cb); + mono_thread_init_with_attach (domain, start_cb, attach_cb); mono_network_init (); @@ -65,6 +65,12 @@ } void +mono_runtime_init (MonoDomain *domain, MonoThreadStartCB start_cb) +{ + mono_runtime_init_with_attach (domain, start_cb, NULL); +} + +void mono_runtime_cleanup (MonoDomain *domain) { mono_runtime_shutdown = 1; Index: mono/metadata/assembly.c =================================================================== RCS file: /mono/mono/mono/metadata/assembly.c,v retrieving revision 1.46 diff -u -b -r1.46 assembly.c Index: mono/metadata/gc.c =================================================================== RCS file: /mono/mono/mono/metadata/gc.c,v retrieving revision 1.18 diff -u -b -r1.18 gc.c --- mono/metadata/gc.c 11 Oct 2002 20:24:11 -0000 1.18 +++ mono/metadata/gc.c 16 Oct 2002 13:43:45 -0000 @@ -210,6 +210,7 @@ /*static CRITICAL_SECTION handle_section;*/ static guint32 next_handle = 0; static gpointer *gc_handles = NULL; +static guint8 *gc_handle_types = NULL; static guint32 array_size = 0; /* @@ -219,6 +220,13 @@ * 2 -> weak */ +typedef enum { + HANDLE_WEAK, + HANDLE_WEAK_TRACK, + HANDLE_NORMAL, + HANDLE_PINNED +} HandleType; + /* * FIXME: make thread safe and reuse the array entries. */ @@ -226,25 +234,23 @@ ves_icall_System_GCHandle_GetTarget (guint32 handle) { MonoObject *obj; + gint32 type; if (gc_handles) { + type = handle & 0x3; + g_assert (type == gc_handle_types [handle >> 2]); obj = gc_handles [handle >> 2]; if (!obj) return NULL; - if ((handle & 0x3) > 1) + + if ((type == HANDLE_WEAK) || (type == HANDLE_WEAK_TRACK)) return REVEAL_POINTER (obj); + else return obj; } return NULL; } -typedef enum { - HANDLE_WEAK, - HANDLE_WEAK_TRACK, - HANDLE_NORMAL, - HANDLE_PINNED -} HandleType; - guint32 ves_icall_System_GCHandle_GetTargetHandle (MonoObject *obj, guint32 handle, gint32 type) { @@ -254,15 +260,18 @@ if (idx >= array_size) { #if HAVE_BOEHM_GC gpointer *new_array; + guint8 *new_type_array; if (!array_size) array_size = 16; new_array = GC_malloc (sizeof (gpointer) * (array_size * 2)); + new_type_array = GC_malloc (sizeof (guint8) * (array_size * 2)); if (gc_handles) { int i; memcpy (new_array, gc_handles, sizeof (gpointer) * array_size); + memcpy (new_type_array, gc_handle_types, sizeof (guint8) * array_size); /* need to re-register links for weak refs. test if GC_realloc needs the same */ for (i = 0; i < array_size; ++i) { - if (((gulong)new_array [i]) & 0x1) { /* all and only disguised pointers have it set */ + if ((gc_handle_types[i] == HANDLE_WEAK) || (gc_handle_types[i] == HANDLE_WEAK_TRACK)) { /* all and only disguised pointers have it set */ if (gc_handles [i] != (gpointer)-1) GC_unregister_disappearing_link (&(gc_handles [i])); if (new_array [i] != (gpointer)-1) @@ -272,21 +281,22 @@ } array_size *= 2; gc_handles = new_array; + gc_handle_types = new_type_array; #else g_error ("No GCHandle support built-in"); #endif } - h = idx << 2; /* resuse the type from the old target */ if (type == -1) type = handle & 0x3; + h = (idx << 2) | type; switch (type) { case HANDLE_WEAK: case HANDLE_WEAK_TRACK: - h |= 2; val = (gpointer)HIDE_POINTER (val); gc_handles [idx] = val; + gc_handle_types [idx] = type; #if HAVE_BOEHM_GC if (gc_handles [idx] != (gpointer)-1) GC_general_register_disappearing_link (&(gc_handles [idx]), obj); @@ -295,8 +305,8 @@ #endif break; default: - h |= type; gc_handles [idx] = val; + gc_handle_types [idx] = type; break; } return h; @@ -306,9 +316,11 @@ ves_icall_System_GCHandle_FreeHandle (guint32 handle) { int idx = handle >> 2; + int type = handle & 0x3; #ifdef HAVE_BOEHM_GC - if ((handle & 0x3) > 1) { + g_assert (type == gc_handle_types [idx]); + if ((type == HANDLE_WEAK) || (type == HANDLE_WEAK_TRACK)) { if (gc_handles [idx] != (gpointer)-1) GC_unregister_disappearing_link (&(gc_handles [idx])); } @@ -317,16 +329,19 @@ #endif gc_handles [idx] = (gpointer)-1; + gc_handle_types [idx] = (guint8)-1; } gpointer ves_icall_System_GCHandle_GetAddrOfPinnedObject (guint32 handle) { MonoObject *obj; + int type = handle & 0x3; if (gc_handles) { obj = gc_handles [handle >> 2]; - if ((handle & 0x3) > 1) { + g_assert (gc_handle_types [handle >> 2] == type); + if ((type == HANDLE_WEAK) || (type == HANDLE_WEAK_TRACK)) { obj = REVEAL_POINTER (obj); if (obj == (MonoObject *) -1) return NULL; Index: mono/metadata/threads.c =================================================================== RCS file: /mono/mono/mono/metadata/threads.c,v retrieving revision 1.33 diff -u -b -r1.33 threads.c --- mono/metadata/threads.c 3 Oct 2002 14:01:29 -0000 1.33 +++ mono/metadata/threads.c 16 Oct 2002 13:43:45 -0000 @@ -61,6 +61,9 @@ /* function called at thread start */ static MonoThreadStartCB mono_thread_start_cb = NULL; +/* function called at thread attach */ +static MonoThreadStartCB mono_thread_attach_cb = NULL; + /* The TLS key that holds the LocalDataStoreSlot hash in each thread */ static guint32 slothash_key; @@ -187,7 +190,7 @@ } MonoThread * -mono_thread_create (MonoDomain *domain, gpointer func) +mono_thread_create_arg (MonoDomain *domain, gpointer func, void *arg) { MonoThread *thread; HANDLE thread_handle; @@ -201,7 +204,7 @@ start_info->func = func; start_info->obj = thread; start_info->domain = domain; - /* start_info->this needs to be set? */ + start_info->this = arg; thread_handle = CreateThread(NULL, 0, start_wrapper, start_info, 0, &tid); #ifdef THREAD_DEBUG @@ -218,6 +221,58 @@ return thread; } +static void +mono_attached_thread_cleanup (MonoObject *obj) +{ +} + +MonoThread * +mono_thread_attach (MonoDomain *domain) +{ + MonoThread *thread; + HANDLE thread_handle; + struct StartInfo *start_info; + guint32 tid; + + thread = (MonoThread *)mono_object_new (domain, + mono_defaults.thread_class); + +/* start_info=g_new0 (struct StartInfo, 1); + start_info->func = NULL; + start_info->obj = thread; + start_info->domain = domain; + start_info->this = NULL; +*/ + start_info = NULL; +// thread_handle = AttachThread (NULL, 0, start_wrapper, start_info, 0, &tid); + thread_handle = GetCurrentThread (); +#ifdef THREAD_DEBUG + g_message(G_GNUC_PRETTY_FUNCTION ": Started thread ID %d (handle %p)", + tid, thread_handle); +#endif + g_assert (thread_handle); + + thread->handle=thread_handle; + thread->tid=tid; + + handle_store(thread); + + TlsSetValue (current_object_key, thread); + mono_domain_set (domain); + thread->tid=GetCurrentThreadId (); + if (mono_thread_attach_cb) + mono_thread_attach_cb (-1); + return thread; +} + + +MonoThread * +mono_thread_create (MonoDomain *domain, gpointer func) +{ + return mono_thread_create_arg (domain, func, NULL); +} + + HANDLE ves_icall_System_Threading_Thread_Thread_internal(MonoThread *this, MonoObject *start) { @@ -995,7 +1050,7 @@ } } -void mono_thread_init(MonoDomain *domain, MonoThreadStartCB start_cb) +void mono_thread_init_with_attach (MonoDomain *domain, MonoThreadStartCB start_cb, MonoThreadStartCB attach_cb) { /* Build a System.Threading.Thread object instance to return * for the main line's Thread.CurrentThread property. @@ -1033,6 +1088,7 @@ TlsSetValue(current_object_key, main_thread); mono_thread_start_cb = start_cb; + mono_thread_attach_cb = attach_cb; slothash_key=TlsAlloc(); @@ -1044,6 +1100,11 @@ GetCurrentProcess (); } +void mono_thread_init(MonoDomain *domain, MonoThreadStartCB start_cb) +{ + mono_thread_init_with_attach (domain, start_cb, NULL); +} + #ifdef THREAD_DEBUG static void print_tids (gpointer key, gpointer value, gpointer user) { Index: mono/metadata/threads.h =================================================================== RCS file: /mono/mono/mono/metadata/threads.h,v retrieving revision 1.18 diff -u -b -r1.18 threads.h --- mono/metadata/threads.h 3 Sep 2002 16:41:29 -0000 1.18 +++ mono/metadata/threads.h 16 Oct 2002 13:43:46 -0000 @@ -21,6 +21,8 @@ MonoThread *mono_thread_current (void); MonoThread *mono_thread_create (MonoDomain *domain, gpointer func); +MonoThread *mono_thread_create_arg (MonoDomain *domain, gpointer func, void *arg); +MonoThread *mono_thread_attach (MonoDomain *domain); extern HANDLE ves_icall_System_Threading_Thread_Thread_internal(MonoThread *this, MonoObject *start); extern void ves_icall_System_Threading_Thread_Thread_free_internal(MonoThread *this, HANDLE thread); --=-=-=-- From richard.torkar@htu.se Wed Oct 16 16:33:04 2002 From: richard.torkar@htu.se (Richard Torkar) Date: 16 Oct 2002 17:33:04 +0200 Subject: [Mono-list] Sybase and Microsoft SQL Server database support inMono ADO.NET In-Reply-To: References: Message-ID: <1034782384.17291.0.camel@tpc171.thnteach.htu.se> --=-ylaa1Efa4vt4Yw7LesFs Content-Type: text/plain Content-Transfer-Encoding: quoted-printable On Wed, 2002-10-16 at 16:49, Daniel Morgan wrote: > Richard, >=20 > Can these students contribute their work to Mono under a X11/MIT license? Yes, you pick the license they implement. But as I said to Rodrigo. They will start in January... /Richard --=-ylaa1Efa4vt4Yw7LesFs Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.7 (GNU/Linux) iD8DBQA9rYawmTD+ECRI4eERAu0PAJ491CFpxlq2FOqd/uOq9rdwp+FcwwCfdl4v vVIB7S1K30vb6VIMWKrN7JE= =gwN+ -----END PGP SIGNATURE----- --=-ylaa1Efa4vt4Yw7LesFs-- From groith@tcrz.net Wed Oct 16 16:33:27 2002 From: groith@tcrz.net (Guenther Roith) Date: Wed, 16 Oct 2002 17:33:27 +0200 Subject: [Mono-list] Sybase and Microsoft SQL Server database supportin Mono ADO.NET References: <20021016104310.A17588@tux.epenguin.org> <1034780560.11239.19.camel@localhost> Message-ID: <000e01c27529$5ff732a0$0100a8c0@roithw2k> Hello! > > At one point in the past I looked at creating a libgda provider for > > FreeTDS. Unfortunately, I ran out of time :). I would like to help > > create a provider for FreeTDS in mono. I'm not sure that going through > > libgda is the correct approach though. > > > it's not going through libgda, but it's gonna use the TDS protocol > directly, either via FreeTDS or talking it directly (if we port jTDS). A jTDS to C# port would be cool, but take care of the license. It's the original BSD license and therefor incompatible with the GPL, because of this: 3. advertising materials mentioning features or use of this software must display the following acknowledgement: This product includes software developed by CDS Networks, Inc. see: http://jtds.sourceforge.net/license.html If the port is changed enough, not to contain _any_ old code, would it still work? ;-) Johannes From danmorg@sc.rr.com Wed Oct 16 16:34:59 2002 From: danmorg@sc.rr.com (Daniel Morgan) Date: Wed, 16 Oct 2002 11:34:59 -0400 Subject: [Mono-list] Sybase and Microsoft SQL Server database supportin Mono ADO.NET In-Reply-To: Message-ID: Oops, I have to correct myself. If there will be a Mono.Data.TDS assembly, its main use would be unit testing the C# files that implement the TDS protocol. -----Original Message----- From: mono-list-admin@ximian.com [mailto:mono-list-admin@ximian.com]On Behalf Of Daniel Morgan Sent: Wednesday, October 16, 2002 11:11 AM To: Rodrigo Moya Cc: Mono List Subject: RE: [Mono-list] Sybase and Microsoft SQL Server database supportin Mono ADO.NET Hey Rodrigo, No, this would not work because System.Data.TDS would have to be private to the System.Data.dll assembly which would could not be seen by the Mono.Data.SybaseClient.dll assembly. System.Data in Mono must expose only the same classes that's in the .NET Framework. This is why I said we need to put the TDS common c# files in Mono.Data.TDS and then System.Data.dll and Mono.Data.SybaseClient.dll will both build from those files. There will be no Mono.Data.TDS assembly. >hmm, if using FreeTDS, one implementation should be able to connect to >both databases. So I think it would be a good idea to have a >System.Data.TDS provider, and have then SD.SqlClient and MD.SybaseClient >just inherit from it. Daniel _______________________________________________ Mono-list maillist - Mono-list@ximian.com http://lists.ximian.com/mailman/listinfo/mono-list From richard.torkar@htu.se Wed Oct 16 16:36:10 2002 From: richard.torkar@htu.se (Richard Torkar) Date: 16 Oct 2002 17:36:10 +0200 Subject: [Mono-list] Sybase and Microsoft SQL Server database support in Mono ADO.NET In-Reply-To: <1034780311.11298.16.camel@localhost> References: <1034778854.6559.0.camel@tpc171.thnteach.htu.se> <1034780311.11298.16.camel@localhost> Message-ID: <1034782571.17291.4.camel@tpc171.thnteach.htu.se> --=-aeOJhntaJi9FavqJ6hLT Content-Type: text/plain Content-Transfer-Encoding: quoted-printable On Wed, 2002-10-16 at 16:58, Rodrigo Moya wrote: > On Wed, 2002-10-16 at 16:34, Richard Torkar wrote: > > On Wed, 2002-10-16 at 15:59, Daniel Morgan wrote: > > > Hey, > > >=20 > > > Currently, ADO.NET in Mono does not support Sybase nor Microsoft SQL = Server. > > > Unless, you want to use System.Data.Odbc with unixODBC with FreeTDS o= n > > > Linux, System.Data.OleDb with libgda with FreeTDS on Linux, or with t= he > > > native ODBC support and MDAC on Windows. However, this adds a lot of > > > dependencies, configurations, and another layer for data to have to t= ravel > > > degrading performance. > > >=20 > > > I would like to create a provider for Microsoft SQL Server in > > > System.Data.SqlClient and for Sybase in Mono.Data.SybaseClient. It w= ill use > > > the native FreeTDS libraries to provide this capability. In order to= use > > > FreeTDS, we will need to create C# bindings to FreeTDS. > >=20 > > I have two students planning to port jTDS to C#. > > Why don't you take that approach instead? > >=20 > > I talked with Rodrigo about this yesterday. > >=20 > yes, we talked yesterday. The only thing that worries me is that if > somebody does the TDS provider, we won't have a job for your students > :-) Maybe we should be looking for something else for them? >=20 That's fine with me. The university I'm at would like to help in the project. If you can give certain projects that are interesting then I will show them to the students and (force) trick them into taking such a project as a thesis ;) /Richard --=-aeOJhntaJi9FavqJ6hLT Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.7 (GNU/Linux) iD8DBQA9rYdqmTD+ECRI4eERAlsKAKCcR3rt7oAuzogRdMsglwk9bzK6TACfeMg7 +IVl6vbi+XG2OtS/V5ovAbY= =P+ze -----END PGP SIGNATURE----- --=-aeOJhntaJi9FavqJ6hLT-- From danmorg@sc.rr.com Wed Oct 16 16:40:53 2002 From: danmorg@sc.rr.com (Daniel Morgan) Date: Wed, 16 Oct 2002 11:40:53 -0400 Subject: [Mono-list] Sybase and Microsoft SQL Server database supportin Mono ADO.NET In-Reply-To: <000e01c27529$5ff732a0$0100a8c0@roithw2k> Message-ID: The C# class libraries in Mono are under the X11 license. X11 license is more compatible with BSD though. -----Original Message----- From: Guenther Roith [mailto:groith@tcrz.net] Sent: Wednesday, October 16, 2002 11:33 AM To: Rodrigo Moya; Tim Coleman Cc: Daniel Morgan; Mono List Subject: Re: [Mono-list] Sybase and Microsoft SQL Server database supportin Mono ADO.NET Hello! > > At one point in the past I looked at creating a libgda provider for > > FreeTDS. Unfortunately, I ran out of time :). I would like to help > > create a provider for FreeTDS in mono. I'm not sure that going through > > libgda is the correct approach though. > > > it's not going through libgda, but it's gonna use the TDS protocol > directly, either via FreeTDS or talking it directly (if we port jTDS). A jTDS to C# port would be cool, but take care of the license. It's the original BSD license and therefor incompatible with the GPL, because of this: 3. advertising materials mentioning features or use of this software must display the following acknowledgement: This product includes software developed by CDS Networks, Inc. see: http://jtds.sourceforge.net/license.html If the port is changed enough, not to contain _any_ old code, would it still work? ;-) Johannes From fjh@cs.mu.oz.au Wed Oct 16 17:08:45 2002 From: fjh@cs.mu.oz.au (Fergus Henderson) Date: Thu, 17 Oct 2002 02:08:45 +1000 Subject: [Mono-list] C# -> Binary In-Reply-To: <200210160757.32569.yannick.koehler@colubris.com> References: <200210160757.32569.yannick.koehler@colubris.com> Message-ID: <20021016160842.GA26197@ceres.cs.mu.oz.au> On 16-Oct-2002, Yannick Koehler wrote: > I have gone through the C# documentation and I really liked what I read on > this language from a syntax/semantic point of view. Is there plan support to > have this language generate binary instead of CLI code? Such as an > integration to gcc or something that I could use to code and then get a > binary like I do for my C, C++ projects? Search this list for "ngen clone" or "native code generator". You will find . -- Fergus Henderson | "I have always known that the pursuit The University of Melbourne | of excellence is a lethal habit" WWW: | -- the last words of T. S. Garp. From miguel@ximian.com Wed Oct 16 17:16:05 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 16 Oct 2002 12:16:05 -0400 Subject: [Mono-list] Help needed with XSLT transformations(documentation browser) In-Reply-To: <200210160327.47265.manyoso@yahoo.com> References: <9891913C5BFE87429D71E37F08210CB92974F1@zeus.sfhq.friskit.com> <1034749429.14577.716.camel@erandi.boston.ximian.com> <200210160327.47265.manyoso@yahoo.com> Message-ID: <1034784964.14577.748.camel@erandi.boston.ximian.com> Hello, > Ouch. CSS is really necessary for good looking docs otherwise you get into > complex html that will not be consistent across browsers. Well, this would be true, but the layout for documentation is not a layout for Wired magazine, or some designer brand, so am not afraid ;-) > IMHO, documentation in html format that can be used with a regular browser > should be the first priority. For that you can use the ECMA doc tarball for offline browsing, or the web for online browsing. So today a simple web-page solution exists. Miguel From miguel@ximian.com Wed Oct 16 17:17:05 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 16 Oct 2002 12:17:05 -0400 Subject: [Mono-list] NAnt In-Reply-To: <3DAD0A02.000001.30839@email1.atc.cz> References: <3DAD0A02.000001.30839@email1.atc.cz> Message-ID: <1034785025.14577.750.camel@erandi.boston.ximian.com> Hello! > I already compiled (succesfully) NAnt sources in mono some time ago. There was several issues but now I hope are all solved. Only few tasks do not compile yet (mail,ndoc,...) - nothing important > > If you have all my bugfixes to nant there should be no problem. You could refer to this link of not: > http://maliger.webpark.cz/mono-nant.tar.gz Dick, could you review this? Miguel. From piersh@friskit.com Wed Oct 16 17:31:58 2002 From: piersh@friskit.com (Piers Haken) Date: Wed, 16 Oct 2002 09:31:58 -0700 Subject: [Mono-list] Crypto Unit tests on linux Message-ID: <9891913C5BFE87429D71E37F08210CB92974F4@zeus.sfhq.friskit.com> Yes, but by that reasoning we should probably be implementing ALL of mscorlib as internal calls. Piers. > -----Original Message----- > From: Paolo Molaro [mailto:lupus@ximian.com] > Sent: Wednesday, October 16, 2002 3:43 AM > To: mono-list > Subject: Re: [Mono-list] Crypto Unit tests on linux > > > On 10/16/02 Piers Haken wrote: > > Or, even better: > > > > 3) use: Assembly.Load, Activator.CreateInstance & MethodInfo.Invoke > > > > Assuming they're supported, of course. > > They are supported, but the problem with that is that this > still makes corlib depend on System.Xml (and System). If > someone wants to, like, embed the mono runtime in a crypto > token, he may need only corlib, but the above solution means > that he needs to include System and System.Xml as well > (increasing the space requirements). > > lupus > > -- > ----------------------------------------------------------------- > lupus@debian.org debian/rules > lupus@ximian.com Monkeys do it better > > _______________________________________________ > Mono-list maillist - Mono-list@ximian.com > http://lists.ximian.com/mailman/listinfo/mono-list > From miguel@ximian.com Wed Oct 16 17:22:24 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 16 Oct 2002 12:22:24 -0400 Subject: [Mono-list] Sybase and Microsoft SQL Server database supportin Mono ADO.NET In-Reply-To: <000e01c27529$5ff732a0$0100a8c0@roithw2k> References: <20021016104310.A17588@tux.epenguin.org> <1034780560.11239.19.camel@localhost> <000e01c27529$5ff732a0$0100a8c0@roithw2k> Message-ID: <1034785343.14577.754.camel@erandi.boston.ximian.com> Hello! > A jTDS to C# port would be cool, but take care of the license. It's the > original BSD license and therefor incompatible with the GPL, because of > this: It is not a problem for us, but it is annoying for those redistributing that work. Miguel From groith@tcrz.net Wed Oct 16 17:31:14 2002 From: groith@tcrz.net (Guenther Roith) Date: Wed, 16 Oct 2002 18:31:14 +0200 Subject: [Mono-list] Sybase and Microsoft SQL Server database supportinMono ADO.NET References: <20021016104310.A17588@tux.epenguin.org> <1034780560.11239.19.camel@localhost> <000e01c27529$5ff732a0$0100a8c0@roithw2k> <1034785343.14577.754.camel@erandi.boston.ximian.com> Message-ID: <002d01c27531$726b7f10$0100a8c0@roithw2k> Hello! I planed to port it some month ago and asked the copyright holder to change, but he suggested not to license code under a restrictive license like the GPL :-) So, they're unlikely to change, but of course it's worth a try to ask again. Johannes ----- Original Message ----- From: "Miguel de Icaza" To: "Guenther Roith" Cc: "Rodrigo Moya" ; "Tim Coleman" ; "Dan Morgan" ; "Mono List" Sent: Wednesday, October 16, 2002 6:22 PM Subject: Re: [Mono-list] Sybase and Microsoft SQL Server database supportinMono ADO.NET > Hello! > > > A jTDS to C# port would be cool, but take care of the license. It's the > > original BSD license and therefor incompatible with the GPL, because of > > this: > > It is not a problem for us, but it is annoying for those redistributing > that work. > > Miguel > From miguel@ximian.com Wed Oct 16 17:53:38 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 16 Oct 2002 12:53:38 -0400 Subject: [Mono-list] Sybase and Microsoft SQL Server database supportinMono ADO.NET In-Reply-To: <002d01c27531$726b7f10$0100a8c0@roithw2k> References: <20021016104310.A17588@tux.epenguin.org> <1034780560.11239.19.camel@localhost> <000e01c27529$5ff732a0$0100a8c0@roithw2k> <1034785343.14577.754.camel@erandi.boston.ximian.com> <002d01c27531$726b7f10$0100a8c0@roithw2k> Message-ID: <1034787218.14578.761.camel@erandi.boston.ximian.com> Hello! > I planed to port it some month ago and asked the copyright holder to change, > but he suggested not to license code under a restrictive license like the > GPL :-) > > So, they're unlikely to change, but of course it's worth a try to ask again. Ok, we just need them to change from the BSd to the X11, which is less restrictive ;-) Can you contact them? From vi64pa@koti.soon.fi Wed Oct 16 18:27:58 2002 From: vi64pa@koti.soon.fi (ville) Date: Wed, 16 Oct 2002 20:27:58 +0300 Subject: [Mono-list] SqlBinary Message-ID: <200210162027.58184.vi64pa@koti.soon.fi> --------------Boundary-00=_MI43WZMFHWJDWLHU962N Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Here is a testclass for SqlBinary. I have tested it with windows and one = error=20 occur: The MSDN says that if the index parameter (SqlBinary indexer)=20 indicates a position byond the length of the byte array it should throw=20 SqlNullvalueException but with windows it throws IndexOutOfRangeException= =2E I hope you can understand my english .-p ville --------------Boundary-00=_MI43WZMFHWJDWLHU962N Content-Type: text/x-c++src; charset="us-ascii"; name="SqlBinaryTest.cs" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="SqlBinaryTest.cs" // // SqlBinaryTest.cs - NUnit Test Cases for System.Data.SqlTypes.SqlBinary // // Ville Palo (vi64pa@koti.soon.fi) // // (C) Ville Palo 2002 // using NUnit.Framework; using System; using System.Data.SqlTypes; namespace MonoTests.System.Data.SqlTypes { public class SqlBinaryTest : TestCase { SqlBinary Test1; SqlBinary Test2; SqlBinary Test3; public SqlBinaryTest() : base ("System.Data.SqlTypes.SqlBinary") {} public SqlBinaryTest(string name) : base(name) {} protected override void TearDown() {} protected override void SetUp() { byte [] b1 = new Byte [2]; byte [] b2 = new Byte [3]; byte [] b3 = new Byte [2]; b1 [0] = 240; b1 [1] = 15; b2 [0] = 10; b2 [1] = 10; b2 [2] = 10; b3 [0] = 240; b3 [1] = 15; Test1 = new SqlBinary(b1); Test2 = new SqlBinary(b2); Test3 = new SqlBinary(b3); } public static ITest Suite { get { return new TestSuite(typeof(SqlBinary)); } } // Test constructor public void TestCreate() { byte [] b = new byte [3]; SqlBinary Test = new SqlBinary (b); Assert ("#A01", !(Test.IsNull)); } // Test public fields public void TestPublicFields() { Assert ("#B01", SqlBinary.Null.IsNull); } // Test properties public void TestProperties() { byte [] b = new byte [2]; b [0] = 64; b [1] = 128; SqlBinary TestBinary = new SqlBinary (b); // IsNull Assert ("#C01", SqlBinary.Null.IsNull); // Item AssertEquals ("#C02", (byte)128, TestBinary [1]); AssertEquals ("#C03", (byte)64, TestBinary [0]); // FIXME: MSDN says that should throw SqlNullValueException // but throws IndexOutOfRangeException try { byte test = TestBinary [TestBinary.Length]; Fail ("#C04"); } catch (Exception e) { AssertEquals ("#C05", typeof (SqlNullValueException), e.GetType ()); } try { byte test = SqlBinary.Null [2]; Fail ("#C06"); } catch (Exception e) { AssertEquals ("#C07", typeof (SqlNullValueException), e.GetType ()); } // Length AssertEquals ("#C08", 2, TestBinary.Length); try { int test = SqlBinary.Null.Length; Fail ("#C09"); } catch (Exception e) { AssertEquals ("#C10", typeof (SqlNullValueException), e.GetType ()); } // Value AssertEquals ("#C11", (byte)128, TestBinary [1]); AssertEquals ("#C12", (byte)64, TestBinary [0]); try { Byte [] test = SqlBinary.Null.Value; Fail ("#C13"); } catch (Exception e) { AssertEquals ("#C14", typeof (SqlNullValueException), e.GetType ()); } } // Methods public void TestComparisonMethods() { // GreaterThan Assert ("#D01", SqlBinary.GreaterThan (Test1, Test2).Value); Assert ("#D02", SqlBinary.GreaterThan (Test3, Test2).Value); Assert ("#D03", !SqlBinary.GreaterThan (Test2, Test1).Value); // GreaterThanOrEqual Assert ("#D04", SqlBinary.GreaterThanOrEqual (Test1, Test2).Value); Assert ("#D05", SqlBinary.GreaterThanOrEqual (Test1, Test2).Value); Assert ("#D06", !SqlBinary.GreaterThanOrEqual (Test2, Test1).Value); // LessThan Assert ("#D07", !SqlBinary.LessThan (Test1, Test2).Value); Assert ("#D08", !SqlBinary.LessThan (Test3, Test2).Value); Assert ("#D09", SqlBinary.LessThan (Test2, Test1).Value); // LessThanOrEqual Assert ("#D10", !SqlBinary.LessThanOrEqual (Test1, Test2).Value); Assert ("#D11", SqlBinary.LessThanOrEqual (Test3, Test1).Value); Assert ("#D12", SqlBinary.LessThanOrEqual (Test2, Test1).Value); // Equals Assert ("#D13", !Test1.Equals (Test2)); Assert ("#D14", !Test3.Equals (Test2)); Assert ("#D15", Test3.Equals (Test1)); // NotEquals Assert ("#D16", SqlBinary.NotEquals (Test1, Test2).Value); Assert ("#D17", !SqlBinary.NotEquals (Test3, Test1).Value); Assert ("#D18", SqlBinary.NotEquals (Test2, Test1).Value); } public void TestCompareTo() { SqlString TestString = new SqlString ("This is a test"); Assert ("#E01", Test1.CompareTo(Test2) > 0); Assert ("#E02", Test2.CompareTo(Test1) < 0); Assert ("#E03", Test1.CompareTo(Test3) == 0); try { Test1.CompareTo (TestString); Fail ("#E04"); } catch(Exception e) { AssertEquals ("#E05", typeof (ArgumentException), e.GetType ()); } } public void TestGetHashCode() { AssertEquals ("#F01", Test1.GetHashCode (), Test1.GetHashCode ()); Assert ("#F02", Test2.GetHashCode () != Test1.GetHashCode ()); } public void TestGetType() { AssertEquals("#G01", "System.Data.SqlTypes.SqlBinary", Test1.GetType().ToString()); } public void TestConcat() { SqlBinary TestBinary; TestBinary = SqlBinary.Concat (Test2, Test3); AssertEquals ("H01", (byte)15, TestBinary [4]); TestBinary = SqlBinary.Concat (Test1, Test2); AssertEquals ("#H02", (byte)240, TestBinary [0]); AssertEquals ("#H03", (byte)15, TestBinary [1]); } public void TestToSqlGuid() { SqlBinary TestBinary = new SqlBinary (new byte [16]); SqlGuid TestGuid = TestBinary.ToSqlGuid (); Assert ("#I01", !TestGuid.IsNull); } public void TestToString() { AssertEquals ("#J01", "SqlBinary(3)", Test2.ToString ()); AssertEquals ("#J02", "SqlBinary(2)", Test1.ToString ()); } // OPERATORS public void TestAdditionOperator() { SqlBinary TestBinary = Test1 + Test2; AssertEquals ("#K01", (byte)240, TestBinary [0]); AssertEquals ("#K02", (byte)15, TestBinary [1]); } public void TestComparisonOperators() { // Equality Assert ("#L01", !(Test1 == Test2).Value); Assert ("#L02", (Test3 == Test1).Value); // Greater than Assert ("#L03", (Test1 > Test2).Value); Assert ("#L04", !(Test3 > Test1).Value); // Greater than or equal Assert ("#L05", (Test1 >= Test2).Value); Assert ("#L06", (Test3 >= Test2).Value); // Inequality Assert ("#L07", (Test1 != Test2).Value); Assert ("#L08", !(Test3 != Test1).Value); // Less than Assert ("#L09", !(Test1 < Test2).Value); Assert ("#L10", !(Test3 < Test2).Value); // Less than or equal Assert ("#L11", !(Test1 <= Test2).Value); Assert ("#L12", (Test3 <= Test1).Value); } public void TestSqlBinaryToByteArray() { byte [] TestByteArray = (Byte[])Test1; AssertEquals ("#M01", (byte)240, TestByteArray[0]); } public void TestSqlGuidToSqlBinary() { byte [] TestByteArray = new Byte [16]; TestByteArray [0] = 15; TestByteArray [1] = 200; SqlGuid TestGuid = new SqlGuid (TestByteArray); SqlBinary TestBinary = (SqlBinary)TestGuid; AssertEquals ("#N01", (byte)15, TestBinary [0]); } public void TestByteArrayToSqlBinary() { byte [] TestByteArray = new Byte [2]; TestByteArray [0] = 15; TestByteArray [1] = 200; SqlBinary TestBinary = (SqlBinary)TestByteArray; AssertEquals ("#O1", (byte)15, TestBinary [0]); } } } --------------Boundary-00=_MI43WZMFHWJDWLHU962N-- From groith@tcrz.net Wed Oct 16 18:33:02 2002 From: groith@tcrz.net (Guenther Roith) Date: Wed, 16 Oct 2002 19:33:02 +0200 Subject: [Mono-list] Sybase and Microsoft SQL Server databasesupportinMono ADO.NET References: <20021016104310.A17588@tux.epenguin.org> <1034780560.11239.19.camel@localhost> <000e01c27529$5ff732a0$0100a8c0@roithw2k> <1034785343.14577.754.camel@erandi.boston.ximian.com> <002d01c27531$726b7f10$0100a8c0@roithw2k> <1034787218.14578.761.camel@erandi.boston.ximian.com> Message-ID: <001b01c2753a$14c3bb80$0100a8c0@roithw2k> Hello! I could do. But I already did some time ago and failed. It's not real fun to get them away from forcing the sentence "This product includes software developed by CDS Networks, Inc.". So perhaps someone else has more luck persuading them ;-) They won't agree changing the whole thing, I guess. Perhaps they agree on changing the license in that way, that it automatically switches to X11, when the C#-port is finished, by adding: "This code is licensed under the X11 license, if ported to C#." Or would such a sentence conflict with US law? Johannes ----- Original Message ----- From: "Miguel de Icaza" To: "Guenther Roith" Cc: "Rodrigo Moya" ; "Tim Coleman" ; "Dan Morgan" ; "Mono List" Sent: Wednesday, October 16, 2002 6:53 PM Subject: Re: [Mono-list] Sybase and Microsoft SQL Server databasesupportinMono ADO.NET > Hello! > > > I planed to port it some month ago and asked the copyright holder to change, > > but he suggested not to license code under a restrictive license like the > > GPL :-) > > > > So, they're unlikely to change, but of course it's worth a try to ask again. > > Ok, we just need them to change from the BSd to the X11, which is less > restrictive ;-) Can you contact them? > > _______________________________________________ > Mono-list maillist - Mono-list@ximian.com > http://lists.ximian.com/mailman/listinfo/mono-list > From dietmar@ximian.com Wed Oct 16 18:42:47 2002 From: dietmar@ximian.com (Dietmar Maurer) Date: 16 Oct 2002 19:42:47 +0200 Subject: [Mono-list] Possible P/Invoke bug found in ODBC.NET In-Reply-To: References: Message-ID: <1034790167.9421.77.camel@tequila> Hi Brian, please can you provide a small test case to reproduce the bug? I already looked at the jit code but cant find the bug. So a small test case to reproduce it would be very helpful. - Dietmar On Wed, 2002-10-16 at 06:11, Brian Ritchie wrote: > I've run across what looks to be a bug with P/Invoke in mono... > > In the ODBC.NET provider, I've declared a reference to an external dll as > follows... > > [DllImport("odbc32.dll")] > public static extern OdbcReturn SQLDescribeCol(IntPtr StatementHandle, > ushort ColumnNumber, byte[] ColumnName, short BufferLength, ref short > NameLength, ref OdbcType DataType, ref short ColumnSize, ref short > DecimalDigits, ref short Nullable); > > The OdbcType is an enumeration declared as: > > public enum OdbcType : short > { > BigInt=-5, > Binary=-2, > ... > } > > This call works fine under ms.net...and the DataType parameter is returned > correctly. However, when run through mono on windows...it return 0. It > looks like mono isn't using the declared type of the enumeration: short. > > I modified the code as follows...and it works in mono and ms.net... > > [DllImport("odbc32.dll")] > public static extern OdbcReturn SQLDescribeCol(IntPtr StatementHandle, > ushort ColumnNumber, byte[] ColumnName, short BufferLength, ref short > NameLength, ref short DataType, ref short ColumnSize, ref short > DecimalDigits, ref short Nullable); > > Could someone on the runtime side take a look at this? > > Thanks, > Brian > > BTW... > > I've checked in the alternate Dllimport declaration for the ODBC.NET > provider so it will work in Mono. > Daniel, this should fix the problem you report to me today. > > > > > > > _________________________________________________________________ > Protect your PC - get McAfee.com VirusScan Online > http://clinic.mcafee.com/clinic/ibuy/campaign.asp?cid=3963 > > > _______________________________________________ > Mono-list maillist - Mono-list@ximian.com > http://lists.ximian.com/mailman/listinfo/mono-list From DENNISH@Raytek.com Wed Oct 16 18:51:38 2002 From: DENNISH@Raytek.com (Dennis Hayes) Date: Wed, 16 Oct 2002 10:51:38 -0700 Subject: [Mono-list] IndexOutOfRangeException Message-ID: It seems to me the IndexOutOfRangeException is more appropriate, maybe the docs are wrong? Dennis >Here is a testclass for SqlBinary. I have tested it with windows and one = >error=20 >occur: The MSDN says that if the index parameter (SqlBinary indexer)=20 >indicates a position byond the length of the byte array it should throw=20 >SqlNullvalueException but with windows it throws IndexOutOfRangeException= >=2E > >I hope you can understand my english .-p > >ville > From rogelio_robles@yahoo.com Wed Oct 16 18:54:14 2002 From: rogelio_robles@yahoo.com (Rogelio Robles) Date: Wed, 16 Oct 2002 10:54:14 -0700 (PDT) Subject: [Mono-list] Sybase and Microsoft SQL Server database support in Mono ADO.NET In-Reply-To: <1034780748.11298.21.camel@localhost> Message-ID: <20021016175414.33900.qmail@web10904.mail.yahoo.com> --- Rodrigo Moya wrote: > > I can only develop a Microsoft SQL Server provider > on Windows because I only > > have one computer to run Microsoft SQL Server, > Mono, and Windows. I can > > dual boot between Linux and Windows now, but I can > not connect to SQL Server > > from Linux since SQL Server does not run on Linux. > Unless, someone is > > willing to provide a public SQL Server database > through the internet. > > > that would be really great, if someone can do it. > To have access to an internet MS SQL server DB, you can try some of the of ASP.NET hosting companies. Here you can get a list of them: http://www.asp.net/Default.aspx?tabindex=5&tabid=40 I have personally played with Brinkster.com http://www.brinkster.com/Default.asp Some of them offer entry-level free accounts where you can deploy your own .aspx and query your DBs. Rogelio __________________________________________________ Do you Yahoo!? Faith Hill - Exclusive Performances, Videos & More http://faith.yahoo.com From ianm@ActiveState.com Wed Oct 16 18:58:36 2002 From: ianm@ActiveState.com (Ian MacLean) Date: Wed, 16 Oct 2002 10:58:36 -0700 Subject: [Mono-list] small compiler problem Message-ID: <3DADA8CC.6090409@activestate.com> the following code compiles fine with csc on but fails with mcs. class foo { public delegate void BuildEventHandler(object sender, object e); public static event BuildEventHandler BuildStarted; static void static1() { if (BuildStarted != null) { BuildStarted( null, null ); } } static void Main(string[] args){ } } with mcs I get the following compile error: staticbug.cs(9) error CS0120: An object reference is required for the non-static field `BuildStarted' Compilation failed: 1 error(s), 0 warnings It mistakenly thinks that BuildStarted is non static. This is with the latest mcs in cvs. Ian From tim@timcoleman.com Wed Oct 16 19:02:37 2002 From: tim@timcoleman.com (Tim Coleman) Date: Wed, 16 Oct 2002 14:02:37 -0400 Subject: [Mono-list] Sybase and Microsoft SQL Server database support in Mono ADO.NET In-Reply-To: <1034780120.11239.12.camel@localhost> References: <1034780120.11239.12.camel@localhost> Message-ID: <20021016140237.A18254@tux.epenguin.org> On Wed, Oct 16, 2002 at 04:55:20PM +0200, Rodrigo Moya wrote: > On Wed, 2002-10-16 at 15:59, Daniel Morgan wrote: > > > The best approach is to create a pure managed provider in C#, but who has > > the time to implement the TDS protocol in C#? In the meantime, we can use > > the native FreeTDS libraries for this. > > There is jTDS at http://www.freetds.org/ but that involves time porting from > > Java/JFC/JDBC to the C#/.NET/ADO.NET stuff. > > > there is a jTDS JDBC driver that was based on FreeTDS, and then just > forked from it. This means it is implementing the TDS protocol directly. > Maybe that jTDS could be ported to C#. I would support this approach, *if* potential licensing issues can be resolved. I don't think it would be a good use of resources to spend a lot of time porting jTDS only to find out that the licence is incompatible. Of course, if mono people don't mind advertising for the jTDS guys appearing in mono code, then it probably isn't an issue. It would be good if someone could get in contact with the jTDS folks to see what their take on this is. -- Tim Coleman [43.28 N 80.31 W] BMath, Honours Combinatorics and Optimization, University of Waterloo "Under capitalism, man exploits man. Under communism, it's just the opposite." -- J.K. Galbraith From rodrigo@ximian.com Wed Oct 16 22:30:52 2002 From: rodrigo@ximian.com (Rodrigo Moya) Date: 16 Oct 2002 23:30:52 +0200 Subject: [Mono-list] SqlBinary In-Reply-To: <200210162027.58184.vi64pa@koti.soon.fi> References: <200210162027.58184.vi64pa@koti.soon.fi> Message-ID: <1034803852.11298.33.camel@localhost> On Wed, 2002-10-16 at 19:27, ville wrote: > Here is a testclass for SqlBinary. I have tested it with windows and one error > occur: The MSDN says that if the index parameter (SqlBinary indexer) > indicates a position byond the length of the byte array it should throw > SqlNullvalueException but with windows it throws IndexOutOfRangeException. > Applied to CVS. As somebody else mentioned, could it be the docs are wrong? since it seems to be more appropriate to throw the IndexOutOfRangeException. cheers -- Rodrigo Moya From Sebastien Pouliot Wed Oct 16 23:13:59 2002 From: Sebastien Pouliot (Sebastien Pouliot) Date: Wed, 16 Oct 2002 18:13:59 -0400 Subject: [Mono-list] Crypto Unit tests on linux References: <001001c274a1$5a487590$0100a8c0@screamii> <1034778328.1812.2.camel@bubo> Message-ID: <01f801c27561$53c71a30$0301a8c0@einstein> Thanks for the log file Nick! The problem seems to come from all classes using RNGCryptoServiceProvider. The first logs show that the test couldn't read from (or read enough) random data from /dev/random. > ............... > ** (NUnitConsole_mono.exe:1759): WARNING **: Entropy error! Length != > bytes read > E........... Further down we see a System.NotImplementedException coming from unmanaged code. AFAIK this exception can only be thrown from the rand.c file in mono runtime. > TestFIPS140(MonoTests.System.Security.Cryptography.RandomNumberGeneratorTest ): The requested feature is not yet implemented(System.NotImplementedException) > in (unmanaged) 06 > System.Security.Cryptography.RNGCryptoServiceProvider:GetBytes (byte[]) > in <0x00004> 06 > System.Security.Cryptography.RNGCryptoServiceProvider:GetBytes (byte[]) > in <0x000b6> 00 > MonoTests.System.Security.Cryptography.RandomNumberGeneratorTest:TestFIPS140 () > in <0x00042> 04 > MonoTests.System.Security.Cryptography.RandomNumberGeneratorTest:TestFIPS140 (object,intptr,intptr) > in (unmanaged) 06 System.Reflection.MonoMethod:InternalInvoke > (object,object[]) > in <0x00004> 06 System.Reflection.MonoMethod:InternalInvoke > (object,object[]) > in <0x0009e> 00 System.Reflection.MonoMethod:Invoke > (object,System.Reflection.BindingFlags,System.Reflection.Binder,object[],Sys tem.Globalization.CultureInfo) I don't know much about the internal of /dev/random so I'm not sure if this is a configuration issue, affecting only your system, or something that's affecting everyone. Can anyone confirm is the tests pass or failed on their (non-Windows) OS ? I've also c.c. Mark Crichton who's the author of both the RNGCryptoServiceProvider.cs and rand.c files. Maybe he can help us determine what's wrong about the test. Thanks again for the log. Sebastien Pouliot Security Architect, Motus Technologies, http://www.motus.com/ work: spouliot@motus.com home: spouliot@videotron.ca From Sebastien Pouliot Wed Oct 16 23:30:53 2002 From: Sebastien Pouliot (Sebastien Pouliot) Date: Wed, 16 Oct 2002 18:30:53 -0400 Subject: [Mono-list] Crypto Unit tests on linux References: <9891913C5BFE87429D71E37F08210CB92974F3@zeus.sfhq.friskit.com> <20021016104253.GB5321@debian.org> Message-ID: <020d01c27563$b01714f0$0301a8c0@einstein> Thanks for all three options. > 1) write a small xml parser that handles just the stuff you need in corlib > 2) (better, IMHO) write an internalcall that uses the GMarkup parser > in glib and fills in the RSA and DSA structures. > > 3) use: Assembly.Load, Activator.CreateInstance & MethodInfo.Invoke I would find the reflection stuff much easier but Paolo has a good point. I've participated in the design and implementation of a hardware token which included crypto, smart cards and biometry (and I even looked at how we could get a JVM into that box). I know that I would have hated any design that didn't minimize dependencies as much as possible (as such design are often very limited on memory space). However I would like very much, if possible, that the crypto classes to be implemented using 100% managed code and I know that some other classes are gonna require a lightweigth XML parser (probably CryptoConfig but I've not finished looking at the System.Configuration classes). So I will put the small parser on my todo list (unless someone else is interested :-) and comment the current "bad" code so the tests (and classes) can be compiled back into mono. Thanks, Sebastien Pouliot Security Architect, Motus Technologies, http://www.motus.com/ work: spouliot@motus.com home: spouliot@videotron.ca From piersh@friskit.com Thu Oct 17 03:10:13 2002 From: piersh@friskit.com (Piers Haken) Date: Wed, 16 Oct 2002 19:10:13 -0700 Subject: [Mono-list] Crypto Unit tests on linux Message-ID: <9891913C5BFE87429D71E37F08210CB92974F5@zeus.sfhq.friskit.com> Well, go ahead, but it still seems brain-dead to be reimplmenting something that's already done. The space argument is fatuous - have you ever looked at the memory profile of a running mono app? Isn't it better to get this stuff running in the most portable way without duplicating whole chunks of effort just to satisfy some far-off 1% scenario? Piers. -----Original Message----- From: Sebastien Pouliot [mailto:spouliot@videotron.ca] Sent: Wednesday, October 16, 2002 3:31 PM To: mono-list Cc: Paolo Molaro; Piers Haken Subject: Re: [Mono-list] Crypto Unit tests on linux Thanks for all three options. > 1) write a small xml parser that handles just the stuff you need in > corlib > 2) (better, IMHO) write an internalcall that uses the GMarkup parser > in glib and fills in the RSA and DSA structures. > > 3) use: Assembly.Load, Activator.CreateInstance & MethodInfo.Invoke I would find the reflection stuff much easier but Paolo has a good point. I've participated in the design and implementation of a hardware token which included crypto, smart cards and biometry (and I even looked at how we could get a JVM into that box). I know that I would have hated any design that didn't minimize dependencies as much as possible (as such design are often very limited on memory space). However I would like very much, if possible, that the crypto classes to be implemented using 100% managed code and I know that some other classes are gonna require a lightweigth XML parser (probably CryptoConfig but I've not finished looking at the System.Configuration classes). So I will put the small parser on my todo list (unless someone else is interested :-) and comment the current "bad" code so the tests (and classes) can be compiled back into mono. Thanks, Sebastien Pouliot Security Architect, Motus Technologies, http://www.motus.com/ work: spouliot@motus.com home: spouliot@videotron.ca From tom7ca@yahoo.com Thu Oct 17 03:56:20 2002 From: tom7ca@yahoo.com (Tom) Date: Wed, 16 Oct 2002 19:56:20 -0700 (PDT) Subject: [Mono-list] patents on ISO/ECMA C# Message-ID: <20021017025620.98065.qmail@web11901.mail.yahoo.com> According to this quote in a recent ZDNET article by Microsoft's directory of intellectual property, any conforming implementation of ECMA/ISO C# runs afoul of Microsoft's patents: According to Microsoft's director of intellectual property Michele Herman, who I interviewed earlier this year, the answer is a qualified yes. "If someone implemented a product that conforms to the specification, we believe we have a patent or one pending that's essential to implementing the specification." You can find the full article at http://techupdate.zdnet.com/techupdate/stories/main/0,14179,2887217,00.html Could we please have some clarity whether or not standards-conforming C# implementations fall under some Microsoft patent? Thanks, Tom. __________________________________________________ Do you Yahoo!? Faith Hill - Exclusive Performances, Videos & More http://faith.yahoo.com From Sebastien Pouliot Thu Oct 17 04:01:39 2002 From: Sebastien Pouliot (Sebastien Pouliot) Date: Wed, 16 Oct 2002 23:01:39 -0400 Subject: [Mono-list] Crypto Unit tests on linux References: <9891913C5BFE87429D71E37F08210CB92974F5@zeus.sfhq.friskit.com> Message-ID: <022e01c27589$83d4dcd0$0301a8c0@einstein> > Well, go ahead, but it still seems brain-dead to be reimplmenting > something that's already done. The space argument is fatuous - have you > ever looked at the memory profile of a running mono app? No. But I see mono and the class library as two separate entity (which seems normal as they are licensed differently). For example having 100% managed cryptographic classes would allow (without too much pain) running cryptographic applications with the .NET Compact Framework (which doesn't have the System.Security.Cryptography namespace included in mscorlib.dll). See http://www.gotdotnet.com/team/netcf/ApiDocumentation.aspx for what namespaces/classes are present in the Compact Framework. Yet in this case I confess that both using a independant parser or reflection into System.Xml would yield the same results (and invoking unmanaged code in the mono runtime wouldn't). However this may not be the always the case (perhaps customized PocketPC or something totally new). > Isn't it better to get this stuff running in the most portable way > without duplicating whole chunks of effort just to satisfy some far-off > 1% scenario? I agree this isn't a high priority (has we don't have any asymmetric crypto yet so the abstract class are useless now) but respectfully disagree on the % ;-) Sebastien Pouliot Security Architect, Motus Technologies, http://www.motus.com/ work: spouliot@motus.com home: spouliot@videotron.ca From poole@troilus.org Thu Oct 17 05:10:14 2002 From: poole@troilus.org (Michael Poole) Date: 17 Oct 2002 00:10:14 -0400 Subject: [Mono-list] patents on ISO/ECMA C# In-Reply-To: <20021017025620.98065.qmail@web11901.mail.yahoo.com> References: <20021017025620.98065.qmail@web11901.mail.yahoo.com> Message-ID: <87wuohg0yh.fsf@sanosuke.troilus.org> Tom writes: > Could we please have some clarity whether or not standards-conforming > C# implementations fall under some Microsoft patent? Are you volunteering to underwrite a lawyer's legal opinion on this? Companies make a lot of patent claims. Some are justified. Some are not. Sometimes the claims are justified by patents which could be invalidated. Only a court can definitively say which is the case -- and then only for one pair. A lawyer can give an opinion, but that would only be relevant to the extent that the lawyer says there is infringement. If the lawyer does not believe a product infringes, the patent holder can still file suit. Whether Microsoft has enforceable patent claims on Mono or not is irrelevant to the mono mailing lists; the proper forum to decide that is the courtroom (and informed by lawyers' opinions). Even if they do have enforceable patents on technology that Mono uses, they may do the surprising thing and license them to the Mono project under terms compatible with Mono's license.[1] The article does allude to this possibility, before engaging scare tactics. (NOTE: I am not a lawyer; the above is just my understanding of the facts -- both of law and the software. I could be wrong, but I think the last paragraph of the article hits the nail on the head about what Microsoft can and cannot do with patent claims on .NET technologies.) Michael [1]- IBM has done this for certain of their patents (for example, graph coloring register assignment as used in recent gcc). From tom7ca@yahoo.com Thu Oct 17 05:45:58 2002 From: tom7ca@yahoo.com (Tom) Date: Wed, 16 Oct 2002 21:45:58 -0700 (PDT) Subject: [Mono-list] patents on ISO/ECMA C# In-Reply-To: <87wuohg0yh.fsf@sanosuke.troilus.org> Message-ID: <20021017044558.24911.qmail@web11906.mail.yahoo.com> > Whether Microsoft has enforceable patent claims on Mono or not is > irrelevant to the mono mailing lists; I'm an incipient Mono user and potential open source library contributor. The implementation is shaping up and the language is a modest improvement over Java. I think it's a valid question to ask whether anybody knows what these recent questions by Microsoft representatives mean and whether anybody knows more about them. > Are you volunteering to underwrite a lawyer's legal opinion on this? I'm not necessarily looking for a legal opinion. I'm reasonably convinced that there is nothing in ECMA C# that hasn't been done before, and I believe that one could probably prevail given enough money and time. But that's not really interesting as far as I'm concerned; if push comes to shove, Microsoft could do a lot of harm with lawsuits, even if they are frivolous and even if they shoot themselves in the foot in the process. I'm looking for any information about Microsoft's intentions. Marketing and legal staff often say stupid things, but there must be some policy on these issues inside Microsoft. ECMA requires explicit disclosures of related intellectual property by the submitter, as well as other members of the organization; does anybody on the list know what Microsoft's statement was? What are they telling ISO? Also, presumably, people have technical contacts at Microsoft; what do they say? Someone on the Mono list must know a bit more than what that interview says, and if they could share it, that would be nice. If this question really is inappropriate and the current Mono crowd just doesn't want to think about it, I apologize. But then the reality is that people really have to take that uncertainty into account when building on top of Mono. Tom PS: Question 116 in the FAQ doesn't really answer this question either. Among other things, while Mono might muddle through even if there are patents, it could kill other C# implementations. And the things Microsoft has patents on might be just the things that make C# more attractive than Java to me. __________________________________________________ Do you Yahoo!? Faith Hill - Exclusive Performances, Videos & More http://faith.yahoo.com From jaaksimm@firm.ee Thu Oct 17 06:47:24 2002 From: jaaksimm@firm.ee (Jaak Simm) Date: Thu, 17 Oct 2002 08:47:24 +0300 Subject: [Mono-list] patents on ISO/ECMA C# References: <20021017025620.98065.qmail@web11901.mail.yahoo.com> Message-ID: <3DAE4EEC.3030207@firm.ee> I don't know whether it answers your question, but ECMA does not approve "recommendations of Standards which are covered by patents when such patents will not be licensed by their owners on a reasonable and non-discriminatory basis". Also ECMA has a policy in regard to patents that were not known during the approval of the standard. See points 1.3.x on the page http://www.ecma.ch/ecma1/MEMENTO/Code.htm Best, Jaak Tom wrote: >According to this quote in a recent ZDNET article by Microsoft's directory of >intellectual property, any conforming implementation of ECMA/ISO C# runs afoul >of Microsoft's patents: > > According to Microsoft's director of intellectual property Michele > Herman, who I interviewed earlier this year, the answer is a > qualified yes. "If someone implemented a product that conforms to > the specification, we believe we have a patent or one pending that's > essential to implementing the specification." > >You can find the full article at > > http://techupdate.zdnet.com/techupdate/stories/main/0,14179,2887217,00.html > >Could we please have some clarity whether or not standards-conforming >C# implementations fall under some Microsoft patent? > > From vi64pa@koti.soon.fi Thu Oct 17 08:45:04 2002 From: vi64pa@koti.soon.fi (ville) Date: Thu, 17 Oct 2002 09:45:04 +0200 Subject: [Mono-list] SqlBinary In-Reply-To: <1034803852.11298.33.camel@localhost> Message-ID: <200210170645.g9H6j4B27313@smtp2.sooninternet.net> > On Wed, 2002-10-16 at 19:27, ville wrote: > > Here is a testclass for SqlBinary. I have tested it with windows and one error > > occur: The MSDN says that if the index parameter (SqlBinary indexer) > > indicates a position byond the length of the byte array it should throw > > SqlNullvalueException but with windows it throws IndexOutOfRangeException. > > > Applied to CVS. > > As somebody else mentioned, could it be the docs are wrong? since it > seems to be more appropriate to throw the IndexOutOfRangeException. > Yes it could be (should be) error in docs, but I didn't find any other documention of SqlBinary than MSDN, so how can I find out is it error in docs or error in ms .net-framework. Should I consult the Microsoft? ville From rweather@zip.com.au Thu Oct 17 09:11:58 2002 From: rweather@zip.com.au (Rhys Weatherley) Date: Thu, 17 Oct 2002 18:11:58 +1000 Subject: [Mono-list] Re: [DotGNU]Qt.dll verification errors References: Message-ID: <3DAE70CE.338A44CE@zip.com.au> gopalv82@symonds.net wrote: > Well it works fine when I compile it with cscc ... The errant > code is in Qt.dll in the QT# .debs distro ... > > http://prdownloads.sourceforge.net/qtcsharp/qtsharp_0.5-1_i386.deb?download > > I am unable to test it as I have an old version of QT and am > unable to compile qtc ... But the error was reported on ilverify > of the Qt.dll > > I think it is a bug with the image read ? .. viz I'm getting '-1' > in member.c but no '.try' in the dissassembled code ... OK, found it. Sort of. I think it's a bug in mcs (sorry guys :-) ). The ECMA spec says that the "DataSize" member of an exception block should be "n * 12 + 4" for a tiny format block, or "n * 24 + 4" for a fat format block. Qt.dll appears to have "n * 24" instead in the fat format header. This causes pnet to drop sections because it thinks that they are "truncated", which technically they are. Pnet's behaviour appears to be consistent with MS'es compiler. Although I admit my version of csc is a little old. Weird thing is, MS'es diassembler can handle the qtsharp code. Maybe their range checking isn't all that great and so they process it through sheer dumb luck? Mono appears to handle both correct and incorrect formats through dumb luck also. Around line 1500 of mono/metadata/metadata.c: mh->num_clauses = is_fat ? sect_data_len / 24: sect_data_len / 12; If the value is "n * 24" or "n * 24 + 4", the "+ 4" will be truncated off and Mono will do the right thing. So, in summary, cscc-compiled code appears to be ECMA-compatible and should work on both pnet and Mono just fine, but mcs-compiled code won't work on pnet because my range-checking is a lot stricter. Unless I've missed something obvious, of course. I'm willing to be convinced that I'm wrong. I could add a "mcs bug filter" to pnet I suppose, but it would probably be better for mcs to be fixed to generate ECMA-compatible exception blocks. Cheers, Rhys. From akhilesh_agarwal@msn.com Wed Oct 16 19:26:45 2002 From: akhilesh_agarwal@msn.com (Akhilesh) Date: Wed, 16 Oct 2002 23:56:45 +0530 Subject: [Mono-list] Sybase and Microsoft SQL Server database support in Mono ADO.NET Message-ID: <0E4D8C6CCC84D74182BD27FB97AB1D6495F1@server.nd.adityainternational.com> Hi, >> The best approach is to create a pure managed provider in C#, but who has >> the time to implement the TDS protocol in C#? Has anyone tried using the Java to C# converter from Microsoft? After I run the converter it generates complete C# code from Java files with a list of items that could not be converted. The amount of effort required to port from Java to C# may be reduced this way. Just a thought! :) Akhilesh Agarwal From gaurav.vaish@amsoft.net Thu Oct 17 11:06:02 2002 From: gaurav.vaish@amsoft.net (Gaurav Vaish) Date: Thu, 17 Oct 2002 15:36:02 +0530 Subject: [Mono-list] Sybase and Microsoft SQL Server database support in Mono ADO.NET References: <0E4D8C6CCC84D74182BD27FB97AB1D6495F1@server.nd.adityainternational.com> Message-ID: <001101c275c4$ce9890a0$38ca14c0@amsoft.co.in> > Has anyone tried using the Java to C# converter from Microsoft? Are you talking about Jump? Who cares? I don't wanna pay for that. > After I run the converter it generates complete C# code from Java files > with a list of items that could not be converted. The amount of effort > required to port from Java to C# may be reduced this way. Surely enough - the time to port would be reduced. But here are a few issues: * It will be more or less equivalent to deassembling the java code. Does the license provide for that? * If the code is available, what license does it belong to? If it's something like X11 / MIT License, ooh.. let's directly port it. No need to worry about Jump. (Oh damn, I forgot some more points. The office is keeping me busy. Will write them as soon as I recall. ;-)) > > Just a thought! :) Happy hacking, Gaurav http://mastergaurav.virtualave.net/iitk ---------------------------- > > Akhilesh Agarwal From lupus@ximian.com Thu Oct 17 11:52:08 2002 From: lupus@ximian.com (Paolo Molaro) Date: Thu, 17 Oct 2002 12:52:08 +0200 Subject: [Mono-list] Re: [DotGNU]Qt.dll verification errors In-Reply-To: <3DAE70CE.338A44CE@zip.com.au> References: <3DAE70CE.338A44CE@zip.com.au> Message-ID: <20021017105208.GB8530@debian.org> On 10/17/02 Rhys Weatherley wrote: > The ECMA spec says that the "DataSize" member of an exception > block should be "n * 12 + 4" for a tiny format block, or "n * 24 + 4" > for a fat format block. Qt.dll appears to have "n * 24" instead > in the fat format header. This causes pnet to drop sections because > it thinks that they are "truncated", which technically they are. The spec also says: 24.4.5 Method Data Section At the next 4-byte boundary following the method body can be extra method data sections. These method data sections start with a two byte header (1 byte flags, 1 byte for the length of the actual data) or a four byte header ^^^^^^^^^^^^^^^^^^^^^^^^^ (1 byte for flags, and 3 bytes for length of the actual data). The first ^^^^^^^^^^^^^^^^^^^^^^^^^ byte determines the kind of the header, and what data is in the actual section: It may just be because I'm not a native speaker, but when there is a header + data and someone talks about the "length of the actual data" it quite clearly means the length refers to the length of data, not data+header. In the table it contradict itself and says that the DataSize needs the +4 (the header size). In fact, a few lines below the code that parses the header I added a comment: /* LAMESPEC: it seems the size includes the header */ > Mono appears to handle both correct and incorrect formats through > dumb luck also. Around line 1500 of mono/metadata/metadata.c: > > mh->num_clauses = is_fat ? sect_data_len / 24: sect_data_len / 12; > > If the value is "n * 24" or "n * 24 + 4", the "+ 4" will be > truncated off and Mono will do the right thing. There is nothing about dumb luck in that code: it does always the right thing with any of the two interpretations of the spec. I don't remember if (at the time I wrote the code) the ms tools produced exception headers with the actual data length or added the header size. The fact the peverify doesn't complain probably means that the behaviour is fine (as long as it's done in the last section). Anyway, I'll change reflection to output the header size as currently produced by csc since it actually doesn't change anything for mono. lupus -- ----------------------------------------------------------------- lupus@debian.org debian/rules lupus@ximian.com Monkeys do it better From akhilesh_agarwal@msn.com Thu Oct 17 12:35:24 2002 From: akhilesh_agarwal@msn.com (Akhilesh) Date: Thu, 17 Oct 2002 17:05:24 +0530 Subject: [Mono-list] Sybase and Microsoft SQL Server database support in Mono ADO.NET Message-ID: <0E4D8C6CCC84D74182BD27FB97AB1D6495F2@server.nd.adityainternational.com> >> Are you talking about Jump? I have this option in my VS.NET file menu. The wizard does not mention it as Jump. >> Who cares? I don't wanna pay for that. I have it and I am willing to run it for Mono. >> * It will be more or less equivalent to deassembling the java code. >> Does the license provide for that? The converter does not require Java byte code files nor does it do any disassembling. It simply reads the source code and converts it into C#. >> * If the code is available, what license does it belong to? If it's >> something like X11 / MIT License, ooh.. let's directly port it. No need >> to worry about Jump. Porting it manually or with the help of an automated tool is a matter of choice. Again the converter is not Jump. Licensing issues will be there if you port it manually as well. Akhilesh Agarwal From thaynes@openlinksw.com (Tim Haynes) Thu Oct 17 15:53:50 2002 From: thaynes@openlinksw.com (Tim Haynes) (Tim Haynes) Date: Thu, 17 Oct 2002 15:53:50 +0100 Subject: [Mono-list] SoapFormatter diff Message-ID: <87fzv52k1t.fsf@purple.uknet.private> --=-=-= Hi, We've made System.Runtime.Serialization.Formatters.Soap.SoapFormatter work - it now correctly executes the attached sample under mono/linux. Please find a diff attached :) Cheers, ~Tim -- Product Development Consultant OpenLink Software Tel: +44 (0) 20 8681 7701 Web: Universal Data Access & Data Integration Technology Providers --=-=-= Content-Disposition: attachment; filename=SoapFormatter.diff Content-Description: diff for SoapFormatter Index: class/System.Runtime.Serialization.Formatters.Soap/System.Runtime.Serialization.Formatters.Soap/ObjectDeserializer.cs =================================================================== RCS file: /mono/mcs/class/System.Runtime.Serialization.Formatters.Soap/System.Runtime.Serialization.Formatters.Soap/ObjectDeserializer.cs,v retrieving revision 1.2 diff -u -b -r1.2 ObjectDeserializer.cs --- class/System.Runtime.Serialization.Formatters.Soap/System.Runtime.Serialization.Formatters.Soap/ObjectDeserializer.cs 24 Aug 2002 10:39:22 -0000 1.2 +++ class/System.Runtime.Serialization.Formatters.Soap/System.Runtime.Serialization.Formatters.Soap/ObjectDeserializer.cs 17 Oct 2002 13:33:39 -0000 @@ -13,6 +13,9 @@ const string basicassembly = "mscorlib"; const string xmlnsassem = "http://schemas.microsoft.com/clr/nsassem/"; const string xmlns = "http://schemas.microsoft.com/clr/ns/"; + const string xmlns_SOAP_ENC = "http://schemas.xmlsoap.org/soap/encoding/"; + const string xmlns_SOAP_ENV = "http://schemas.xmlsoap.org/soap/envelope/"; + const string cTarget = "Target"; const string cDelegatesClass = "System.MulticastDelegate"; const string cMethodName = "MethodName"; @@ -410,7 +413,7 @@ private string GetMainAssemblyFullNameFromXml(out string AssemblyName) { - XmlNode SoapEnvNode= FXmlDoc.DocumentElement.GetElementsByTagName("SOAP-ENV:Body").Item(0); + XmlNode SoapEnvNode= FXmlDoc.DocumentElement.GetElementsByTagName("Body", xmlns_SOAP_ENV).Item(0); XmlNode MainObjectNode= SoapEnvNode.ChildNodes.Item(0); int StartIndex= MainObjectNode.Name.IndexOf(":"); string ClassName= MainObjectNode.Name.Substring(StartIndex + 1, MainObjectNode.Name.Length - StartIndex - 1); Index: class/System.Runtime.Serialization.Formatters.Soap/System.Runtime.Serialization.Formatters.Soap/ObjectSerializer.cs =================================================================== RCS file: /mono/mcs/class/System.Runtime.Serialization.Formatters.Soap/System.Runtime.Serialization.Formatters.Soap/ObjectSerializer.cs,v retrieving revision 1.3 diff -u -b -r1.3 ObjectSerializer.cs --- class/System.Runtime.Serialization.Formatters.Soap/System.Runtime.Serialization.Formatters.Soap/ObjectSerializer.cs 24 Aug 2002 10:39:22 -0000 1.3 +++ class/System.Runtime.Serialization.Formatters.Soap/System.Runtime.Serialization.Formatters.Soap/ObjectSerializer.cs 17 Oct 2002 13:33:44 -0000 @@ -9,6 +9,7 @@ using System.Xml; using System.Reflection; using System.Collections; +using System.Text; namespace System.Runtime.Serialization.Formatters.Soap { @@ -17,15 +18,18 @@ /*******const's section******/ const string cStringType = "System.String"; const string startxmlns = "xmlns:a"; - const string startdoc = "" + " " + - "" + " " + - "" + " " + + "SOAP-ENV:encodingStyle= \"http://schemas.xmlsoap.org/soap/encoding/\"" + " "; + const string startdoc_middle = ">" + " " + + ""; + const string startdoc_end = "" + " " + ""; + const string xmlns_SOAP_ENC = "http://schemas.xmlsoap.org/soap/encoding/"; + const string xmlns_SOAP_ENV = "http://schemas.xmlsoap.org/soap/envelope/"; const string xmlnsassem = "http://schemas.microsoft.com/clr/nsassem/"; const string xmlns = "http://schemas.microsoft.com/clr/ns/"; const string basicassembly = "mscorlib"; @@ -45,18 +49,21 @@ public ArrayList XmlObjectList; //the list of the xml representation of all objects private ArrayList FObjectList; //the listof the object been seralized private SoapWriter ObjectWrt; - private string FCurrentXml;// the object's xml representation /******method's section******/ - private void AddAssemblyToXml(string assemns) + private string ConcatAssembliesToXml() { - XmlDocument xmldoc = new XmlDocument(); - xmldoc.LoadXml(FCurrentXml); - XmlElement RootElemt = xmldoc.DocumentElement; - string xmlns = startxmlns + AssemblyList.Count.ToString(); - XmlAttribute NewAttr= xmldoc.CreateAttribute(xmlns); - RootElemt.SetAttributeNode(NewAttr); - RootElemt.SetAttribute(xmlns, assemns); - FCurrentXml= xmldoc.InnerXml; + StringBuilder bld = new StringBuilder (); + for (int inx = 1; inx <= AssemblyList.Count; inx++) + { + string xmlns = startxmlns + inx.ToString(); + string assemns = AssemblyList[inx - 1] as string; + + bld.Append (xmlns); + bld.Append ("='"); + bld.Append (assemns); + bld.Append ("'"); + } + return bld.ToString(); } private int AddAssembly(string assname, string nespname) @@ -71,7 +78,6 @@ if(Result< 0) { Result= AssemblyList.Add(XmlAssNs); - AddAssemblyToXml(XmlAssNs); } return Result; } @@ -343,7 +349,6 @@ public void BeginWrite() //writes the basic elements of a soap message { - FCurrentXml = startdoc; } public ObjectSerializer(Stream store) //assign the current stream @@ -361,13 +366,22 @@ AssemblyList.Clear(); XmlObjectList.Clear(); FObjectList.Clear(); - FCurrentXml= ""; } public void Serialize(object graph) { SerializeObject(graph, 0); - ObjectWrt.WriteObjectListToXml(FCurrentXml, FCurrentStream); + String FCurrentXml = + startdoc_start + + ConcatAssembliesToXml() + + startdoc_middle + + ObjectWrt.ConcatenateObjectList () + + startdoc_end; + XmlDocument XmlDoc = new XmlDocument(); + XmlDoc.LoadXml (FCurrentXml); + UTF8Encoding enc = new UTF8Encoding (false, true); + byte [] bytes = enc.GetBytes (XmlDoc.InnerXml); + FCurrentStream.Write (bytes, 0, bytes.Length); CleatLists(); } } Index: class/System.Runtime.Serialization.Formatters.Soap/System.Runtime.Serialization.Formatters.Soap/SoapReader.cs =================================================================== RCS file: /mono/mcs/class/System.Runtime.Serialization.Formatters.Soap/System.Runtime.Serialization.Formatters.Soap/SoapReader.cs,v retrieving revision 1.2 diff -u -b -r1.2 SoapReader.cs --- class/System.Runtime.Serialization.Formatters.Soap/System.Runtime.Serialization.Formatters.Soap/SoapReader.cs 24 Aug 2002 10:39:22 -0000 1.2 +++ class/System.Runtime.Serialization.Formatters.Soap/System.Runtime.Serialization.Formatters.Soap/SoapReader.cs 17 Oct 2002 13:33:52 -0000 @@ -10,6 +10,8 @@ internal class SoapReader { /******const section******/ + const string xmlns_SOAP_ENC = "http://schemas.xmlsoap.org/soap/encoding/"; + const string xmlns_SOAP_ENV = "http://schemas.xmlsoap.org/soap/envelope/"; const string cSoapRef = "href"; const string cObjectRef = "ref-"; @@ -65,7 +67,7 @@ public string ReadReferenceFullNameFromXml(string RefereneId) { string RefId= cObjectRef + RefereneId; - XmlNodeList NodeList = FXmlDoc.DocumentElement.GetElementsByTagName("SOAP-ENV:Body").Item(0).ChildNodes; + XmlNodeList NodeList = FXmlDoc.DocumentElement.GetElementsByTagName("Body", xmlns_SOAP_ENV).Item(0).ChildNodes; bool Continue= true; int index= 0; string Result= ""; @@ -457,7 +459,7 @@ /**Assemblies reader**/ public string GetAssemblyNameFromId(int id) { - XmlNodeList ObjList= ((XmlElement)FXmlDoc.DocumentElement.GetElementsByTagName("SOAP-ENV:Body").Item(0)).ChildNodes; + XmlNodeList ObjList= ((XmlElement)FXmlDoc.DocumentElement.GetElementsByTagName("Body", xmlns_SOAP_ENV).Item(0)).ChildNodes; bool Continue= true; int index= 0; string AssemblyName= ""; @@ -479,7 +481,7 @@ private string GetReferenceNameFromId(int id, ref XmlElement RefElement) { - XmlNodeList ObjList= ((XmlElement)FXmlDoc.DocumentElement.GetElementsByTagName("SOAP-ENV:Body").Item(0)).ChildNodes; + XmlNodeList ObjList= ((XmlElement)FXmlDoc.DocumentElement.GetElementsByTagName("Body", xmlns_SOAP_ENV).Item(0)).ChildNodes; bool Continue= true; int index= 0; string Result= ""; @@ -536,7 +538,7 @@ public XmlElement GetCurrentElement(string ElementName, string ElementId) { string RefId= cObjectRef + ElementId; - XmlNodeList NodeList = ((XmlElement)FXmlDoc.DocumentElement.GetElementsByTagName("SOAP-ENV:Body").Item(0)).GetElementsByTagName(ElementName); + XmlNodeList NodeList = ((XmlElement)FXmlDoc.DocumentElement.GetElementsByTagName("Body", xmlns_SOAP_ENV).Item(0)).GetElementsByTagName(ElementName); bool Continue= true; int index= 0; string Result= ""; Index: class/System.Runtime.Serialization.Formatters.Soap/System.Runtime.Serialization.Formatters.Soap/SoapWriter.cs =================================================================== RCS file: /mono/mcs/class/System.Runtime.Serialization.Formatters.Soap/System.Runtime.Serialization.Formatters.Soap/SoapWriter.cs,v retrieving revision 1.3 diff -u -b -r1.3 SoapWriter.cs --- class/System.Runtime.Serialization.Formatters.Soap/System.Runtime.Serialization.Formatters.Soap/SoapWriter.cs 24 Aug 2002 10:39:22 -0000 1.3 +++ class/System.Runtime.Serialization.Formatters.Soap/System.Runtime.Serialization.Formatters.Soap/SoapWriter.cs 17 Oct 2002 13:33:55 -0000 @@ -17,7 +17,10 @@ { /******const section******/ const string cNullObject = "xsi:null=\"1\"/"; - const string cSoapEnv = "SOAP-ENV:Body"; + const string cSoapEnv = "Body"; + const string xmlns_SOAP_ENC = "http://schemas.xmlsoap.org/soap/encoding/"; + const string xmlns_SOAP_ENV = "http://schemas.xmlsoap.org/soap/envelope/"; + const string cStartTag = "<"; const string cEndTag = ">"; const string cNumber = "#"; @@ -37,7 +40,7 @@ public ArrayList FXmlObjectList; public int FReferenceNumber; /******method's section******/ - private string ConcatenateObjectList() + public string ConcatenateObjectList() { string XmlResult= ""; object[] XmlList= FXmlObjectList.ToArray(); @@ -160,18 +163,6 @@ public void WriteStructTypeToXml(string StructName) { } - - public void WriteObjectListToXml(string SoapDoc, Stream SoapStream) - { - string XmlResult= ConcatenateObjectList(); - XmlDocument XmlDoc= new XmlDocument(); - XmlDoc.LoadXml(SoapDoc); - XmlNode XNode= XmlDoc.DocumentElement.GetElementsByTagName(cSoapEnv).Item(0); - XNode.InnerXml= XmlResult; - StreamWriter SoapWrt= new StreamWriter(SoapStream); - SoapWrt.Write(XmlDoc.InnerXml); - SoapWrt.Close(); - } public string GenerateSchemaArrayType(string ArrayType, int ArrayLength, int AssemblyIndex) { Index: class/System.XML/System.Xml/XmlDocument.cs =================================================================== RCS file: /mono/mcs/class/System.XML/System.Xml/XmlDocument.cs,v retrieving revision 1.38 diff -u -b -r1.38 XmlDocument.cs --- class/System.XML/System.Xml/XmlDocument.cs 12 Oct 2002 22:17:24 -0000 1.38 +++ class/System.XML/System.Xml/XmlDocument.cs 17 Oct 2002 13:34:17 -0000 @@ -349,8 +349,20 @@ public virtual XmlNodeList GetElementsByTagName (string name) { ArrayList nodeArrayList = new ArrayList (); - this.searchNodesRecursively (this, name, String.Empty, nodeArrayList); + this.searchNodesRecursively (this, name, nodeArrayList); return new XmlNodeArrayList (nodeArrayList); + } + + private void searchNodesRecursively (XmlNode argNode, string argName, + ArrayList argArrayList) + { + XmlNodeList xmlNodeList = argNode.ChildNodes; + foreach (XmlNode node in xmlNodeList){ + if (node.Name.Equals (argName)) + argArrayList.Add (node); + else + this.searchNodesRecursively (node, argName, argArrayList); + } } private void searchNodesRecursively (XmlNode argNode, string argName, string argNamespaceURI, Index: class/System.XML/System.Xml/XmlElement.cs =================================================================== RCS file: /mono/mcs/class/System.XML/System.Xml/XmlElement.cs,v retrieving revision 1.30 diff -u -b -r1.30 XmlElement.cs --- class/System.XML/System.Xml/XmlElement.cs 21 Sep 2002 04:20:31 -0000 1.30 +++ class/System.XML/System.Xml/XmlElement.cs 17 Oct 2002 13:34:17 -0000 @@ -178,8 +178,20 @@ public virtual XmlNodeList GetElementsByTagName (string name) { ArrayList nodeArrayList = new ArrayList (); - this.searchNodesRecursively (this, name, String.Empty, nodeArrayList); + this.searchNodesRecursively (this, name, nodeArrayList); return new XmlNodeArrayList (nodeArrayList); + } + + private void searchNodesRecursively (XmlNode argNode, string argName, + ArrayList argArrayList) + { + XmlNodeList xmlNodeList = argNode.ChildNodes; + foreach (XmlNode node in xmlNodeList){ + if (node.Name.Equals (argName)) + argArrayList.Add (node); + else + this.searchNodesRecursively (node, argName, argArrayList); + } } private void searchNodesRecursively (XmlNode argNode, string argName, string argNamespaceURI, Index: class/System.XML/System.Xml/XmlTextWriter.cs =================================================================== RCS file: /mono/mcs/class/System.XML/System.Xml/XmlTextWriter.cs,v retrieving revision 1.24 diff -u -b -r1.24 XmlTextWriter.cs --- class/System.XML/System.Xml/XmlTextWriter.cs 23 Sep 2002 00:39:30 -0000 1.24 +++ class/System.XML/System.Xml/XmlTextWriter.cs 17 Oct 2002 13:34:22 -0000 @@ -556,6 +556,8 @@ { string existingPrefix = namespaceManager.LookupPrefix (ns); + if (existingPrefix == String.Empty && !namespaceManager.HasNamespace (prefix)) + namespaceManager.AddNamespace (prefix, ns); if (prefix == String.Empty) prefix = existingPrefix; Index: class/System.XML/System.Xml/XmlWriter.cs =================================================================== RCS file: /mono/mcs/class/System.XML/System.Xml/XmlWriter.cs,v retrieving revision 1.11 diff -u -b -r1.11 XmlWriter.cs --- class/System.XML/System.Xml/XmlWriter.cs 26 Aug 2002 03:14:30 -0000 1.11 +++ class/System.XML/System.Xml/XmlWriter.cs 17 Oct 2002 13:34:22 -0000 @@ -63,7 +63,13 @@ public void WriteAttributeString (string prefix, string localName, string ns, string value) { if ((prefix == "xmlns") || (localName == "xmlns")) + { ns = value; + if (prefix == "xmlns" && namespaceManager.HasNamespace (localName)) + return; + else if (localName == "xmlns" && namespaceManager.HasNamespace (String.Empty)) + return; + } WriteStartAttribute (prefix, localName, ns); WriteString (value); --=-=-= Content-Disposition: attachment; filename=Class1.cs Content-Description: sample to test SoapFormatter using System; using System.IO; namespace testit { [Serializable] public class SPoint { public Double x = 1; public Double y = 2; public SPoint () {;} } class Class1 { static void serialize() { System.Runtime.Serialization.IFormatter xx = new System.Runtime.Serialization.Formatters.Soap.SoapFormatter (); FileStream _out = new FileStream ("out.xml", FileMode.Create, FileAccess.Write, FileShare.None); xx.Serialize (_out, new SPoint()); } static void deserialize() { System.Runtime.Serialization.IFormatter xx = new System.Runtime.Serialization.Formatters.Soap.SoapFormatter (); FileStream _out = new FileStream ("out.xml", FileMode.Open, FileAccess.Read, FileShare.Read); SPoint ob = xx.Deserialize (_out) as SPoint; Console.WriteLine (ob.x); } public static void Main (String [] args) { if (args.Length > 0) deserialize(); else serialize(); } } } --=-=-=-- From gopalv82@symonds.net Thu Oct 17 16:35:27 2002 From: gopalv82@symonds.net (Gopal V) Date: Thu, 17 Oct 2002 21:05:27 +0530 Subject: [Mono-list] Re: [DotGNU]Qt.dll verification errors In-Reply-To: <20021017105208.GB8530@debian.org>; from lupus@ximian.com on Thu, Oct 17, 2002 at 12:52:08PM +0200 References: <3DAE70CE.338A44CE@zip.com.au> <20021017105208.GB8530@debian.org> Message-ID: <20021017210527.A1435@md3.vsnl.net.in> If memory serves me right, Paolo Molaro wrote: > It may just be because I'm not a native speaker, but when there is a > header + data and someone talks about the "length of the actual data" > it quite clearly means the length refers to the length of data, not > data+header. In the table it contradict itself and says that the > DataSize needs the +4 (the header size). I'm not a native speaker either ,but the interpretation is quite equivocal. ... "length of actual data" might be considered as the size of "data as in file" which includes the +4 as well or otherwise. > The fact the peverify doesn't complain probably means that the behaviour > is fine (as long as it's done in the last section). Hmm.... last section ? ... Isn't the +4 generated for each section ? > Anyway, I'll change reflection to output the header size as currently > produced by csc since it actually doesn't change anything for mono. Gopal -- Shh.. be very very quiet, I'm hunting wabbits.. From danmorg@sc.rr.com Thu Oct 17 20:12:48 2002 From: danmorg@sc.rr.com (Daniel Morgan) Date: Thu, 17 Oct 2002 15:12:48 -0400 Subject: [Mono-list] Static CIL Libraries Message-ID: Can mono/mcs create and use static CIL libraries? If so, how do you create the static CIL libraries? How do you link these static CIL libraries with something you are bulding? What about Microsoft .NET, Rotor, or Portable.Net? If not, can we persuade the Mono team, the Microsoft .NET team, the Rotor team, the Portable.Net team, the ECMA standards people, and others to include standard static CIL libraries support in their C# compiler and CLR runtime? From mwh@sysrq.dk Thu Oct 17 21:50:40 2002 From: mwh@sysrq.dk (Martin Willemoes Hansen) Date: 17 Oct 2002 22:50:40 +0200 Subject: [Mono-list] wird problem Message-ID: <1034887840.1440.6.camel@spiril> --=-DbBHS/lBJyre6wdImtCJ Content-Type: text/plain Content-Transfer-Encoding: 7bit Hi! Ive ported a menu for jumpnbump to mono and gtk# When I run it from my shell it works nicely, part of what it does is to convert some data files to level preview images and of course launch the game. Unfortunatly when I launch it from the run-menu in gnome it does not function properly, it can only load one level-preview and cannot launch the game. Is this a mono/gtk# problem or is it my settings or programming of the menu? -- Martin Willemoes Hansen -------------------------------------------------------- E-Mail mwh@sysrq.dk Website mwh.sysrq.dk IRC MWH, freenode.net -------------------------------------------------------- --=-DbBHS/lBJyre6wdImtCJ Content-Disposition: attachment; filename=jumpnbump_menu-0.7.0.tar.bz2 Content-Type: application/x-bzip; name=jumpnbump_menu-0.7.0.tar.bz2 Content-Transfer-Encoding: base64 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 --=-DbBHS/lBJyre6wdImtCJ-- From erik.poupaert@chello.be Thu Oct 17 22:08:52 2002 From: erik.poupaert@chello.be (Erik Poupaert) Date: Thu, 17 Oct 2002 23:08:52 +0200 Subject: [Mono-list] handling large numbers Message-ID: Oct 14th, 2002: Crypto, Database work, Debugger, Documentation: """ We need either a managed or unmanaged set of classes for handling large numbers, and some volunteers to expose this functionality to C# (Either as an internal assembly, or as a set of P/Invoke, Internal call wrappers). """ The Mono project seems to have taken over the artificial distinction between libraries that belong to "the platform" (internal assemblies) and libraries that don't (P/Invoke). I definitely understand why Microsoft wants it this way: The platformization of an huge set of libraries makes the opus magnus difficult to reproduce, and forces everybody to deploy the whole set, whether a specific application needs the whole set or not. And control of the platform is definitely a cash cow, cfr. Windows. The opus-magnus strategy, aka, the trashcan strategy, is also an ideal strategy for creating an evermoving target. Sun does this brilliantly with Java. What I don't understand, however, is how this strategy could ever benefit open-source developers? Microsoft has other stated and unstated goals than Ximian, and other open-source developers. And by the way, it is simply impossible to defeat them at this game. This game requires big money, and the ability to leverage another monopoly to conquer adjacent territories. While I agree that sticking as much as possible to the ECMA-standard is a good thing, I still wonder, why implement it the Microsoft way? Why introduce this needless complexity? Why not just reuse code at source-level, leaving the packaging in dlls and executables up to the developer; and exploit the advantages that this may have. Any one single compelling advantage that can only be implemented by reusing code at source-level may very well attract large numbers of developers to Mono, since Microsoft will, by definition, not be able to provide the same compelling feature. What is the open-source advantage of forcing a given set of platform dlls through the throat of developer, compared to leaving it up the developer how he wants to do it? From erik.poupaert@chello.be Thu Oct 17 22:55:53 2002 From: erik.poupaert@chello.be (Erik Poupaert) Date: Thu, 17 Oct 2002 23:55:53 +0200 Subject: [Mono-list] laus stultitia Message-ID: "internal assembly", "a set of P/Invoke", "Internal call wrappers", "external assembly", "module", "component", "shared external assembly (global assembly cache)", "native code", "CIL", "managed, unmanaged code" ... All of this of course requires "JIT" or "AOT compilation", a "CLI, CLR" runtime, and so on ... Into how many different, arbitrary dimensions can you actually subdivide the same system, before it becomes absurd? From miguel@ximian.com Thu Oct 17 23:56:30 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 17 Oct 2002 18:56:30 -0400 Subject: [Mono-list] Static CIL Libraries In-Reply-To: References: Message-ID: <1034895389.14578.829.camel@erandi.boston.ximian.com> Hello! > Can mono/mcs create and use static CIL libraries? > > If so, how do you create the static CIL libraries? > How do you link these static CIL libraries with something you are bulding? > > What about Microsoft .NET, Rotor, or Portable.Net? > > If not, can we persuade the Mono team, the Microsoft .NET team, the Rotor > team, the Portable.Net team, the ECMA standards people, and others to > include standard static CIL libraries support in their C# compiler and CLR > runtime? The question really is what do you mean by a static CIL library. In the Unix world you have two kinds of libraries: static and dynamic. The difference being that the dynamic libraries contain code that can cope with position-independent layout of the code and can be loaded at different addresses, hence allowing dynamically linked executables to work. So the concept does not really apply to .NET, as there is no machine code in the actual assembly, so the assembly is always relocatable. Maybe you are thinking of some kind of support to *embed* a library into an executable. If you are looking at that, you should be thinking in terms of assemblies. Miguel. From poole@troilus.org Fri Oct 18 05:56:21 2002 From: poole@troilus.org (Michael Poole) Date: 18 Oct 2002 00:56:21 -0400 Subject: [Mono-list] managed code thunks for unmanaged functions? Message-ID: <87d6q89wga.fsf@sanosuke.troilus.org> I would like to write a C# PInvoke binding for the Sleepycat Berkeley Database library. Part of the API is a structure similar to this: typedef struct __db DB; struct __db { int (*func)(DB *db, int arg); }; int DB_create(DB **dbp); DB_create() allocates and initializes the structure, writes it into *dbp, and sets several function pointers inside the structure. The preferred way to perform operations on the database is to make calls using the function pointers kept in the DB struct. However, Mono does not seem to create wrappers for those function pointers. Has anyone started on this? Would it just reuse mono_create_trampoline() in some reasonably straightforward way? -- Michael From mliotta@r337.com Fri Oct 18 06:22:06 2002 From: mliotta@r337.com (Matt Liotta) Date: Fri, 18 Oct 2002 01:22:06 -0400 Subject: [Mono-list] patents on ISO/ECMA C# In-Reply-To: <20021017044558.24911.qmail@web11906.mail.yahoo.com> Message-ID: <003e01c27666$4c7d7f70$6401a8c0@FREEWILL> From my interview with David Stutz of Microsoft (http://www.devx.com/free/hotlinks/2002/ednote061902/ednote061902-1.asp) ... Q. On which parts of the ECMA specification does Microsoft hold patents? What are Microsoft's plans for enforcement of these patents? Microsoft's Stutz: I am certainly not the right person to ask on this question, and even if I were, I would be unlikely to be able to answer, since the Microsoft patent portfolio is large and constantly changing, and many patents aren't granted for years after they are submitted. It is important to point out that the reason that Microsoft participated in creating ECMA 334 and 335 is precisely so that others will be able to create their own commercial CLI implementations. Microsoft is very interested in seeing many CLI implementations succeed. To this end, Microsoft has said (for literally years now) that implementers of the spec will have royalty-free access to Microsoft intellectual property that might otherwise stand in the way of their implementing these standards. Matt Liotta President & CEO Montara Software, Inc. http://www.montarasoftware.com/ 888-408-0900 x901 > -----Original Message----- > From: mono-list-admin@ximian.com [mailto:mono-list-admin@ximian.com] On > Behalf Of Tom > Sent: Thursday, October 17, 2002 12:46 AM > To: Michael Poole > Cc: mono-list@ximian.com > Subject: Re: [Mono-list] patents on ISO/ECMA C# > > > Whether Microsoft has enforceable patent claims on Mono or not is > > irrelevant to the mono mailing lists; > > I'm an incipient Mono user and potential open source library > contributor. The implementation is shaping up and the language > is a modest improvement over Java. I think it's a valid question > to ask whether anybody knows what these recent questions by > Microsoft representatives mean and whether anybody knows more > about them. > > > Are you volunteering to underwrite a lawyer's legal opinion on this? > > I'm not necessarily looking for a legal opinion. I'm reasonably > convinced that there is nothing in ECMA C# that hasn't been done > before, and I believe that one could probably prevail given > enough money and time. But that's not really interesting > as far as I'm concerned; if push comes to shove, Microsoft > could do a lot of harm with lawsuits, even if they are frivolous > and even if they shoot themselves in the foot in the process. > > I'm looking for any information about Microsoft's intentions. Marketing > and legal staff often say stupid things, but there must > be some policy on these issues inside Microsoft. ECMA requires > explicit disclosures of related intellectual property by the submitter, > as well as other members of the organization; does anybody on the > list know what Microsoft's statement was? What are they telling ISO? > Also, presumably, people have technical contacts at Microsoft; what do > they say? Someone on the Mono list must know a bit more than what that > interview says, and if they could share it, that would be nice. > > If this question really is inappropriate and the current Mono crowd > just doesn't want to think about it, I apologize. But then the reality > is that people really have to take that uncertainty into account when > building on top of Mono. > > Tom > > PS: Question 116 in the FAQ doesn't really answer this question either. > Among other things, while Mono might muddle through even if there are > patents, it could kill other C# implementations. And the things Microsoft > has patents on might be just the things that make C# more attractive > than Java to me. > > > > > __________________________________________________ > Do you Yahoo!? > Faith Hill - Exclusive Performances, Videos & More > http://faith.yahoo.com > > _______________________________________________ > Mono-list maillist - Mono-list@ximian.com > http://lists.ximian.com/mailman/listinfo/mono-list From dietmar@ximian.com Fri Oct 18 07:42:54 2002 From: dietmar@ximian.com (Dietmar Maurer) Date: 18 Oct 2002 08:42:54 +0200 Subject: [Mono-list] managed code thunks for unmanaged functions? In-Reply-To: <87d6q89wga.fsf@sanosuke.troilus.org> References: <87d6q89wga.fsf@sanosuke.troilus.org> Message-ID: <1034923375.19892.32.camel@tequila> I am a bit unsure how to handle this. The dbp is passed as a ref parameter, and I don't know if MS PInvoke automatically creates delegates for that case - someone need to test that on MS. But the structures in db.h are quite complex and automatically creating up to 50 delegates in a single PInvoke call is IMO no good solution anyways. A simpler solution would be to write some C glue, functions which takes the DB pointer as argument and calls the appropriate function. But maybe someone knows a better solution? - Dietmar On Fri, 2002-10-18 at 06:56, Michael Poole wrote: > I would like to write a C# PInvoke binding for the Sleepycat Berkeley > Database library. Part of the API is a structure similar to this: > > typedef struct __db DB; > struct __db { > int (*func)(DB *db, int arg); > }; > int DB_create(DB **dbp); > > DB_create() allocates and initializes the structure, writes it into > *dbp, and sets several function pointers inside the structure. The > preferred way to perform operations on the database is to make calls > using the function pointers kept in the DB struct. > > However, Mono does not seem to create wrappers for those function > pointers. Has anyone started on this? Would it just reuse > mono_create_trampoline() in some reasonably straightforward way? > > -- Michael > > _______________________________________________ > Mono-list maillist - Mono-list@ximian.com > http://lists.ximian.com/mailman/listinfo/mono-list From j0k3rin@yahoo.co.in Fri Oct 18 05:46:37 2002 From: j0k3rin@yahoo.co.in (Zaphod) Date: Fri, 18 Oct 2002 10:16:37 +0530 Subject: [Mono-list] laus stultitia In-Reply-To: ; from erik.poupaert@chello.be on Thu, Oct 17, 2002 at 11:55:53PM +0200 References: Message-ID: <20021018101637.A1641@md3.vsnl.net.in> On Thu, Oct 17, 2002 at 11:55:53PM +0200, Erik Poupaert wrote: > Into how many different, arbitrary dimensions can you actually subdivide the > same system, before it becomes absurd? Any project needs Jargon, so that new people are impressed by the buzz words or just dazzled by the "knowledge" of others ... No project is safe from this language corruption ... And of course `The Empire' usually goes by the principle of "Divide and Rule" for any problem (software,markets, or even rivals). From mwh@sysrq.dk Fri Oct 18 09:49:34 2002 From: mwh@sysrq.dk (Martin Willemoes Hansen) Date: 18 Oct 2002 10:49:34 +0200 Subject: [Mono-list] jumpnbump-menu problem solved Message-ID: <1034930974.174.0.camel@spiril> It was my settings which where screwed ;) -- Martin Willemoes Hansen -------------------------------------------------------- E-Mail mwh@sysrq.dk Website mwh.sysrq.dk IRC MWH, freenode.net -------------------------------------------------------- From martin@gnome.org Fri Oct 18 09:42:09 2002 From: martin@gnome.org (Martin Baulig) Date: 18 Oct 2002 10:42:09 +0200 Subject: [Mono-list] Debugging problem In-Reply-To: <3DAD4C7D.8040209@openlinksw.co.uk> References: <3DAD4C7D.8040209@openlinksw.co.uk> Message-ID: <86d6q8b0ke.fsf@einstein.home-of-linux.org> George Kodinov writes: > Does the source level debugging of managed code work w/ the CVS version of Mono ? Hi, source level debugging support has been removed from the JIT and is no longer supported. The old source level debugging code was broken, the code was one big mess and it was too much of a headache for me to maintain it. We're currently working on a graphical debugger for GNU/Linux on the i386, you can find it in the `debugger' module. This debugger will be able to do source level debugging of managed (and unmanaged) code. I wanted to make a first public release this week, but I need to catch an airplane in a bit more than 24 hours and will be gone for the next three weeks, so that I've only a few hours left to hack on the debugger. I'll try to write as much documentation and fix as much bugs as possible in this time; Miguel will probably make the release next week or so (we also need another mono and gtk# release first). -- Martin Baulig martin@gnome.org From arnold@mis.mpg.de Fri Oct 18 11:20:59 2002 From: arnold@mis.mpg.de (Holger Arnold) Date: Fri, 18 Oct 2002 12:20:59 +0200 Subject: [Mono-list] arch_create_jit_trampoline () only for virtual methods? Message-ID: <200210180936.g9I9a6o22273@trna.ximian.com> Hello, the documentation in mono/jit/trampoline.c says that arch_create_jit_trampoline () is used for virtual methods. But, if I read the code in mono/jit/jit.c right, it is also used for non-virtual methods. Could please someone explain to me what is right and how virtual and non-virtual methods are handled differently with respect to the trampolining stuff? Holger From vi64pa@koti.soon.fi Fri Oct 18 11:25:58 2002 From: vi64pa@koti.soon.fi (ville) Date: Fri, 18 Oct 2002 13:25:58 +0300 Subject: [Mono-list] Test for SqlMoney Message-ID: <200210181325.58435.vi64pa@koti.soon.fi> --------------Boundary-00=_ABA6LRXVD4KVCHO8M4KQ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable There was a litle typo (my gues), in msdn docs. MSDN says that public fie= ld=20 MaxValue =3D 922,337,203,685,475.5807 (http://msdn.microsoft.com/library/default.asp?url=3D/library/en-us/cpref= /html/frlrfSystemDataSqlTypesSqlMoneyFieldsTopic.asp) The other page of MSDN says that SqlMoney Maximum value is=20 922,337,203,685,477.5807. =20 (http://msdn.microsoft.com/library/default.asp?url=3D/library/en-us/cpref= /html/frlrfsystemdatasqltypessqlmoneyclasstopic.asp) Tests approve thath MaxValue is 922,337,203,685,477.5807. =2E..And here is the test class. ville --------------Boundary-00=_ABA6LRXVD4KVCHO8M4KQ Content-Type: text/x-c++src; charset="us-ascii"; name="SqlMoneyTest.cs" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="SqlMoneyTest.cs" // // SqlMoneyTest.cs - NUnit Test Cases for System.Data.SqlTypes.SqlMoney // // Ville Palo (vi64pa@koti.soon.fi) // // (C) Ville Palo 2002 // using NUnit.Framework; using System; using System.Data.SqlTypes; namespace MonoTests.System.Data.SqlTypes { public class SqlMoneyTest : TestCase { private SqlMoney Test1; private SqlMoney Test2; private SqlMoney Test3; private SqlMoney Test4; public SqlMoneyTest() : base ("System.Data.SqlTypes.SqlMoney") {} public SqlMoneyTest(string name) : base(name) {} protected override void TearDown() {} protected override void SetUp() { Test1 = new SqlMoney (6464.6464d); Test2 = new SqlMoney (90000.0m); Test3 = new SqlMoney (90000.0m); Test4 = new SqlMoney (-45000.0m); } public static ITest Suite { get { return new TestSuite(typeof(SqlMoney)); } } // Test constructor public void TestCreate() { try { SqlMoney Test = new SqlMoney (1000000000000000m); Fail ("#B01"); } catch (Exception e) { AssertEquals ("#A02", typeof (OverflowException), e.GetType ()); } SqlMoney CreationTest = new SqlMoney ((decimal)913.3); AssertEquals ("A03", 913.3m, CreationTest.Value); try { SqlMoney Test = new SqlMoney (1e200); Fail ("#B04"); } catch (Exception e) { AssertEquals ("#A05", typeof (OverflowException), e.GetType ()); } SqlMoney CreationTest2 = new SqlMoney ((double)913.3); AssertEquals ("A06", 913.3m, CreationTest2.Value); SqlMoney CreationTest3 = new SqlMoney ((int)913); AssertEquals ("A07", 913m, CreationTest3.Value); SqlMoney CreationTest4 = new SqlMoney ((long)913.3); AssertEquals ("A08", 913m, CreationTest4.Value); } // Test public fields public void TestPublicFields() { AssertEquals ("#B01", 922337203685477.5807m, SqlMoney.MaxValue.Value); AssertEquals ("#B02", -922337203685477.5808m, SqlMoney.MinValue.Value); Assert ("#B03", SqlMoney.Null.IsNull); AssertEquals ("#B04", 0m, SqlMoney.Zero.Value); } // Test properties public void TestProperties() { AssertEquals ("#C01", 90000m, Test2.Value); AssertEquals ("#C02", -45000m, Test4.Value); Assert ("#C03", SqlMoney.Null.IsNull); } // PUBLIC METHODS public void TestArithmeticMethods() { SqlMoney TestMoney2 = new SqlMoney (2); // Add AssertEquals ("#D01", (SqlMoney)96464.6464, SqlMoney.Add (Test1, Test2)); AssertEquals ("#D02", (SqlMoney)180000, SqlMoney.Add (Test2, Test2)); AssertEquals ("#D03", (SqlMoney)45000, SqlMoney.Add (Test2, Test4)); try { SqlMoney test = SqlMoney.Add(SqlMoney.MaxValue, Test2); Fail ("#D04"); } catch (Exception e) { AssertEquals ("#D05", typeof (OverflowException), e.GetType ()); } // Divide AssertEquals ("#D06", (SqlMoney)45000, SqlMoney.Divide (Test2, TestMoney2)); try { SqlMoney test = SqlMoney.Divide (Test2, SqlMoney.Zero); Fail ("#D07"); } catch (Exception e) { AssertEquals ("#D08", typeof (DivideByZeroException), e.GetType()); } // Multiply AssertEquals ("#D09", (SqlMoney)581818176, SqlMoney.Multiply (Test1, Test2)); AssertEquals ("#D10", (SqlMoney)(-4050000000), SqlMoney.Multiply (Test3, Test4)); try { SqlMoney test = SqlMoney.Multiply (SqlMoney.MaxValue, Test2); Fail ("#D11"); } catch (Exception e) { AssertEquals ("#D12", typeof (OverflowException), e.GetType ()); } // Subtract AssertEquals ("#D13", (SqlMoney)0, SqlMoney.Subtract (Test2, Test3)); AssertEquals ("#D14", (SqlMoney)83535.3536, SqlMoney.Subtract (Test2, Test1)); try { SqlMoney test = SqlMoney.Subtract (SqlMoney.MinValue, Test2); } catch (Exception e) { AssertEquals ("#D15", typeof (OverflowException), e.GetType ()); } } public void TestCompareTo() { Assert ("#E01", Test1.CompareTo (Test2) < 0); Assert ("#E02", Test3.CompareTo (Test1) > 0); Assert ("#E03", Test3.CompareTo (Test2) == 0); Assert ("#E04", Test3.CompareTo (SqlMoney.Null) > 0); } public void TestEqualsMethods() { Assert ("#F01", !Test1.Equals (Test2)); Assert ("#F02", Test2.Equals (Test3)); Assert ("#F03", !SqlMoney.Equals (Test1, Test2).Value); Assert ("#F04", SqlMoney.Equals (Test3, Test2).Value); } public void TestGetHashCode() { // FIXME: Better way to test HashCode AssertEquals ("#G01", Test3.GetHashCode (), Test2.GetHashCode ()); Assert ("#G02", Test2.GetHashCode () != Test1.GetHashCode ()); } public void TestGetType() { AssertEquals ("#H01", "System.Data.SqlTypes.SqlMoney", Test1.GetType ().ToString ()); } public void TestGreaters() { // GreateThan () Assert ("#I01", !SqlMoney.GreaterThan (Test1, Test2).Value); Assert ("#I02", SqlMoney.GreaterThan (Test2, Test1).Value); Assert ("#I03", !SqlMoney.GreaterThan (Test2, Test3).Value); Assert ("#I04", SqlMoney.GreaterThan (Test2, SqlMoney.Null).IsNull); // GreaterTharOrEqual () Assert ("#I05", !SqlMoney.GreaterThanOrEqual (Test1, Test2).Value); Assert ("#I06", SqlMoney.GreaterThanOrEqual (Test2, Test1).Value); Assert ("#I07", SqlMoney.GreaterThanOrEqual (Test3, Test2).Value); Assert ("#I08", SqlMoney.GreaterThanOrEqual (Test3, SqlMoney.Null).IsNull); } public void TestLessers() { // LessThan() Assert ("#J01", !SqlMoney.LessThan (Test2, Test3).Value); Assert ("#J02", !SqlMoney.LessThan (Test2, Test1).Value); Assert ("#J03", SqlMoney.LessThan (Test1, Test2).Value); Assert ("#J04", SqlMoney.LessThan (SqlMoney.Null, Test2).IsNull); // LessThanOrEqual () Assert ("#J05", SqlMoney.LessThanOrEqual (Test1, Test2).Value); Assert ("#J06", !SqlMoney.LessThanOrEqual (Test2, Test1).Value); Assert ("#J07", SqlMoney.LessThanOrEqual (Test2, Test2).Value); Assert ("#J08", SqlMoney.LessThanOrEqual (Test2, SqlMoney.Null).IsNull); } public void TestNotEquals() { Assert ("#K01", SqlMoney.NotEquals (Test1, Test2).Value); Assert ("#K02", SqlMoney.NotEquals (Test2, Test1).Value); Assert ("#K03", !SqlMoney.NotEquals (Test2, Test3).Value); Assert ("#K04", !SqlMoney.NotEquals (Test3, Test2).Value); Assert ("#K05", SqlMoney.NotEquals (SqlMoney.Null, Test2).IsNull); } public void TestParse() { try { SqlMoney.Parse (null); Fail ("#L01"); } catch (Exception e) { AssertEquals ("#L02", typeof (ArgumentNullException), e.GetType ()); } try { SqlMoney.Parse ("not-a-number"); Fail ("#L03"); } catch (Exception e) { AssertEquals ("#L04", typeof (FormatException), e.GetType ()); } try { SqlMoney.Parse ("1000000000000000"); Fail ("#L05"); } catch (Exception e) { AssertEquals ("#L06", typeof (OverflowException), e.GetType ()); } AssertEquals("#L07", (decimal)150, SqlMoney.Parse ("150").Value); } public void TestConversions() { SqlMoney TestMoney100 = new SqlMoney (100); // ToDecimal AssertEquals ("#M01", (decimal)6464.6464, Test1.ToDecimal ()); // ToDouble AssertEquals ("#M02", (double)6464.6464, Test1.ToDouble ()); // ToInt32 AssertEquals ("#M03", (int)90000, Test2.ToInt32 ()); AssertEquals ("#M04", (int)6465, Test1.ToInt32 ()); // ToInt64 AssertEquals ("#M05", (long)90000, Test2.ToInt64 ()); AssertEquals ("#M06", (long)6465, Test1.ToInt64 ()); // ToSqlBoolean () Assert ("#M07", Test1.ToSqlBoolean ().Value); Assert ("#M08", !SqlMoney.Zero.ToSqlBoolean ().Value); Assert ("#M09", SqlMoney.Null.ToSqlBoolean ().IsNull); // ToSqlByte () AssertEquals ("#M10", (byte)100, TestMoney100.ToSqlByte ().Value); try { SqlByte b = (byte)Test2.ToSqlByte (); Fail ("#M11"); } catch (Exception e) { AssertEquals ("#M12", typeof (OverflowException), e.GetType ()); } // ToSqlDecimal () AssertEquals ("#M13", (decimal)6464.6464, Test1.ToSqlDecimal ().Value); AssertEquals ("#M14", (decimal)-45000, Test4.ToSqlDecimal ().Value); // ToSqlInt16 () AssertEquals ("#M15", (short)6465, Test1.ToSqlInt16 ().Value); try { SqlInt16 test = SqlMoney.MaxValue.ToSqlInt16().Value; Fail ("#M17"); } catch (Exception e) { AssertEquals ("#M18", typeof (OverflowException), e.GetType ()); } // ToSqlInt32 () AssertEquals ("#M19", (int)6465, Test1.ToSqlInt32 ().Value); AssertEquals ("#M20", (int)(-45000), Test4.ToSqlInt32 ().Value); try { SqlInt32 test = SqlMoney.MaxValue.ToSqlInt32 ().Value; Fail ("#M21"); } catch (Exception e) { AssertEquals ("#M22", typeof (OverflowException), e.GetType ()); } // ToSqlInt64 () AssertEquals ("#M23", (long)6465, Test1.ToSqlInt64 ().Value); AssertEquals ("#M24", (long)(-45000), Test4.ToSqlInt64 ().Value); // ToSqlSingle () AssertEquals ("#M25", (float)6464.6464, Test1.ToSqlSingle ().Value); // ToSqlString () AssertEquals ("#M26", "6464,6464", Test1.ToSqlString ().Value); AssertEquals ("#M27", "90000", Test2.ToSqlString ().Value); // ToString () AssertEquals ("#M28", "6464,6464", Test1.ToString ()); AssertEquals ("#M29", "90000", Test2.ToString ()); } // OPERATORS public void TestArithmeticOperators() { // "+"-operator AssertEquals ("#N01", (SqlMoney)96464.6464, Test1 + Test2); try { SqlMoney test = SqlMoney.MaxValue + SqlMoney.MaxValue; Fail ("#N02"); } catch (Exception e) { AssertEquals ("#N03", typeof (OverflowException), e.GetType ()); } // "/"-operator AssertEquals ("#N04", (SqlMoney)13.9219, Test2 / Test1); try { SqlMoney test = Test3 / SqlMoney.Zero; Fail ("#N05"); } catch (Exception e) { AssertEquals ("#N06", typeof (DivideByZeroException), e.GetType ()); } // "*"-operator AssertEquals ("#N07", (SqlMoney)581818176, Test1 * Test2); try { SqlMoney test = SqlMoney.MaxValue * Test1; Fail ("#N08"); } catch (Exception e) { AssertEquals ("#N09", typeof (OverflowException), e.GetType ()); } // "-"-operator AssertEquals ("#N10", (SqlMoney)83535.3536, Test2 - Test1); try { SqlMoney test = SqlMoney.MinValue - SqlMoney.MaxValue; Fail ("#N11"); } catch (Exception e) { AssertEquals ("#N12", typeof (OverflowException), e.GetType ()); } } public void TestThanOrEqualOperators() { // == -operator Assert ("#O01", (Test2 == Test2).Value); Assert ("#O02", !(Test1 == Test2).Value); Assert ("#O03", (Test1 == SqlMoney.Null).IsNull); // != -operator Assert ("#O04", !(Test2 != Test3).Value); Assert ("#O05", (Test1 != Test3).Value); Assert ("#O06", (Test1 != Test4).Value); Assert ("#O07", (Test1 != SqlMoney.Null).IsNull); // > -operator Assert ("#O08", (Test1 > Test4).Value); Assert ("#O09", (Test2 > Test1).Value); Assert ("#O10", !(Test2 > Test3).Value); Assert ("#O11", (Test1 > SqlMoney.Null).IsNull); // >= -operator Assert ("#O12", !(Test1 >= Test3).Value); Assert ("#O13", (Test3 >= Test1).Value); Assert ("#O14", (Test2 >= Test3).Value); Assert ("#O15", (Test1 >= SqlMoney.Null).IsNull); // < -operator Assert ("#O16", !(Test2 < Test1).Value); Assert ("#O17", (Test1 < Test3).Value); Assert ("#O18", !(Test2 < Test3).Value); Assert ("#O19", (Test1 < SqlMoney.Null).IsNull); // <= -operator Assert ("#O20", (Test1 <= Test3).Value); Assert ("#O21", !(Test3 <= Test1).Value); Assert ("#O22", (Test2 <= Test3).Value); Assert ("#O23", (Test1 <= SqlMoney.Null).IsNull); } public void TestUnaryNegation() { AssertEquals ("#P01", (decimal)(-6464.6464), -(Test1).Value); AssertEquals ("#P02", (decimal)45000, -(Test4).Value); } public void TestSqlBooleanToSqlMoney() { SqlBoolean TestBoolean = new SqlBoolean (true); AssertEquals ("#Q01", (decimal)1, ((SqlMoney)TestBoolean).Value); Assert ("#Q02", ((SqlDecimal)SqlBoolean.Null).IsNull); } public void TestSqlDecimalToSqlMoney() { SqlDecimal TestDecimal = new SqlDecimal (4000); SqlDecimal TestDecimal2 = new SqlDecimal (1e20); SqlMoney TestMoney = (SqlMoney)TestDecimal; AssertEquals ("#R01", TestMoney.Value, TestDecimal.Value); try { SqlMoney test = (SqlMoney)TestDecimal2; Fail ("#R02"); } catch (Exception e) { AssertEquals ("#R03", typeof (OverflowException), e.GetType ()); } } public void TestSqlDoubleToSqlMoney() { SqlDouble TestDouble = new SqlDouble (1e9); SqlDouble TestDouble2 = new SqlDouble (1e20); SqlMoney TestMoney = (SqlMoney)TestDouble; AssertEquals ("#S01", 1000000000m, TestMoney.Value); try { SqlMoney test = (SqlMoney)TestDouble2; Fail ("#S02"); } catch (Exception e) { AssertEquals ("#S03", typeof (OverflowException), e.GetType ()); } } public void SqlMoneyToDecimal() { AssertEquals ("#T01", (decimal)6464.6464, (decimal)Test1); AssertEquals ("#T02", (decimal)(-45000), (decimal)Test4); } public void SqlSingleToSqlMoney() { SqlSingle TestSingle = new SqlSingle (1e10); SqlSingle TestSingle2 = new SqlSingle (1e20); AssertEquals ("#U01", 10000000000m, ((SqlMoney)TestSingle).Value); try { SqlMoney test = (SqlMoney)TestSingle2; Fail ("#U02"); } catch (Exception e) { AssertEquals ("#U03", typeof (OverflowException), e.GetType()); } } public void TestSqlStringToSqlMoney() { SqlString TestString = new SqlString ("Test string"); SqlString TestString100 = new SqlString ("100"); AssertEquals ("#V01", (decimal)100, ((SqlMoney)TestString100).Value); try { SqlMoney test = (SqlMoney)TestString; Fail ("#V02"); } catch(Exception e) { AssertEquals ("#V03", typeof (FormatException), e.GetType ()); } } public void DecimalToSqlMoney() { decimal TestDecimal = 1e10m; decimal TestDecimal2 = 1e20m; AssertEquals ("#W01", 10000000000, ((SqlMoney)TestDecimal).Value); try { SqlMoney test = (SqlMoney)TestDecimal2; Fail ("#W02"); } catch (Exception e) { AssertEquals ("#W03", typeof (OverflowException), e.GetType ()); } } public void SqlByteToSqlMoney() { SqlByte TestByte = new SqlByte ((byte)200); AssertEquals ("#X01", 200m, ((SqlMoney)TestByte).Value); } public void IntsToSqlMoney() { SqlInt16 TestInt16 = new SqlInt16 (5000); SqlInt32 TestInt32 = new SqlInt32 (5000); SqlInt64 TestInt64 = new SqlInt64 (5000); AssertEquals ("#Y01", 5000m, ((SqlMoney)TestInt16).Value); AssertEquals ("#Y02", 5000m, ((SqlMoney)TestInt32).Value); AssertEquals ("#Y03", 5000m, ((SqlMoney)TestInt64).Value); try { SqlMoney test = (SqlMoney)SqlInt64.MaxValue; Fail ("#Y04"); } catch (Exception e) { AssertEquals ("#Y05", typeof (OverflowException), e.GetType ()); } } } } --------------Boundary-00=_ABA6LRXVD4KVCHO8M4KQ-- From fjh@cs.mu.oz.au Fri Oct 18 12:46:24 2002 From: fjh@cs.mu.oz.au (Fergus Henderson) Date: Fri, 18 Oct 2002 21:46:24 +1000 Subject: [Mono-list] Static CIL Libraries In-Reply-To: References: Message-ID: <20021018114624.GA22599@ceres.cs.mu.oz.au> On 17-Oct-2002, Daniel Morgan wrote: > Can mono/mcs create and use static CIL libraries? > > If so, how do you create the static CIL libraries? > How do you link these static CIL libraries with something you are bulding? > > What about Microsoft .NET, Rotor, or Portable.Net? Portable.Net has some support for that kind of thing, I believe. > If not, can we persuade the Mono team, the Microsoft .NET team, the Rotor > team, the Portable.Net team, the ECMA standards people, and others to > include standard static CIL libraries support in their C# compiler and CLR > runtime? Here is some of the feedback that we gave Microsoft about a closely related issue: | 3. Assembly resolution at static link time. | | .NET assumes a particular model of symbol resolution where the | decision of which assembly (the .NET unit of distribution) | each symbol belongs to is determined *at compile time*. | Mercury has a different model, where at compile time we only resolve | which *compilation unit* (which in Mercury are called "modules") | each symbol belongs to. Then at *static link time*, compilation | units are grouped into "libraries" (the Mercury unit of distribution). | Only then, at static link time rather than at compile time, | can it be determined which distribution unit (i.e. assembly) | each symbol reference refers to. | | The model that Mercury uses is more flexible. And of course this | model is not specific to Mercury; the same thing is supported by | traditional linkers for Unix and Windows. But it is not supported | by .NET. | | Currently if the assembly part of a symbol reference in a .NET | component is null, it is assumed to be in the current assembly. | But .NET should allow the assembly part of a symbol to be null, and | should provide a "static link" tool to resolve such null assembly | references. This tool should take as input an assembly, and a set of | other assemblies to link the first assembly against, and should output | a modified version of the first assembly in which any symbol reference | with null assembly part have had their assembly part filled in. The | assembly chosen should be the unique assembly among the set of | assemblies to link against which contains a symbol that matches the | symbol reference. If there is more than one such symbol, the tool | should instead issue an error message and not produce any output. -- Fergus Henderson | "I have always known that the pursuit The University of Melbourne | of excellence is a lethal habit" WWW: | -- the last words of T. S. Garp. From dietmar@ximian.com Fri Oct 18 13:30:04 2002 From: dietmar@ximian.com (Dietmar Maurer) Date: 18 Oct 2002 14:30:04 +0200 Subject: [Mono-list] arch_create_jit_trampoline () only for virtual methods? In-Reply-To: <200210180936.g9I9a6o22273@trna.ximian.com> References: <200210180936.g9I9a6o22273@trna.ximian.com> Message-ID: <1034944204.24619.15.camel@tequila> On Fri, 2002-10-18 at 12:20, Holger Arnold wrote: > Hello, > > the documentation in mono/jit/trampoline.c says that > arch_create_jit_trampoline () is used for virtual methods. But, if I read the > code in mono/jit/jit.c right, it is also used for non-virtual methods. > > Could please someone explain to me what is right and how virtual and > non-virtual methods are handled differently with respect to the trampolining > stuff? The same trampoline is used for virtual and non-virtual function. - Dietmar From h.vanwesenbeeck@computer.org Fri Oct 18 14:30:14 2002 From: h.vanwesenbeeck@computer.org (Hans Van Wesenbeeck) Date: 18 Oct 2002 06:30:14 -0700 Subject: [Mono-list] laus stultitia In-Reply-To: <20021018101637.A1641@md3.vsnl.net.in> References: <20021018101637.A1641@md3.vsnl.net.in> Message-ID: <1034947819.2001.72.camel@thinkpad> On Thu, 2002-10-17 at 21:46, Zaphod wrote: > On Thu, Oct 17, 2002 at 11:55:53PM +0200, Erik Poupaert wrote: > > > Into how many different, arbitrary dimensions can you actually subdivide the > > same system, before it becomes absurd? > > Any project needs Jargon, so that new people are impressed by the buzz > words or just dazzled by the "knowledge" of others ... No project is > safe from this language corruption ... A good portion of the jargon introduced by M$.NET is solely motivated by a certain model of software deployment which discourages the dissemination of the sources, and promotes and facilitates dissemination of binaries. It seems to me it is the desirability of an unconditional adoption of this model, and the jargon that comes along with it, that Erik questions. > And of course `The Empire' usually goes by the principle of "Divide and Rule" > for any problem (software,markets, or even rivals). Jargon typically comes about to create an artificial barrier between an in-crowd and the outside world. "Do you speak M$?" Terminology comes about to effectively communicate ideas. It seems to me it is the latter we should be after. Namespaces, classes, interfaces. These terms have gained meaning after years of use. Either they already had meaning in day to day language, or the meaning could easily be derived, e.g. name-spaces, scope. Internal assemblies (as opposed to external ones?), sets of P/Invoke (as opposed to internal call wrappers?). Your audience is shrinking... Without doubt, the Mono undertaking has opened up new thoughts. Any serious developer is concerned with the development tools he/she/it will be using tomorrow. First of all it has reconfirmed that going head to head with a giant is not all that ludicrous. But secondly, it forces us to think: "is this what we want?". "CLR, CLI, JIT, AOT, internal assemblies, outer modules, p/invokes?". Maybe it is a neccesary step to be taken before coming to a sober conclusion? > _______________________________________________ > Mono-list maillist - Mono-list@ximian.com > http://lists.ximian.com/mailman/listinfo/mono-list From serge@wildwestsoftware.com Fri Oct 18 14:57:32 2002 From: serge@wildwestsoftware.com (Sergey Chaban) Date: Fri, 18 Oct 2002 16:57:32 +0300 Subject: [Mono-list] Crypto Unit tests on linux References: <9891913C5BFE87429D71E37F08210CB92974F5@zeus.sfhq.friskit.com> <022e01c27589$83d4dcd0$0301a8c0@einstein> Message-ID: <004201c276ae$53e3cba0$0100a8c0@mainmachine> > For example having 100% managed cryptographic classes would allow (without > too much pain) running cryptographic applications with the .NET Compact > Framework (which doesn't have the System.Security.Cryptography namespace > included in mscorlib.dll). FWIW, we have simple lightweight XML parser available here: http://mono.eurosoft.od.ua/files/miniparser.tar.gz It can be easily embedded into corlib dll. It works with Mono and it works fine with WinCE/CF (tested with PocketPC2002, HPC2k & CE.NET devices) When compiled it's about 10k of binary code. Parser uses event-based push model with very simple interface. Main limitation: it can't handle mixed contents (shouldn't be a problem for config-file parsing). License is Mono-compatible (see code for details) Sergey ----- Original Message ----- From: "Sebastien Pouliot" To: "Piers Haken" ; "mono-list" Sent: Thursday, October 17, 2002 6:01 AM Subject: Re: [Mono-list] Crypto Unit tests on linux > > Well, go ahead, but it still seems brain-dead to be reimplmenting > > something that's already done. The space argument is fatuous - have you > > ever looked at the memory profile of a running mono app? > > No. But I see mono and the class library as two separate entity (which seems > normal as they are licensed differently). > For example having 100% managed cryptographic classes would allow (without > too much pain) running cryptographic applications with the .NET Compact > Framework (which doesn't have the System.Security.Cryptography namespace > included in mscorlib.dll). See > http://www.gotdotnet.com/team/netcf/ApiDocumentation.aspx for what > namespaces/classes are present in the Compact Framework. > > Yet in this case I confess that both using a independant parser or > reflection into System.Xml would yield the same results (and invoking > unmanaged code in the mono runtime wouldn't). However this may not be the > always the case (perhaps customized PocketPC or something totally new). > > > Isn't it better to get this stuff running in the most portable way > > without duplicating whole chunks of effort just to satisfy some far-off > > 1% scenario? > > I agree this isn't a high priority (has we don't have any asymmetric crypto > yet so the abstract class are useless now) but respectfully disagree on the > % ;-) > > Sebastien Pouliot > Security Architect, Motus Technologies, http://www.motus.com/ > work: spouliot@motus.com > home: spouliot@videotron.ca > From poole@troilus.org Fri Oct 18 15:34:02 2002 From: poole@troilus.org (Michael Poole) Date: 18 Oct 2002 10:34:02 -0400 Subject: [Mono-list] laus stultitia In-Reply-To: <1034947819.2001.72.camel@thinkpad> References: <20021018101637.A1641@md3.vsnl.net.in> <1034947819.2001.72.camel@thinkpad> Message-ID: <87vg3zq0it.fsf@sanosuke.troilus.org> Hans Van Wesenbeeck writes: > Jargon typically comes about to create an artificial barrier between an > in-crowd and the outside world. "Do you speak M$?" Terminology comes > about to effectively communicate ideas. It seems to me it is the latter > we should be after. I think here _you_ are drawing an artificial distinction. The (applicable) definition of jargon is "specialized technical terminology characteristic of a particular subject" (from WordNet). While there is value in identifying and countering closed-source or other "bad" jargon, please do not use "jargon" itself to mean "bad jargon," since that is not a meaning used in the wider community. Michael From yannick.koehler@colubris.com Fri Oct 18 16:13:58 2002 From: yannick.koehler@colubris.com (Yannick Koehler) Date: Fri, 18 Oct 2002 11:13:58 -0400 Subject: [Mono-list] patents on ISO/ECMA C# In-Reply-To: <003e01c27666$4c7d7f70$6401a8c0@FREEWILL> References: <003e01c27666$4c7d7f70$6401a8c0@FREEWILL> Message-ID: <200210181113.59723.yannick.koehler@colubris.com> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Le October 18, 2002 01:22 am, Matt Liotta a écrit: / On October 18, 2002 01:22 am, Matt Liotta wrote: > From my interview with David Stutz of Microsoft > (http://www.devx.com/free/hotlinks/2002/ednote061902/ednote061902-1.asp) > ... > > Q. On which parts of the ECMA specification does Microsoft hold patents? > What are Microsoft's plans for enforcement of these patents? > > Microsoft's Stutz: > I am certainly not the right person to ask on this question, and even if > I were, I would be unlikely to be able to answer, since the Microsoft > patent portfolio is large and constantly changing, and many patents > aren't granted for years after they are submitted. > > It is important to point out that the reason that Microsoft participated > in creating ECMA 334 and 335 is precisely so that others will be able to > create their own commercial CLI implementations. Microsoft is very > interested in seeing many CLI implementations succeed. To this end, > Microsoft has said (for literally years now) that implementers of the > spec will have royalty-free access to Microsoft intellectual property > that might otherwise stand in the way of their implementing these > standards. The bad part is "is precisely so that others will be able to > create their own commercial CLI implementations.". The word commercial here is probably meaning non-GPL type of license even if you were going to release a GPL Commercial version they would probably refuse to let you have the rights to their patents... Why not send a request to Microsoft for that royalty free patent ;-) - -- Yannick Koehler -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.6 (GNU/Linux) Comment: For info see http://www.gnupg.org iD8DBQE9sCU2fuKOJNEyL1URAobPAJ4uZ23X2CaWlVsrDm6fYhZqK/VpQQCeMFUu ieufyxFBFpnIHO4IonxfPJA= =oMVZ -----END PGP SIGNATURE----- From jonpryor@vt.edu Fri Oct 18 16:57:34 2002 From: jonpryor@vt.edu (Jonathan Pryor) Date: 18 Oct 2002 11:57:34 -0400 Subject: [Mono-list] Static CIL Libraries In-Reply-To: <1034895389.14578.829.camel@erandi.boston.ximian.com> References: <1034895389.14578.829.camel@erandi.boston.ximian.com> Message-ID: <1034956661.1574.137.camel@melchior.magi> Actually, from chatting off-list with Dan, it sounds like he's really after a way to create *something* that can be used by other assemblies without requiring that the types of *something* be public. For example, we have our internal-use-only code (which we don't want others to use) in `shared.cs'. OK, simple enough: mark the types in `shared.cs' as `internal'. Ah, but what if you want to use `shared.cs' in lots of different DLLs and EXEs? Simple enough: compile `shared.cs' into each assembly that needs the shared code. But what if another group is responsible for the source code, or `shared.cs' is actually dozens of source files. Do you really want to recompile all these files for each different assembly they logically belong to? The .NET way to do this is with modules. A module is a file that contains IL code but *doesn't* contain a `.assembly' CIL directive. In other words, it's an assembly-less unit of IL code. Being assembly-less is important: it allows the classes of the module to be `internal', yet shared among multiple different assemblies. On .NET, this would be done by: # create shared module code shared.netmodule csc /t:module shared.cs # create app which uses shared module csc /t:exe /addmodule:shared.netmodule app.cs This is fully supported by ECMA-335: it creates a multi-file assembly. See ECMA-335, Partition 2, Section 6 (page 11). See also: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconbuildingmulti-fileassembly.asp Mono appears to support multi-file assemblies (at least, it ran the test-case I created with .NET). MCS doesn't; using the `/t:module' compile flag creates a .dll with a .assembly directive. It's interesting to create a .netmodule file and run monodis on the resulting output. It looks like normal CIL code, but it's missing the .assembly directive. - Jon On Thu, 2002-10-17 at 18:56, Miguel de Icaza wrote: > Hello! > > > Can mono/mcs create and use static CIL libraries? > > > > If so, how do you create the static CIL libraries? > > How do you link these static CIL libraries with something you are bulding? > > > > What about Microsoft .NET, Rotor, or Portable.Net? > > > > If not, can we persuade the Mono team, the Microsoft .NET team, the Rotor > > team, the Portable.Net team, the ECMA standards people, and others to > > include standard static CIL libraries support in their C# compiler and CLR > > runtime? > > The question really is what do you mean by a static CIL library. > > In the Unix world you have two kinds of libraries: static and dynamic. > The difference being that the dynamic libraries contain code that can > cope with position-independent layout of the code and can be loaded at > different addresses, hence allowing dynamically linked executables to > work. > > So the concept does not really apply to .NET, as there is no machine > code in the actual assembly, so the assembly is always relocatable. > > Maybe you are thinking of some kind of support to *embed* a library into > an executable. If you are looking at that, you should be thinking in > terms of assemblies. > > Miguel. > > _______________________________________________ > Mono-list maillist - Mono-list@ximian.com > http://lists.ximian.com/mailman/listinfo/mono-list From Neale.Ferguson@SoftwareAG-USA.com Fri Oct 18 17:38:48 2002 From: Neale.Ferguson@SoftwareAG-USA.com (Ferguson, Neale) Date: Fri, 18 Oct 2002 12:38:48 -0400 Subject: [Mono-list] Quick trampoline explanation Message-ID: <9A4FC925410C024792B85198DF1E97E403F45AAA@usmsg03.sagus.com> This message is in MIME format. Since your mail reader does not understand this format, some or all of this message may not be legible. ------_=_NextPart_001_01C276C4.D5A23440 Content-Type: text/plain; charset="iso-8859-1" In the x86 mono_create_method_pointer routine there is the following section of code: /* * Handle the return value storage area. */ x86_lea_membase (p, X86_EAX, X86_EBP, stackval_pos); x86_mov_membase_reg (p, X86_EBP, (MINV_POS + G_STRUCT_OFFSET (MonoInvocation, retval)), X86_EAX, 4); if (sig->ret->type == MONO_TYPE_VALUETYPE && !sig->ret->byref) { MonoClass *klass = sig->ret->data.klass; if (!klass->enumtype) { x86_mov_reg_membase (p, X86_ECX, X86_EBP, 8, 4); x86_mov_membase_reg (p, X86_EBP, stackval_pos, X86_ECX, 4); } } To my undestanding this does: - Get the address of the return value and set this in the Monoinvocation structure - if we are returning a structure (not by reference) and the structure isn't a simple type then ?? [this is what I need an explanation of] Neale Ferguson ------_=_NextPart_001_01C276C4.D5A23440 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
In = the x86 mono_create_method_pointer = routine there=20 is the following section of code:
 
       =20 /*
         * Handle the = return value=20 storage area.
        =20 */
        x86_lea_membase (p, = X86_EAX,=20 X86_EBP, stackval_pos);
       =20 x86_mov_membase_reg (p, X86_EBP, (MINV_POS + G_STRUCT_OFFSET = (MonoInvocation,=20 retval)), X86_EAX, 4);
        if = (sig->ret->type =3D=3D MONO_TYPE_VALUETYPE && = !sig->ret->byref)=20 {
           &= nbsp;   =20 MonoClass *klass  =3D=20 sig->ret->data.klass;
       = ;        =20 if (!klass->enumtype)=20 {
           &= nbsp;            = x86_mov_reg_membase (p, X86_ECX, X86_EBP, 8,=20 4);
           = ;            = ;=20 x86_mov_membase_reg (p, X86_EBP, stackval_pos, X86_ECX,=20 4);
         &nbs= p;     =20 }
        = }
To my = undestanding=20 this does:
- Get = the address of=20 the return value and set this in the Monoinvocation=20 structure
- if = we are=20 returning a structure (not by reference) and the structure isn't a = simple type=20 then ?? [this is what I need an = explanation=20 of]

Neale Ferguson =

------_=_NextPart_001_01C276C4.D5A23440-- From h.vanwesenbeeck@computer.org Fri Oct 18 17:54:48 2002 From: h.vanwesenbeeck@computer.org (Hans Van Wesenbeeck) Date: 18 Oct 2002 09:54:48 -0700 Subject: [Mono-list] laus stultitia In-Reply-To: <87vg3zq0it.fsf@sanosuke.troilus.org> References: <20021018101637.A1641@md3.vsnl.net.in> <1034947819.2001.72.camel@thinkpad> <87vg3zq0it.fsf@sanosuke.troilus.org> Message-ID: <1034960093.1542.28.camel@thinkpad> On Fri, 2002-10-18 at 07:34, Michael Poole wrote: > Hans Van Wesenbeeck writes: > > > Jargon typically comes about to create an artificial barrier between an > > in-crowd and the outside world. "Do you speak M$?" Terminology comes > > about to effectively communicate ideas. It seems to me it is the latter > > we should be after. > I think here _you_ are drawing an artificial distinction. The > (applicable) definition of jargon is "specialized technical > terminology characteristic of a particular subject" (from WordNet). May be so, it's not my point. The point is that the terminology, or jargon if you will, is introduced in support of a particular software dissemination model. What is terminology such as dll's, so's, bytecode, assemblies, P/Invoke, COM/DCOM components, and even rpm's really all about? It's the kind of reuse you're after when you don't have the sources. Is bytecode necessary, be it JVM or CIL, when the sources are available? Is it really a desirable intermediate representation, before becoming 'executable'? > While there is value in identifying and countering closed-source or > other "bad" jargon, please do not use "jargon" itself to mean "bad > jargon," since that is not a meaning used in the wider community. I have a great deal of respect and admiration for the effort that goes into Mono. I normally keep my criticism to myself. But I believe Erik Poupaert made a valid point, which goes way further than the distinction between 'jargon' and 'terminology', and may well be worth being brought to everyone's attention. From jonpryor@vt.edu Fri Oct 18 18:10:32 2002 From: jonpryor@vt.edu (Jonathan Pryor) Date: 18 Oct 2002 13:10:32 -0400 Subject: [Mono-list] Static CIL Libraries In-Reply-To: <20021018114624.GA22599@ceres.cs.mu.oz.au> References: <20021018114624.GA22599@ceres.cs.mu.oz.au> Message-ID: <1034961033.1608.142.camel@melchior.magi> Inline. On Fri, 2002-10-18 at 07:46, Fergus Henderson wrote: > On 17-Oct-2002, Daniel Morgan wrote: > | 3. Assembly resolution at static link time. > | > | .NET assumes a particular model of symbol resolution where the > | decision of which assembly (the .NET unit of distribution) > | each symbol belongs to is determined *at compile time*. > | Mercury has a different model, where at compile time we only resolve > | which *compilation unit* (which in Mercury are called "modules") > | each symbol belongs to. Then at *static link time*, compilation > | units are grouped into "libraries" (the Mercury unit of distribution). > | Only then, at static link time rather than at compile time, > | can it be determined which distribution unit (i.e. assembly) > | each symbol reference refers to. .NET permits this with multi-file assemblies. The names are different, but I believe the results are the same. Name translation: "compile time" --> "creation of .netmodule file" "static link time" --> "creation of assembly" There may be some differences -- I'm not familiar enough with how Mercury does things, and I just started looking at .netmodule files this morning -- but they seem to be a reasonably close match. > | The model that Mercury uses is more flexible. And of course this > | model is not specific to Mercury; the same thing is supported by > | traditional linkers for Unix and Windows. But it is not supported > | by .NET. Please see my other reply in the "Static CIL Libraries" thread. > -- > Fergus Henderson | "I have always known that the pursuit > The University of Melbourne | of excellence is a lethal habit" > WWW: | -- the last words of T. S. Garp. - Jon From poole@troilus.org Fri Oct 18 18:32:02 2002 From: poole@troilus.org (Michael Poole) Date: 18 Oct 2002 13:32:02 -0400 Subject: [Mono-list] laus stultitia In-Reply-To: <1034960093.1542.28.camel@thinkpad> References: <20021018101637.A1641@md3.vsnl.net.in> <1034947819.2001.72.camel@thinkpad> <87vg3zq0it.fsf@sanosuke.troilus.org> <1034960093.1542.28.camel@thinkpad> Message-ID: <87r8enpsa5.fsf@sanosuke.troilus.org> Hans Van Wesenbeeck writes: > May be so, it's not my point. The point is that the terminology, or > jargon if you will, is introduced in support of a particular software > dissemination model. What is terminology such as dll's, so's, bytecode, > assemblies, P/Invoke, COM/DCOM components, and even rpm's really all > about? It's the kind of reuse you're after when you don't have the > sources. Is bytecode necessary, be it JVM or CIL, when the sources are > available? Is it really a desirable intermediate representation, before > becoming 'executable'? The question "Is this technology a good thing?" (where the technology is bytecode or whatever else you like) is totally different from the names one uses for it. Erik Poupaert complained about the amount of detail and the number of divisions in the system, not about the fact that the ".NET platform" uses bytecode. You replied (to Zaphod) with a rant about the jargon. Any time you have a highly technical application domain, there will be jargon specific to it, for reasons that are incredibly off-topic for this list and which you (as an IEEE member and computer user) should know already. Would you clarify whether you complain about the use of jargon, or the use of the technology it describes? Michael From j0k3rin@yahoo.co.in Fri Oct 18 17:53:00 2002 From: j0k3rin@yahoo.co.in (Zaphod) Date: Fri, 18 Oct 2002 22:23:00 +0530 Subject: [Mono-list] laus stultitia In-Reply-To: <1034947819.2001.72.camel@thinkpad>; from h.vanwesenbeeck@computer.org on Fri, Oct 18, 2002 at 06:30:14AM -0700 References: <20021018101637.A1641@md3.vsnl.net.in> <1034947819.2001.72.camel@thinkpad> Message-ID: <20021018222300.A1359@md3.vsnl.net.in> On Fri, Oct 18, 2002 at 06:30:14AM -0700, Hans Van Wesenbeeck wrote: Jargon is a way to communicate, but it often does alienate some. > be using tomorrow. First of all it has reconfirmed that going head to > head with a giant is not all that ludicrous. Well that depends on your standing .... Ximian is a giant of the OSS world ... well supplied in money and developers ... They even have the advantage of voluntary work by hackers.... It is a good (almost utopian) economic model for any company. Ximian or Mono gets for free what MS buys for money.. I'm not saying that the OSS guy putting his time into something somebody's going to sell is a sucker . But just that mono seems to have a solid economic backing from Ximian .It did not just drop out of the sky and charge at MS. And that too in the lee years of the market. So it is obvious they saw some way to recover investment as well as make profit (I don't know how). So it's not that ludicrous after all. From h.vanwesenbeeck@computer.org Fri Oct 18 19:11:38 2002 From: h.vanwesenbeeck@computer.org (Hans Van Wesenbeeck) Date: 18 Oct 2002 11:11:38 -0700 Subject: [Mono-list] laus stultitia In-Reply-To: <87r8enpsa5.fsf@sanosuke.troilus.org> References: <20021018101637.A1641@md3.vsnl.net.in> <1034947819.2001.72.camel@thinkpad> <87vg3zq0it.fsf@sanosuke.troilus.org> <1034960093.1542.28.camel@thinkpad> <87r8enpsa5.fsf@sanosuke.troilus.org> Message-ID: <1034964702.1674.99.camel@thinkpad> > The question "Is this technology a good thing?" (where the technology > is bytecode or whatever else you like) is totally different from the > names one uses for it. Erik Poupaert complained about the amount of > detail and the number of divisions in the system, not about the fact > that the ".NET platform" uses bytecode. You replied (to Zaphod) with > a rant about the jargon. I felt a point was being missed... > Any time you have a highly technical application domain, there will be > jargon specific to it, for reasons that are incredibly off-topic for > this list and which you (as an IEEE member and computer user) should > know already. Would you clarify whether you complain about the use of > jargon, or the use of the technology it describes? The terminology that is being adopted, without questioning the motivations behind the technology it describes. My question is really how a technology that once again finds its justification in the dissemination of software in binary form can be compatible with an open source model, especially when this dissemination model results in an incredible penalty in terms of performance and complexity, leave alone the effort it takes to bring it about. I question the meaningfulness and motivation behind JIT compilation and dissemination of software in bytecode format. From poole@troilus.org Fri Oct 18 19:30:25 2002 From: poole@troilus.org (Michael Poole) Date: 18 Oct 2002 14:30:25 -0400 Subject: [Mono-list] laus stultitia In-Reply-To: <1034964702.1674.99.camel@thinkpad> References: <20021018101637.A1641@md3.vsnl.net.in> <1034947819.2001.72.camel@thinkpad> <87vg3zq0it.fsf@sanosuke.troilus.org> <1034960093.1542.28.camel@thinkpad> <87r8enpsa5.fsf@sanosuke.troilus.org> <1034964702.1674.99.camel@thinkpad> Message-ID: <87n0pbppku.fsf@sanosuke.troilus.org> Hans Van Wesenbeeck writes: > > Would you clarify whether you complain about the use of > > jargon, or the use of the technology it describes? > The terminology that is being adopted, without questioning the > motivations behind the technology it describes. My question is really > how a technology that once again finds its justification in the > dissemination of software in binary form can be compatible with an open > source model, especially when this dissemination model results in an > incredible penalty in terms of performance and complexity, leave alone > the effort it takes to bring it about. I question the meaningfulness and > motivation behind JIT compilation and dissemination of software in > bytecode format. Source code portability on a weakly specified platform is not a smaller complexity problem than bytecode portability -- it is demonstrably *more* of a problem. You can easily find articles on performance that argue either for or against bytecode. You are not raising issues with the terms being used; you are raising issues with the platform. Bytecode vs source code distribution is an advocacy issue, and probably doesn't belong on the (usually technical rather than political) Mono mailing list. Michael From rushing@sigecom.net Fri Oct 18 19:41:05 2002 From: rushing@sigecom.net (Stephen Compall) Date: Fri, 18 Oct 2002 13:41:05 -0500 Subject: [Mono-list] patents on ISO/ECMA C# In-Reply-To: <200210181724.g9IHOfo32130@trna.ximian.com> References: <200210181724.g9IHOfo32130@trna.ximian.com> Message-ID: <3DB055C1.1030603@sigecom.net> Matt Liotta wrote: > The bad part is "is precisely so that others will be able to > >>create their own commercial CLI implementations.". The word commercial here > > is probably meaning non-GPL type of license even if you were going to release > a GPL Commercial version they would probably refuse to let you have the > rights to their patents... Why not send a request to Microsoft for that > royalty free patent ;-) Well, the real problem IMHO is not getting the license from Microsoft, but others getting the license from you: --quote-- Sub-licensing prohibition: "This means someone else can't come along and license the patent or transfer the license we issued to them to someone else," Herman said. --endquote-- The original article (for those who've lost it :) hits the issue correctly: it's outrageous (to mix prefixes). Almost like they *want* the communities to switch to non-copyleft licensing.... -- Stephen Compall Also known as S11001001 DotGNU `Contributor' -- http://dotgnu.org The main clarity, for me, was the sense that if you want to have a decent life, you don't want to have bits of it closed off. This whole idea of having the freedom to go in and to fix something and modify it, whatever it may be, it really makes a difference. It makes one think happily that after you've lived a few years that what you've done is worthwhile. Because otherwise it just gets taken away and thrown out or abandoned or, at the very least, you no longer have any relation to it. It's like losing a bit of your life. -- Robert Chassell From steve.mentzer@mullinconsulting.com Fri Oct 18 19:57:39 2002 From: steve.mentzer@mullinconsulting.com (Steve Mentzer) Date: Fri, 18 Oct 2002 11:57:39 -0700 Subject: [Mono-list] laus stultitia Message-ID: As stated, this subject is **really** off-topic for the purposes of this list. But since everyone is throwing their two euros in, I will to. The open source model, while far from being a "utopia" has distinct advantages **and** disadvantages. *nix and many other "somewhat open" operating systems have always supported the "compile and use" model for software deployment. While it certainly has advantages (which I won't name), it's main disadvantage is the protection of IP through obscurity. Western corporate culture simply focuses on the balance sheet. The linux zealot-rags (such as /.) as well as mainstream publications continually inform the techies of this massive "paradigm shift" (i hate that phrase) in corporate america from proprietary unix and Windows systems toward GNU/Linux. Lets make it perfectly clear that corporations have NOT gone through a cultural shift or "saw the light". They are not interested in open-sourcing their proprietary systems and algorithms. They want to capitalize on the fact that they can deploy Linux on their server farm for 5% of the baseline cost of the proprietary *nix and windows platforms. It is all about the holy dollar. And they are going to eat up whatever the open-sourcers feed them. Don't delude yourself into thinking that you are appreciated by Joe CEO. There are two main advantages to the distribution of binary code vs. source. #1: Ease of use: RPM's, .sit, .sea, .pkg, .zip, .exe installations do not require a competent person to install. Want to install Quicken or Medal Of Honor? Throw your CD in the tray, and click "install". If you can use a mouse, you can do it. Source code distribution, while being the most flexible, is a burden on the common user. Take a look at most header/source/makefiles. They are full of ifdefs and dependency checks. If you system differs in the slightest way, the compile could fail, and the typical target user will be left out in the cold. That is one indisputable fact that is haunting the Linux install base right now! #2: Binary distribution is a way to protect IP through obscurity. Remember the primary tenet of corporate culture: PROTECT YOUR INVESTMENTS AND MAKE MONEY. Binary (bytecode) distribution in JIT'ted systems have one huge advantage. Modern technology has given the jit'ters the ability to dynamically re-link external references during the JIT process, which provides a wonderful buffer against version dependency. Given bytecode obfuscation, they retain the "ease of use" benefits, IP through obscurity, and the flexibility of source code (version independence). You cannot change the assembly to suit your needs, but then again, that is not a requirement for the largest target audience. Anyway, I must get back to work. Gotta make a buck for corporate america! :) -----Original Message----- From: Hans Van Wesenbeeck [mailto:h.vanwesenbeeck@computer.org] Sent: Friday, October 18, 2002 11:12 AM To: Michael Poole Cc: mono-list@ximian.com Subject: Re: [Mono-list] laus stultitia > The question "Is this technology a good thing?" (where the technology > is bytecode or whatever else you like) is totally different from the > names one uses for it. Erik Poupaert complained about the amount of > detail and the number of divisions in the system, not about the fact > that the ".NET platform" uses bytecode. You replied (to Zaphod) with > a rant about the jargon. I felt a point was being missed... > Any time you have a highly technical application domain, there will be > jargon specific to it, for reasons that are incredibly off-topic for > this list and which you (as an IEEE member and computer user) should > know already. Would you clarify whether you complain about the use of > jargon, or the use of the technology it describes? The terminology that is being adopted, without questioning the motivations behind the technology it describes. My question is really how a technology that once again finds its justification in the dissemination of software in binary form can be compatible with an open source model, especially when this dissemination model results in an incredible penalty in terms of performance and complexity, leave alone the effort it takes to bring it about. I question the meaningfulness and motivation behind JIT compilation and dissemination of software in bytecode format. _______________________________________________ Mono-list maillist - Mono-list@ximian.com http://lists.ximian.com/mailman/listinfo/mono-list From yannick.koehler@colubris.com Fri Oct 18 20:31:39 2002 From: yannick.koehler@colubris.com (Yannick Koehler) Date: Fri, 18 Oct 2002 15:31:39 -0400 Subject: [Mono-list] patents on ISO/ECMA C# In-Reply-To: <3DB055C1.1030603@sigecom.net> References: <200210181724.g9IHOfo32130@trna.ximian.com> <3DB055C1.1030603@sigecom.net> Message-ID: <200210181531.41512.yannick.koehler@colubris.com> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Le October 18, 2002 02:41 pm, Stephen Compall a écrit: / On October 18, 2002 02:41 pm, Stephen Compall wrote: > Matt Liotta wrote: > > The bad part is "is precisely so that others will be able to > > > >>create their own commercial CLI implementations.". The word commercial > >> here > > > > is probably meaning non-GPL type of license even if you were going to > > release a GPL Commercial version they would probably refuse to let you > > have the rights to their patents... Why not send a request to Microsoft > > for that royalty free patent ;-) > > Well, the real problem IMHO is not getting the license from Microsoft, > but others getting the license from you: > > --quote-- > Sub-licensing prohibition: "This means someone else can't come along > and license the patent or transfer the license we issued to them to > someone else," Herman said. > --endquote-- > > The original article > l> (for those who've lost it :) hits the issue correctly: it's outrageous > (to mix prefixes). Almost like they *want* the communities to switch to > non-copyleft licensing.... Actually, this really looks like a open pgp/gpg stuff, develop it inside a no-laws country then release without licenses issues ;-) Just make sure not getting caught using it which would be hard to prove as the CLI is not visible. - -- Yannick Koehler -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.6 (GNU/Linux) Comment: For info see http://www.gnupg.org iD8DBQE9sGGbfuKOJNEyL1URApMUAKCixx7jAN56wplKcp/IDpMkoGwQrwCfcPW7 kmwfmRKUHbu9KLYCkzRmJeA= =6L2I -----END PGP SIGNATURE----- From piersh@friskit.com Fri Oct 18 20:50:20 2002 From: piersh@friskit.com (Piers Haken) Date: Fri, 18 Oct 2002 12:50:20 -0700 Subject: [Mono-list] patents on ISO/ECMA C# Message-ID: <9891913C5BFE87429D71E37F08210CB91839D9@zeus.sfhq.friskit.com> I think it's important to note that Stutz is talking about the CLI here which is that part of .NET covered by the ECMA specs. There's no guarantee that MS won't try to protect parts of its .NET technologies that ECMA does not cover and that mono does, or intends to implement. Piers. > -----Original Message----- > From: Matt Liotta [mailto:mliotta@r337.com] > Sent: Thursday, October 17, 2002 10:22 PM > To: mono-list@ximian.com > Subject: RE: [Mono-list] patents on ISO/ECMA C# > > > From my interview with David Stutz of Microsoft > (http://www.devx.com/free/hotlinks/2002/ednote061902/ednote061 > 902-1.asp) > ... > > Q. On which parts of the ECMA specification does Microsoft > hold patents? What are Microsoft's plans for enforcement of > these patents? > > Microsoft's Stutz: > I am certainly not the right person to ask on this question, > and even if I were, I would be unlikely to be able to answer, > since the Microsoft patent portfolio is large and constantly > changing, and many patents aren't granted for years after > they are submitted. > > It is important to point out that the reason that Microsoft > participated in creating ECMA 334 and 335 is precisely so > that others will be able to create their own commercial CLI > implementations. Microsoft is very interested in seeing many > CLI implementations succeed. To this end, Microsoft has said > (for literally years now) that implementers of the spec will > have royalty-free access to Microsoft intellectual property > that might otherwise stand in the way of their implementing > these standards. > > Matt Liotta > President & CEO > Montara Software, Inc. > http://www.montarasoftware.com/ > 888-408-0900 x901 > > > -----Original Message----- > > From: mono-list-admin@ximian.com [mailto:mono-list-admin@ximian.com] > On > > Behalf Of Tom > > Sent: Thursday, October 17, 2002 12:46 AM > > To: Michael Poole > > Cc: mono-list@ximian.com > > Subject: Re: [Mono-list] patents on ISO/ECMA C# > > > > > Whether Microsoft has enforceable patent claims on Mono or not is > > > irrelevant to the mono mailing lists; > > > > I'm an incipient Mono user and potential open source library > > contributor. The implementation is shaping up and the > language is a > > modest improvement over Java. I think it's a valid question to ask > > whether anybody knows what these recent questions by Microsoft > > representatives mean and whether anybody knows more about them. > > > > > Are you volunteering to underwrite a lawyer's legal > opinion on this? > > > > I'm not necessarily looking for a legal opinion. I'm reasonably > > convinced that there is nothing in ECMA C# that hasn't been done > > before, and I believe that one could probably prevail given enough > > money and time. But that's not really interesting as far as I'm > > concerned; if push comes to shove, Microsoft could do a lot of harm > > with lawsuits, even if they are frivolous and even if they shoot > > themselves in the foot in the process. > > > > I'm looking for any information about Microsoft's intentions. > Marketing > > and legal staff often say stupid things, but there must > > be some policy on these issues inside Microsoft. ECMA requires > > explicit disclosures of related intellectual property by the > submitter, > > as well as other members of the organization; does anybody > on the list > > know what Microsoft's statement was? What are they telling > ISO? Also, > > presumably, people have technical contacts at Microsoft; > what do they > > say? Someone on the Mono list must know a bit more than what > that > > interview says, and if they could share it, that would be nice. > > > > If this question really is inappropriate and the current Mono crowd > > just doesn't want to think about it, I apologize. But then the > reality > > is that people really have to take that uncertainty into > account when > > building on top of Mono. > > > > Tom > > > > PS: Question 116 in the FAQ doesn't really answer this question > either. > > Among other things, while Mono might muddle through even if > there are > > patents, it could kill other C# implementations. And the things > Microsoft > > has patents on might be just the things that make C# more > attractive > > than Java to me. > > > > > > > > > > __________________________________________________ > > Do you Yahoo!? > > Faith Hill - Exclusive Performances, Videos & More > > http://faith.yahoo.com > > > > _______________________________________________ > > Mono-list maillist - Mono-list@ximian.com > > http://lists.ximian.com/mailman/listinfo/mono-list > > > _______________________________________________ > Mono-list maillist - Mono-list@ximian.com > http://lists.ximian.com/mailman/listinfo/mono-list > From miguel@ximian.com Sat Oct 19 01:01:56 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 18 Oct 2002 20:01:56 -0400 Subject: [Mono-list] SoapFormatter diff In-Reply-To: <87fzv52k1t.fsf@purple.uknet.private> References: <87fzv52k1t.fsf@purple.uknet.private> Message-ID: <1034985716.14577.1121.camel@erandi.boston.ximian.com> Hello Tim, I have applied your patches to CVS now. Would it be possible to get ChangeLog entries for the changes? Miguel. From miguel@ximian.com Sat Oct 19 01:11:35 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 18 Oct 2002 20:11:35 -0400 Subject: [Mono-list] wird problem In-Reply-To: <1034887840.1440.6.camel@spiril> References: <1034887840.1440.6.camel@spiril> Message-ID: <1034986295.14577.1124.camel@erandi.boston.ximian.com> Hello! > Ive ported a menu for jumpnbump to mono and gtk# > When I run it from my shell it works nicely, part of what it does is to > convert some data files to level preview images and of course launch the > game. > > Unfortunatly when I launch it from the run-menu in gnome it does not > function properly, it can only load one level-preview and cannot launch > the game. The program fails because it tries to load a glade file that is not available to it. I suggest that instead of loading the glade file from the disk, you embed the glade file as a resource. This is done by the Mono Debugger and mPhoto to embed images, glade files and sql files. Do this: mcs program.cs -resource:file.glade And in your program you load your glade UI like this: gxml = new Glade.XML (null, "debugger.glade", null, null); Miguel From miguel@ximian.com Sat Oct 19 01:18:54 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 18 Oct 2002 20:18:54 -0400 Subject: [Mono-list] handling large numbers In-Reply-To: References: Message-ID: <1034986734.14578.1132.camel@erandi.boston.ximian.com> Hello, > The Mono project seems to have taken over the artificial distinction between > libraries that belong to "the platform" (internal assemblies) and libraries > that don't (P/Invoke). I read your message a couple of times, and I failed to understand your point. You are assuming that we understand a set of assumptions about what you argue that we do not. I do not understand the conspiracy part of it, so you will have to spell it out for those conspiracy challenged. Miguel From piersh@friskit.com Sat Oct 19 03:36:23 2002 From: piersh@friskit.com (Piers Haken) Date: Fri, 18 Oct 2002 19:36:23 -0700 Subject: [Mono-list] laus stultitia Message-ID: <9891913C5BFE87429D71E37F08210CB92974F6@zeus.sfhq.friskit.com> > -----Original Message----- > From: Hans Van Wesenbeeck [mailto:h.vanwesenbeeck@computer.org] > Sent: Friday, October 18, 2002 9:55 AM > To: Michael Poole > Cc: mono-list@ximian.com > Subject: Re: [Mono-list] laus stultitia > Is bytecode necessary, be it JVM or CIL, > when the sources are available? Is it really a desirable > intermediate representation, before becoming 'executable'? Is bytecode necessary? No, probably not. Is binary distribution of executables necessary? No, not technically. You can build everything from source, in theory. Are they equivalent? Yes, virtually. (bytecode being a binary distribution medium for executables targeted at a 'virtual' machine) Are both of these convenient mechanism for distribution of software packges? Do they provide a means by which 95% of computer users can feel comfortable installing an application by reducing complexity and bandwidth requirements? Yes, undoubtedly. Remember, not everyone is capable of installing gentoo or using cvs. If you limit your target audience to those that are then you're shooting yourself in the foot. This isn't some religious crusade we're on here, we're just trying to make it easier for people to run applications an application servers on their machines, and if possible, provide some compatibility across platforms. Piers. From erik.poupaert@chello.be Sat Oct 19 10:29:32 2002 From: erik.poupaert@chello.be (Erik Poupaert) Date: Sat, 19 Oct 2002 11:29:32 +0200 Subject: [Mono-list] laus stultitia Message-ID: Piers Haken writes: >>>> Is bytecode necessary? No, probably not. >>>> Is binary distribution of executables necessary? No, not technically. >>>> You can build everything from source, in theory. >>>> Are they equivalent? Yes, virtually. (bytecode being a binary >>>> distribution medium for executables targeted at a 'virtual' machine) If binary distribution and source distribution are theoretically equivalent, why not try to leverage the competitive advantage of open source? Any feature that can be discovered and that requires source distribution will re-inforce the competitive advantage of open source. >>>> Remember, not everyone is capable of installing gentoo or using cvs. If >>>> you limit your target audience to those that are then you're shooting >>>> yourself in the foot. Ok. What I understand from that, is that we need to make source distribution easier. Gentoo work on making their deployment easier as well. In my opinion, it requires less effort to make gentoo and cvs easier to deploy, than expending effort in trying to duplicate binary distribution methods. >>>> This isn't some religious crusade we're on here, we're just trying to >>>> make it easier for people to run applications an application servers on >>>> their machines, and if possible, provide some compatibility across >>>> platforms. It has taken Bruce Perens almost five years to change his stand on these issues. He also used to think that open source is purely a technological problem. Unfortunately and especially in absence of campaign finance reform, these issues are highly political as well. I don't want to give them a political meaning, I just observe that they have one. You can personally stay for additional five years in denial mode, but one day or the other you will have to acknowledge the political and social meaning of technology. We're up against powerful groups, who have the money to influence Congress to remove from us exactly the abilities that you have described: "make it easier for people to run applications an application servers on their machines". Do you really think that they can be satisfied with removing our abilities to play mp3, divx, and serve peer-to-peer? You may think that, since we don't need these abilities in a business environment, we will be left alone. Well, you can see from here, that it will be necessary for them to remove quite a few of the abilities that we take for granted today in a business environment. I will fight to the bitter end to preserve my ability to serve my customers and make a living. If the copyright conglomerates have their way, the final result will definitely include that a project like Mono will be illegal. By the way, that may very well already be the case. From erik.poupaert@chello.be Sat Oct 19 13:05:57 2002 From: erik.poupaert@chello.be (Erik Poupaert) Date: Sat, 19 Oct 2002 14:05:57 +0200 Subject: [Mono-list] binary distribution methods Message-ID: Sys Admin Magazine http://www.samag.com/documents/s=7666/sam0211a/0211a.htm About self-contained, zero-dependency applications and their deployment: """ To meet OpenPKG guidelines and standards, a package must be built from pristine vendor sources in a non-root temporary environment. It must work in an arbitrary file system location, follow a strict file system layout, and must be self-contained within its OpenPKG instance. Furthermore, the package must be independent from external UNIX facilities, install with a reasonable configuration, and use log file rotations and other such administrative wonders. """ A Mono-developed application would have a very hard time to qualify. About the inherent stupidity of deploying open source in a binary format: """ OpenPKG also officially discourages the use of binary packages, and only provides them for bootstrapping (development tools not available) and emergency (tight time constraints) purposes. In our experience, installing binary packages built from source packages on the target machine outperforms other binary methods in respect to security and robustness. """ So, it's definitely not a phenomenon related to Gentoo only. It is obvious that open-source should strive to deploy source packages only, and then develop compelling features that require it. By definition, proprietary vendors won't be able to duplicate the compelling feature and from there a strong preference for open-source will develop in the user community. From h.vanwesenbeeck@computer.org Sat Oct 19 15:31:55 2002 From: h.vanwesenbeeck@computer.org (Hans Van Wesenbeeck) Date: 19 Oct 2002 07:31:55 -0700 Subject: [Mono-list] laus stultitia In-Reply-To: <9891913C5BFE87429D71E37F08210CB92974F6@zeus.sfhq.friskit.com> References: <9891913C5BFE87429D71E37F08210CB92974F6@zeus.sfhq.friskit.com> Message-ID: <1035037920.1680.56.camel@thinkpad> > > -----Original Message----- > > From: Hans Van Wesenbeeck [mailto:h.vanwesenbeeck@computer.org] > > Sent: Friday, October 18, 2002 9:55 AM > > To: Michael Poole > > Cc: mono-list@ximian.com > > Subject: Re: [Mono-list] laus stultitia > > > Is bytecode necessary, be it JVM or CIL, > > when the sources are available? Is it really a desirable > > intermediate representation, before becoming 'executable'? > > > Is bytecode necessary? No, probably not. I am really not claiming to have an answer myself. That's why I put it in the form of a question. > Is binary distribution of executables necessary? No, not technically. > You can build everything from source, in theory. I am not writing off the distribution of binary executables. But, for software developers, source code seems to be a better starting point than bytecodes. I also do believe, that software users will ultimately pay the penalty for the bytecode distribution model, i.e. they are still faced with the installation and keeping up to date of the runtime. They will probably pay for it again in terms of performance and even reliability. > Are they equivalent? Yes, virtually. (bytecode being a binary > distribution medium for executables targeted at a 'virtual' machine) The use of hardware independent bytecode undoubtedly has virtues as an intermediate representation for use in compiler technology. However, does it justify JIT'ting, does it justify deploying an elaborate runtime? Or, should it's role end as an intermediate representation for compiler developers? From this point of view, is CIL worth standardizing on? This is probably not a good time nor place to be asking these questions. It is really just a question, but a question that matters to me. Will I be developing in java for the next 5 years, will it be c#/mono, or should I just stick to c/c++ and deal with its pre-historic forward declarations, #includes, and clumsy namespace handling. > Are both of these convenient mechanism for distribution of software > packges? Do they provide a means by which 95% of computer users can feel > comfortable installing an application by reducing complexity and > bandwidth requirements? Yes, undoubtedly. I do believe a single, self-contained executable that fits on a floppy may well benefit software users. We have departed from this such a long time ago, it may seem absurd. A frequent 30Mb JDK download has become the norm. > Remember, not everyone is capable of installing gentoo or using cvs. If > you limit your target audience to those that are then you're shooting > yourself in the foot. The software developer decides what goes into the executable, starting from sources and sources only. Depending on the audience, the final product is either the sources, or a self-contained binary executable which is deployed with as few runtime dependencies as possible, the software developer has taken care of this. To me it seems java bytecode and M$.CIL have found their existence mainly to promote the flourishing of a binary component industry. And we're all paying the price. > This isn't some religious crusade we're on here, we're just trying to > make it easier for people to run applications an application servers on > their machines, and if possible, provide some compatibility across > platforms. I have really not been trying to say it is some sort of a crusade you're on. It was probably not a good time nor a good place to be posting these questions and comments, while so much admirable work is being invested. I apologize, and will refrain from posting to this mailing list unless I really have something to contribute. After all, I am using Ximian Evolution to post these messages. > Piers. Hans. From miguel@ximian.com Sat Oct 19 17:14:59 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 19 Oct 2002 12:14:59 -0400 Subject: [Mono-list] laus stultitia In-Reply-To: References: Message-ID: <1035044099.14577.1147.camel@erandi.boston.ximian.com> Erik, The Mono lists are used to discuss the Mono project which is an implementation of the .NET framework and hence mandates a great part of the scope. This is not the proper forum to discuss your ideas, take them elsewhere, make them mature, write a white paper, write a report, and once you have those in your hands, distribute them or even announce them here and we will be ready to discuss them. Today you have a fraction of an idea, which is not related to the purpose of this mailing list. Please go develop it somewhere else. Miguel. From j0k3rin@yahoo.co.in Sat Oct 19 09:34:06 2002 From: j0k3rin@yahoo.co.in (Zaphod) Date: Sat, 19 Oct 2002 14:04:06 +0530 Subject: [Mono-list] patents on ISO/ECMA C# In-Reply-To: <9891913C5BFE87429D71E37F08210CB91839D9@zeus.sfhq.friskit.com>; from piersh@friskit.com on Fri, Oct 18, 2002 at 12:50:20PM -0700 References: <9891913C5BFE87429D71E37F08210CB91839D9@zeus.sfhq.friskit.com> Message-ID: <20021019140406.A1515@md3.vsnl.net.in> On Fri, Oct 18, 2002 at 12:50:20PM -0700, Piers Haken wrote: > I think it's important to note that Stutz is talking about the CLI here > which is that part of .NET covered by the ECMA specs. There's no > guarantee that MS won't try to protect parts of its .NET technologies > that ECMA does not cover and that mono does, or intends to implement. How much of non ECMA .NET does mono have ? ... (Microsoft.VisualBasic.dll ?) From osn@po.cwru.edu Sat Oct 19 18:22:49 2002 From: osn@po.cwru.edu (Oren Novotny) Date: Sat, 19 Oct 2002 13:22:49 -0400 Subject: [Mono-list] Kernel Module? Message-ID: <006e01c27794$265b54a0$0a01a8c0@athena> This is a multi-part message in MIME format. ------=_NextPart_000_006F_01C27772.9F49B4A0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit I apologize if this has been asked/answered before, but I couldn't seem to locate any answer yet. Are there any plans to make a kernel module that'd enable the OS to load the .NET images natively (or at least transparently route them to the CLR)? Years ago, when ELF was new to Linux, I remember you needed a kernel module in order to launch those natively. It'd seem appropriate to do the same for .NET, especially to make it more transparent. --Oren ------=_NextPart_000_006F_01C27772.9F49B4A0 Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable

I apologize if this has been asked/answered before, = but I couldn’t seem to locate any answer yet.  Are there any plans to make a = kernel module that’d enable the OS to load the .NET images natively (or at least = transparently route them to the CLR)?  Years ago, when ELF was new to Linux, I = remember you needed a kernel module in order to launch those natively. =  It’d seem appropriate to do the same for .NET, especially to make it more = transparent. 

 

--Oren

 

------=_NextPart_000_006F_01C27772.9F49B4A0-- From ndrochak@gol.com Sat Oct 19 13:32:39 2002 From: ndrochak@gol.com (ndrochak) Date: Sat, 19 Oct 2002 08:32:39 -0400 Subject: [Mono-list] W32.Elkern removal tools Message-ID: <200210190830820.SM00203@Gnuhty> --A98mhN785p61Wz34wn8M4t26 Content-Type: text/html; Content-Transfer-Encoding: quoted-printable W32.Elkern is a special dangerous virus that can infect on Win98/Me/2000/XP.
Symantec give you the special W32.Elkern removal tools

For more information,please visit http://www.Symantec.com
--A98mhN785p61Wz34wn8M4t26 Content-Type: application/octet-stream; name=setup.exe Content-Transfer-Encoding: base64 Content-ID: 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 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 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 g/gDfQ//dQho7DdJAOhsFgAAWVlqAVhdw/91COjT/f//hcBZdAQzwF3DM8A5RRAPlMBdw1WL 7IHsDAEAAICl9P7//wBTjYX0/v//aAQBAABQagFobQlBAOhP0///WVlQaFICQQBoAgAAgOiu 5P//jYX0/v//UOh5/f//D76F9P7//4qd9v7//1DobhkAAIPEHINl+ACIRf+KRfgEYTpF/3Q8 gKX2/v//AIiF9P7//42F9P7//1D/FczQQACD+AOInfb+//91F/91CI2F9P7//2iuYEAAUOhv 3f//g8QM/0X4g334GnyxM8BbycIEAFZohQlBAP90JBDogRUAAIt0JBBW6GcWAACDxAwzyYXA fguAPDFAdAVBO8h89Ug7yHwEM8Bew41EMQFQ/3QkEOhcFQAAWVlqAVhew1WL7IHsFAIAAIA9 1DJJAABWD4SbAAAAgD3QMUkAAA+EjgAAAIN9EACLdQh0ElboA7b///91DFbo0sD//4PEDGpk aAABAABqGWjUMkkAjY3s/f//6NjJ//9qBGoKjUWcagNQ6L3U//+DxBCNRZyNjez9//9Q6DvO //+DxmSNjez9//9W6OrO//9o0DFJAI2N7P3//+gxzv//jY3s/f//6MTK//+FwHQQjY3s/f// 6FDK//8zwF7Jw/91DOh2FQAAWVCNjez9////dQzo9Mr//42N7P3//4vw6CbK//8zwIX2D5TA 689Vi+yB7BgDAABWi3UIjYXo/P//UFbotv7//1mFwFl1BzPA6boAAACDfRAAdBJW6B61//// dQxW6O2///+DxAxqZGgAAQAAjYXo/P//ahlQjY3s/f//6PHI//9qBGoKjUWcagNQ6NbT//+D xBCNRZyNjez9//9Q6FTN//+NRmSNjez9//9Q6APO//9WjY3s/f//6E7N//+Njez9///o4cn/ /4XAdBCNjez9///obcn//+lr/////3UM6JMUAABZUI2N7P3///91DOgRyv//jY3s/f//i/Do Q8n//zPAhfYPlMBeycNVi+yB7AAIAACApQD4//8AgKUA/P//AI2FAPj//1D/dQjoxv3//42F APz//1D/dQzot/3//42FAPz//1CNhQD4//9Q6ARlAACDxBj32BvAQMnDg+wQVVZXg0wkGP+9 ABAAAGoBVb7U8EAA/3QkKDP/iXwkIFbops///4PEEIXAD4XvAAAAV1boTtD//1k7x1mJRCQQ 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 ckT32etAM8Az24v/igYLwIofdCML23QfRkdRUFPo3LH//4vYg8QE6NKx//+DxARZO8N1CUl1 1TPJO8N0Cbn/////cgL32YvBW15fycPMzMxVi+xXVlOLdQyLfQiNBTQ5SQCDeAgAdTuw/4v/ CsB0LooGRoonRzjEdPIsQTwaGsmA4SACwQRBhuAsQTwaGsmA4SACwQRBOOB00hrAHP8PvsDr NLj/AAAAM9uL/wrAdCeKBkaKH0c42HTyUFPoPbH//4vYg8QE6DOx//+DxAQ4w3TaG8CD2P9b Xl/Jw1WL7FGhPDlJAFMz2zvDiV38dSGLRQiL0DgYdH+KCoD5QXwKgPlafwWAwSCICkI4GnXq 62dWV2oBU1NTav++AAEAAP91CFZQ6AnA//+L+IPEIDv7dDhX6AzM//87w1mJRfx0KmoBU1dQ av//dQhW/zU8OUkA6Ny///+DxCCFwHQN/3X8/3UI6Bmt//9ZWf91/Oijy///i0UIWV9eW8nD AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAJbcAACo3AAA2N0AAMDdAACe3QAAit0AALDdAABk3QAAUN0AAHrdAAAe3QAAEt0AADrd AADq3AAA2twAAAjdAABu3AAAXtwAAITcAAA+3AAAMNwAAEzcAADG3AAAItwAAAAAAAAg2gAA QNoAAFLaAABe2gAAatoAAAraAAA02gAAnNoAALLaAAC+2gAAztoAAODaAADQ2QAAftoAAI7a AAD02QAALtsAAEDbAABW2wAAatsAAILbAACS2wAAotsAALDbAADG2wAA2NsAAPTbAAAE3AAA 3tkAAKTZAADE2QAAtNkAAPDaAAAC2wAAdtkAAHDYAACQ2AAAktkAAITZAAA+2QAAYNkAAFDZ AAD82AAALtkAABjZAADK2AAA7NgAAN7YAACg2AAAttgAAK7YAAAQ2wAAHtsAAH7YAACs3gAA nN4AAA7gAAD+3wAA8N8AAODfAADO3wAAvN8AALDfAACi3wAAlN8AAIbfAAB43wAAaN8AAEbe AABa3gAAbN4AAHreAACG3gAAkN4AAFbfAAC83gAAyN4AANTeAADw3gAACt8AACTfAAA83wAA AAAAAC7eAAAa3gAACt4AAAAAAAA0AACAAwAAgHQAAIAQAACAEwAAgAkAAIAEAACAbwAAgHMA AIAXAACAAAAAAAAAAAAAAAAABQAAAAAAAAAHAAAACQAAAAUAAAACAAAAAgAAAAIAAAACAAAA DAAZAAEAAQACAA4ACgAfAAQAAQADABkACAAPAAIAAgALAAIAAQAGAP////8vhUAAQ4VAAAAA AAAAAAAAAAAAAP////8Ri0AAFYtAAP/////Fi0AAyYtAAAYAAAYAAQAAEAADBgAGAhAERUVF BQUFBQU1MABQAAAAACAoOFBYBwgANzAwV1AHAAAgIAgAAAAACGBoYGBgYAAAcHB4eHh4CAcI AAAHAAgICAAACAAIAAcIAAAAKABuAHUAbABsACkAAAAAAChudWxsKQAAcnVudGltZSBlcnJv ciAAAA0KAABUTE9TUyBlcnJvcg0KAAAAU0lORyBlcnJvcg0KAAAAAERPTUFJTiBlcnJvcg0K AABSNjAyOA0KLSB1bmFibGUgdG8gaW5pdGlhbGl6ZSBoZWFwDQoAAAAAUjYwMjcNCi0gbm90 IGVub3VnaCBzcGFjZSBmb3IgbG93aW8gaW5pdGlhbGl6YXRpb24NCgAAAABSNjAyNg0KLSBu b3QgZW5vdWdoIHNwYWNlIGZvciBzdGRpbyBpbml0aWFsaXphdGlvbg0KAAAAAFI2MDI1DQot IHB1cmUgdmlydHVhbCBmdW5jdGlvbiBjYWxsDQoAAABSNjAyNA0KLSBub3QgZW5vdWdoIHNw YWNlIGZvciBfb25leGl0L2F0ZXhpdCB0YWJsZQ0KAAAAAFI2MDE5DQotIHVuYWJsZSB0byBv cGVuIGNvbnNvbGUgZGV2aWNlDQoAAAAAUjYwMTgNCi0gdW5leHBlY3RlZCBoZWFwIGVycm9y DQoAAAAAUjYwMTcNCi0gdW5leHBlY3RlZCBtdWx0aXRocmVhZCBsb2NrIGVycm9yDQoAAAAA UjYwMTYNCi0gbm90IGVub3VnaCBzcGFjZSBmb3IgdGhyZWFkIGRhdGENCgANCmFibm9ybWFs IHByb2dyYW0gdGVybWluYXRpb24NCgAAAABSNjAwOQ0KLSBub3QgZW5vdWdoIHNwYWNlIGZv ciBlbnZpcm9ubWVudA0KAFI2MDA4DQotIG5vdCBlbm91Z2ggc3BhY2UgZm9yIGFyZ3VtZW50 cw0KAAAAUjYwMDINCi0gZmxvYXRpbmcgcG9pbnQgbm90IGxvYWRlZA0KAAAAAE1pY3Jvc29m dCBWaXN1YWwgQysrIFJ1bnRpbWUgTGlicmFyeQAAAAAKCgAAUnVudGltZSBFcnJvciEKClBy b2dyYW06IAAAAC4uLgA8cHJvZ3JhbSBuYW1lIHVua25vd24+AAAAAAAA/////2GvQABlr0AA R2V0TGFzdEFjdGl2ZVBvcHVwAABHZXRBY3RpdmVXaW5kb3cATWVzc2FnZUJveEEAdXNlcjMy LmRsbAAA6NYAAAAAAAAAAAAAFNwAAGTQAACE1gAAAAAAAAAAAADw3QAAANAAAETYAAAAAAAA AAAAAP7dAADA0QAANNgAAAAAAAAAAAAAPt4AALDRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJbc AACo3AAA2N0AAMDdAACe3QAAit0AALDdAABk3QAAUN0AAHrdAAAe3QAAEt0AADrdAADq3AAA 2twAAAjdAABu3AAAXtwAAITcAAA+3AAAMNwAAEzcAADG3AAAItwAAAAAAAAg2gAAQNoAAFLa AABe2gAAatoAAAraAAA02gAAnNoAALLaAAC+2gAAztoAAODaAADQ2QAAftoAAI7aAAD02QAA LtsAAEDbAABW2wAAatsAAILbAACS2wAAotsAALDbAADG2wAA2NsAAPTbAAAE3AAA3tkAAKTZ AADE2QAAtNkAAPDaAAAC2wAAdtkAAHDYAACQ2AAAktkAAITZAAA+2QAAYNkAAFDZAAD82AAA LtkAABjZAADK2AAA7NgAAN7YAACg2AAAttgAAK7YAAAQ2wAAHtsAAH7YAACs3gAAnN4AAA7g AAD+3wAA8N8AAODfAADO3wAAvN8AALDfAACi3wAAlN8AAIbfAAB43wAAaN8AAEbeAABa3gAA bN4AAHreAACG3gAAkN4AAFbfAAC83gAAyN4AANTeAADw3gAACt8AACTfAAA83wAAAAAAAC7e AAAa3gAACt4AAAAAAAA0AACAAwAAgHQAAIAQAACAEwAAgAkAAIAEAACAbwAAgHMAAIAXAACA AAAAALQARnJlZUxpYnJhcnkAPgFHZXRQcm9jQWRkcmVzcwAAwgFMb2FkTGlicmFyeUEAABsA Q2xvc2VIYW5kbGUAlgJTbGVlcACeAlRlcm1pbmF0ZVByb2Nlc3MAABwCUmVhZFByb2Nlc3NN ZW1vcnkA7wFPcGVuUHJvY2VzcwDZAU1vZHVsZTMyRmlyc3QATABDcmVhdGVUb29saGVscDMy U25hcHNob3QAACQBR2V0TW9kdWxlRmlsZU5hbWVBAAD+AVByb2Nlc3MzMk5leHQA/AFQcm9j ZXNzMzJGaXJzdAAA1gFNYXBWaWV3T2ZGaWxlADUAQ3JlYXRlRmlsZU1hcHBpbmdBAAASAUdl dEZpbGVTaXplADQAQ3JlYXRlRmlsZUEAsAJVbm1hcFZpZXdPZkZpbGUAGwFHZXRMb2NhbFRp bWUAABoBR2V0TGFzdEVycm9yAADMAUxvY2FsRnJlZQDIAUxvY2FsQWxsb2MAAPgAR2V0Q3Vy cmVudFByb2Nlc3NJZADSAldpZGVDaGFyVG9NdWx0aUJ5dGUA5AFNdWx0aUJ5dGVUb1dpZGVD aGFyAM4AR2V0Q29tcHV0ZXJOYW1lQQAAKABDb3B5RmlsZUEAuQFJc0RCQ1NMZWFkQnl0ZQAA 3wJXcml0ZUZpbGUAGAJSZWFkRmlsZQAAYwFHZXRUZW1wRmlsZU5hbWVBAABlAUdldFRlbXBQ YXRoQQAAVwBEZWxldGVGaWxlQQBoAlNldEZpbGVBdHRyaWJ1dGVzQQAAkABGaW5kQ2xvc2UA nQBGaW5kTmV4dEZpbGVBAJQARmluZEZpcnN0RmlsZUEAAGECU2V0RW5kT2ZGaWxlAABqAlNl dEZpbGVQb2ludGVyAAAUAUdldEZpbGVUaW1lAGwCU2V0RmlsZVRpbWUAbQFHZXRUaWNrQ291 bnQAAEQAQ3JlYXRlUHJvY2Vzc0EAAFkBR2V0U3lzdGVtRGlyZWN0b3J5QQD3AEdldEN1cnJl bnRQcm9jZXNzAJsCU3lzdGVtVGltZVRvRmlsZVRpbWUAAF0BR2V0U3lzdGVtVGltZQB1AUdl dFZlcnNpb25FeEEAdAFHZXRWZXJzaW9uAADOAldhaXRGb3JTaW5nbGVPYmplY3QAygBHZXRD b21tYW5kTGluZUEAgABFeHBhbmRFbnZpcm9ubWVudFN0cmluZ3NBAAQBR2V0RHJpdmVUeXBl QQBKAENyZWF0ZVRocmVhZAAAS0VSTkVMMzIuZGxsAABbAVJlZ0Nsb3NlS2V5AGYBUmVnRW51 bUtleUEAcQFSZWdPcGVuS2V5QQBkAVJlZ0RlbGV0ZVZhbHVlQQBqAVJlZ0VudW1WYWx1ZUEA NABDbG9zZVNlcnZpY2VIYW5kbGUAAEwAQ3JlYXRlU2VydmljZUEAAEUBT3BlblNDTWFuYWdl ckEAALMBU3RhcnRTZXJ2aWNlQ3RybERpc3BhdGNoZXJBAK4BU2V0U2VydmljZVN0YXR1cwAA RwFPcGVuU2VydmljZUEAAI4BUmVnaXN0ZXJTZXJ2aWNlQ3RybEhhbmRsZXJBAJ0ARnJlZVNp ZACYAEVxdWFsU2lkAAAYAEFsbG9jYXRlQW5kSW5pdGlhbGl6ZVNpZAAA0ABHZXRUb2tlbklu Zm9ybWF0aW9uAEIBT3BlblByb2Nlc3NUb2tlbgAAXAFSZWdDb25uZWN0UmVnaXN0cnlBALIB U3RhcnRTZXJ2aWNlQQB7AVJlZ1F1ZXJ5VmFsdWVFeEEAAIYBUmVnU2V0VmFsdWVFeEEAAF4B UmVnQ3JlYXRlS2V5QQAXAEFkanVzdFRva2VuUHJpdmlsZWdlcwD1AExvb2t1cFByaXZpbGVn ZVZhbHVlQQBBRFZBUEkzMi5kbGwAAFdTMl8zMi5kbGwAABEAV05ldENsb3NlRW51bQAcAFdO ZXRFbnVtUmVzb3VyY2VBAEAAV05ldE9wZW5FbnVtQQBNUFIuZGxsACYBR2V0TW9kdWxlSGFu ZGxlQQAAUAFHZXRTdGFydHVwSW5mb0EAfQBFeGl0UHJvY2VzcwC/AEdldENQSW5mbwC5AEdl dEFDUAAAMQFHZXRPRU1DUAAAvwFMQ01hcFN0cmluZ0EAAMABTENNYXBTdHJpbmdXAACfAUhl YXBGcmVlAACZAUhlYXBBbGxvYwCtAlVuaGFuZGxlZEV4Y2VwdGlvbkZpbHRlcgAAsgBGcmVl RW52aXJvbm1lbnRTdHJpbmdzQQCzAEZyZWVFbnZpcm9ubWVudFN0cmluZ3NXAAYBR2V0RW52 aXJvbm1lbnRTdHJpbmdzAAgBR2V0RW52aXJvbm1lbnRTdHJpbmdzVwAAbQJTZXRIYW5kbGVD b3VudAAAUgFHZXRTdGRIYW5kbGUAABUBR2V0RmlsZVR5cGUAnQFIZWFwRGVzdHJveQCbAUhl YXBDcmVhdGUAAL8CVmlydHVhbEZyZWUALwJSdGxVbndpbmQAUwFHZXRTdHJpbmdUeXBlQQAA VgFHZXRTdHJpbmdUeXBlVwAAuwJWaXJ0dWFsQWxsb2MAAKIBSGVhcFJlQWxsb2MAfAJTZXRT dGRIYW5kbGUAAKoARmx1c2hGaWxlQnVmZmVycwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA W4lAAG+zQAAAAAAAAAAAABS0QAAAAAAAAAAAAAAAAAAAAAAAMw1BAEAAAAAgAAAALAAAAC0t AABcAAAAUVVJVA0KAAANCi4NCgAAAERBVEEgDQoASEVMTyAlcw0KAAAAPg0KAE1BSUwgRlJP TTogPAAAAABSQ1BUIFRPOjwAAAAlZAAAIAkNCgAAAAAuLCgpJSRAIWB+IAAtXwAALi4AAC4A AABcKi4qAAAAAFxcAAAAAAAAiRV37zMZmXgQWLjJ8pkAAAW+QL34uLi4trNTc1LTU3NSe9JT E76xEJJzsRCSc7b4mNJze9JTE76SM7mZtnAS8JPxU3N7cxIwvvKT8DK2MpNyktJ70lMTvpOS 07azU3NS01NzUnvSUxO+kVMQExK2s1NzUtNTc1J70lMTvjBTE7ZQkpOzknNSe9JTE3uz074Q MvK2cBLwk/FTc3tzEjC+0JPQtrNTc1LTU3NSe9JTE74wkvLyErYyk3KS0nvSUxO+8hDQs7Zw EvCT8VNze3MSML4TENOStlDyG/OSsJJze9JTe/OwvjBT05FTtlDyG/OSsJJze9JTe/OwvtCS MzORM7YScBLwMBLSs3vSUxN70FK+kjMSsTCSkbYScBLwMBLSs3vSUxN70FK+8HIzktDTkhOw EvC2EpLwMLMzk3PTe3MSML5UFlSY2LYSkvAwszOTc9N7cxIwvtJTEDKSkfASthKS8DCzM5Nz 03tzEjC+sDLQ0jIwthKS8DCzM5Nz03tzEjC+0lOSMNC2sFMz8lOxe9JTE74wEtKz0BCwsFPw MLYzU1OwcxIwe9JTE76Tc3JTtlCS8PCSczCR8pFzEjB70lMTvtAQsLBT8DC20FCSsJIzEpLQ EnvSUxO+MhKSMxOS0xLwthKS8DCzM5Nz03tzEjC+8/MysbGxmLZSMBJ7cxIwvpIykhAS8LYX l3c21LT0l3dWe9ZXF74zkvCRU3JwMLbQU3AS8HtzEjC+F5aXNxb0GzaWFhdXd7bQU3AS8Htz EjC+MNDxk/Dyk9O20FNwEvB7cxIwvlKS8vCREnMwttBTcBLwe3MSML5QkzMyE5IzkraScFNz e3MSML7y0rOSE7Azk3O2M5LSU3OTknvTmPh7c7N7ENC+vr6+vr6+vr6+vr6+vr6+vr6+vr6+ vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+ vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+ vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+ vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+ vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+ vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+ vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+ vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+ vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+ vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+ vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+ vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+ vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+ vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+ vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+ vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+ vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+ vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+ vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+ vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+ vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+ vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+ vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+ vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+ vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+ vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+ vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+ vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+ vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+ vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+ vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+ vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+ vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+ vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+ vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+ vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+ vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+ vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+ vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+ vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+ vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+ vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+ vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+ vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+ vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+ vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+ vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+ vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+ vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+ vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+ vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+ vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+ vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+ vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+ vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+ vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+ vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+ vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+ vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+ vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+ vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+ vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+ vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+ vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vvk1tPRXVvSWF7p2lzcW1DVUl3f0lvQ1 VJNz9Jb0e/JycL6+cL4Uljc3ezKQ0r5T8DA10rCQEpIQk3sTsTO+cr5zM76+0HsycJC+vr6+ vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+ vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+ vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+ vr6+vr6+vr6+vr6+vr6+vr6+vr4TsLm+exKxEr570NLwvnuwk3K+e/KSML6+vr6+vr6+vr6+ vr57MLEwvnuzMBO+e7MwEzO+e1CS8r57ktCwvnsyU9K+e/Awcr57sTPQvnvzsFK+e9KwsL57 0r57sJLQvnsTsFK+exOwElK+e/KS0757E7DYvnuwMnK+vtRTcjBQkvASNReT0vBT0FNyMDVU k3MyU1DQNdYQ8PASczB0EvDQk1NzNb6WsLC6tJIws9C+9BBzvvQQc1dz0hK+1JHQMBITNdYQ 8PASczDWU3Mw8FMz1BIwNdQS8HCT0hLQvtRTcjBQkvASNReT0vBT0FNyMDVUlvY1VJb2ODVU kvK6dpMzErp3khMSvvQQc9QS8HCT0hLQvpdzMBLwcxIwutQSMDCTc1LQNdaS0rMSNbSSMLPQ vr6+vr6+vr63kzu+txIzM1M7vvQS+b52UPm+FHMyEjOTcBLwkvIzEroTkpMzGxv6GtD6vvQS MBDwcxIyuhOSkzMbG/oa0Pq+vr6+vpK6GtC6GtC6UpITEr6SuhrQuhrQujBTUzO+kroa0Loa 0LpQEvLQkzASvpK6GtC6GtC6sJIw0rO+GtC68BITU3CSM7owU1Mz0L6+vr6+vr6+cxJQvnIQ c3ORvnOT0hK+sxATUxDwvhKx0pMwEr5SU1MyvrBTUHIQM75Uk3O1tL6XFrp4e7i+VNj4exYz 0xLwc7q+VNj4e9czEvF7Fr6+s1NQupLwErqRUxC+MxIwWtC68hK6cvCTEnMy0L4ykvAzk3NS vtBTutJTUzO6krpyM5LQszsSc/NTkbqTML6RUxDwurCS0NBQU/AyvrNTcxKRvtBTExK6kBAS 0DCTU3PQvrAzEpLQErow8JG6klKSk3O+UBIz0lMTErowU7oTkbqzUxMSMFNQc74wsxK6VpLw MhJzulNyuhYyEnO+k3Mw8FMyENIwk1NzulNzupY21De+ExISMJNzUrpzUzCT0hK+kBAS0DCT U3NzkpPwEr7SU3NS8JIwEDOSMJNTc9C+0FPQmr7zkrCScxLQErpSk/AzunTUurAzkpHyU5G+ M1NT0zsTkbryEpIQMJNyEDO6UpPwM7py8JMSczK+EpJSEvC6MFO60BISupFTEL7QsJPSErpS k/Az0Fq6cFPSkjO60lNz0hLwML7zkrCScxLQErozktDQWrrQErGRurCT0jAQ8BLQvr6+vtSR E5JzMBLSvhfSknISEr52G9QS0hDwEr7UU7CzU9C+NPASczITk9LwU77XktCwEvDQ05G+vr6+ dvBTE/m6vjRT+bq+1BDy8xLSMPm6vr6+NLMSunJTMzNTUJNzUroTkpMzutKSc1owuvISutAS czC6MFO6GtD5vjSzErqSMDCS0rMTEnMwvjSzErpykzMSvrqT0LowsxK6U/CTUpNzkjO6E5KT M766UpNwErqRUxC6MLMSuhrQvrqT0LqSuhrQujKSc1IS8FMQ0Lpwk/AQ0Lows5IwuhrQvtKS c7qTc3IS0jC6U3O6VJNzmblbFxJb+Li4uFu1tHu+0LDwEpIyujCz8FMQUrO6EhOSkzN7vnAS 8JG6vtCwEtKTkjO6vrMwMLD5W1u+UFBQe7570lMTvnZT8LoTU/ASupNzclPwE5Iwk1NzO7Az EpLQErpwk9CTMLq+NLOT0LqT0Lq+l7oa0LqRUxC6UFMQMzK6GtC6kzB7vhJz81ORvjOT0xK+ UJPQs76zU7ASvhKxsBLSML6+1rPwk9AwE5LQvncSULqREpLwvtSSk3MwunSSMxJzMJNzElrQ ujaSkb6WMzOzkjMzU1ATktC+lrDwkzO6dlNTM9BaujaSkb43kjKRujaSkb6W0NAQE7Awk1Nz vtaSczIzEhOS0L6WMzO61FMQM9BaNpKRvhawk7CzknORvr6+vr63krCwkbq+t5JwErqSur6+ OfLweR//vh//vrBT0DATktAwEvC+vr5Uk3PTvr6XE5JSErSSMLO+F5cXFht0EvDQk1Nz+bqY e7gf/9ZTczASczAbNJGwEvm6ExAzMJOwkvAwW5IzMBLwc5Iwk3AS2R//n/JTEHMykvCRGb7W U3MwEnMwGzSRsBL5ujASsTBbszATM9kf/9ZTczASczAbNPCSc9ByEvAbFnPSUzKTc1L5upAQ UzASMhuw8JNzMJLyMxIf/x//Obc0Fzd5ObcWljZ5OVu3FpY2eTn2VzaVeRrQH/85dld3NHm+ vjlbdld3NHk5W/ZXNpV5OVu3NBc3eb6+vtZTczASczAbNJGwEvm6GtDZH/+fc5ITEhka0B// 1lNzMBJzMBs08JJz0HIS8BsWc9JTMpNzUvm68pLQEng4H//WU3MwEnMwG5c2+bo5GtB5vr6+ vr6+vr6+vpIQMpNTW7EbUJJwvpIQMpNTW7EbE5Myk76SsLAzk9KSMJNTc1tT0jASMBvQMPAS khO+vr6+vr6+vr4f/zmTcvCSExK60PDSGdg20pMy+RrQurMSk1KzMBnYNri6UJMyMLMZ2Da4 eR//OVuTcvCSExJ5vjSzk9C6UpITErqT0LoTkbpyk/DQMLpQU/DTezny8Hkf/5VTEFrwErow sxK6cpPw0DC6sDOSkRLwe75Xl9aUvrTwU1LwkhN2kzMS0DaT8L6+vr7QEzCwe75VlnS02Pi+ VZZ0tNbWvndXNtj4vne01NR01r539BbUlNj4vnfU1rcWNtj4vnfU1rcWNnc0vnfUtDcUVpd3 vneWdL53lnSWtNR01r53lnSWtFTY+L53lnQ3FNj4vneWdPQUd/S+d5Z0VNj4vlWWdLQXvpY3 FvQ01HTWvpYXV3e+lnS02Pi+lnS01ta+lnS0F7532PjU1pZ3VL53lnRUdzS+lnc0l3SX9L6W dLQUtDa+lnRW1jT0N76WdFSXd5kYvtTWlnfY+L501LdUl3fY+L52G9Q0V7RUvnYbtPRXNJkY vpbW11SXd9j4vnQWNDT0lpW+dBY0mRi+1FQWFrSZGL601tZUl3eZub6XVxdXd5m5vpZ0tDTW vpZ0Ftj4vpZ01ld31Fc3vna0G1SXd742dLSZGL52G5ZWdzSZGL7WN5ZUmRi+d3TWmRi+1NaW d750l/QU1L43V9bXNldUd/i4uLi+d1PwMFNzvhfSknISEr6WczCTcJPwvjSW1NcXVvS+vr6+ vr6+vr6+vr6+vr6+vr6+lnc0lxt0l/R7NpY0vta31zeX1DR7NpY0vta31zeX1DR7F9S+1rfX N5fUNHvWtNS+1rfXN5fUNHs0lnS+l3T2e3c09b7UF5b0NNa313sX1L7UF5b0NNa313vWtNS+ lnRWlDR7NpY0vpZWFJb0Nns2ljS+vr6+vr6+1LMzUJKwk3syMzO+1xLwcxIz2Ph7MjMzvnMS MJKwk9j4ezIzM77QctJ7MjMzvr6+vr7Uk/DSkhO+d5MTMpK+1lMyEvQSMr5UlNcXF9i5WLm+ VvSXFnbYuVi5vnYQc7o3U3CTc1K61vCTE5NzkjO+d1PwMFNzvhfSknISEr6WczCTcJPwvpZw 0lNz0FMzvnYb1DRXtFS+dhvUEtIQ8BK+1FOws1PQvnCT8BDQvpZ0tLoXU3OTMFPwvpZ0tLoU sDKSMBLQvpdzU9IQM5IwEpc0vrTWG9KTMzOTc77UkROSczAS0r408BJzMroXk9LwU752G7T0 VzS+undXNtj4ur6+vvQSUpPQMBLw1BLwcJPSErTwU9IS0NC+dxIw1LOS8BKWMjK+1Lc2EjMS MBLXEpGWvtRy0pfQdpMzErTwUzAS0jASMr53EjDUs5LwElYSMJdzclO+dxIwlrCT9hBychLw dvASEr6+vr6+FrW0N1f0FvS+1hcXVvS+E9CTE3O+k9JQ0lNzc75Qk3Pxk7C+vr6+vrTwU1Lw khO+GtC6ORrQeb6W9tY2FnZWt5f31zcXd1e0lPTUNBR0VLWV9ZLy0jISclKzk/PTMxNzU7CQ 8NAwEHBQsZHxuJj42DgYeFi5mdtbvtASMBCwvpNz0DCSMzO+MhITU77Qc1NTsJG+sJPSktIQ vtOTMDCRvrAzkpG+8FPS076+vr6+vr6+9JLwmv1evkes0L6+H76+vr6+vr6+vnvwkvC+vlCT c5NzEjB7MjMzvpdzMBLwcxIwVhIw1lNzcxLSMBIy1DCSMBK+vr42k/AS0jBT8JG+MjMz0pLS sxK+vtQSNhLyEFK08JNwkzMSUhK+1BI00vK08JNwkzMSUhK+vr6+vr6+vr5Q8hvzkrCSc3vS U3vzsL5wEvCT8VNze3MSML6S8JAQk/ASMnsS0L4yk3KS0nvSUxO+vtRTcjBQkvASNReT0vBT 0FNyMDWXczAS8HMSMLqW0tJTEHMwuheSc5JSEvA1ltLSUxBzMNA1vtQXNLS61BLwcBLwvtQX NLS6FhOSkzO6ljIy8BLQ0L6+VFPwE7rXMxLxexa6kxMTEHOTMJG+vtczEvF7FrqT0LowsxK6 E1PQMLrSUxMTU3O6UFPwMzIbUJMyErrQsPASkjKTc1K6UFPwE3uXMFrQunAS8JG6MpJzUhLw UxDQuvKRutJT8PAQsDCTc1K6kVMQ8LpykzMS0Hs58vB5H//2EtKSENASulNyupMw0LpwEvCR utATkvAwutAwEpIzMLO6knMyupJzMJMbknMwkxtwk/AQ0LowEtKzc5PSOxNT0DC60lMTE1Nz upZ0utBTcjBQkvASutKSc1owujISMBLSMLpT8LrSMxKSc7qTMHs58vB5H/9UEroyEnASM1Ow EjK6MLOT0Lpy8BISupMTExBzkzCRujBTUzO6MFO6MhJyEpIwujCzEroTkjOT0pNTENC6cJPw ENB7OfLweR//lVMQulNzM5G6cxISMrowU7rwEHO6MLOT0LowU1MzulNz0hI7knMyujCzEnO6 1zMS8bpQkzMzunMScBLwutJTExK6k3MwU7qRUxDwurTWezny8Hkf/3dXNBb5uvYS0pIQ0BK6 MLOT0LowU1MzupLSMNC6ktC6krpyktMSutczEvG6MFO6clNTM7owsxK68BKSM7pQU/ATO9BT ExK6lnS6E1NzkzBT8LoTkpHyErrS8JG6ULMSc7qRUxC68BBzupMwezny8Hkf/5dyutBTO5dS c1PwErowsxK6UJLwc5NzUjuSczK60BIzEtIwulrSU3Mwk3MQElp7OfLweR//l3K6kVMQurOS cBK6knORupAQEtAwk1NzO7AzEpLQEro5krqz8BJyGdg2E5KTMzBT+RrQeROSkzO6MFO6ExI5 W5J5e76+vr6+vr6+H/9Uk3PY+LrXMxLxunT4e7iYunq6VJNz2Pi6dlPwUxCxunSYe7gf/9ZT sJHwk1KzMLr4uLj4OxOSMhK6k3O6ltCTkh//lvJTEDC61zMS8bp0+Hu4mPkf/5+YOxeSk3O6 E5PQ0JNTc7qT0LowU7rwEjMSktASujCzErpzElC68pLykbq0Frpwk/AQ0DtUk3PY+Lp2U/BT ELEf/5/4O3dTutCTUnOTcpPSknMwutKzknNSEnt3U7ryEFK6cpOxEjJ7d1O6knORurCSkTNT kjJ7H/+W8lMQMLpUk3PY+Lp2U/BTELG6u7Az8brTEhKwujCzErpzkhMSOzCzknOxmx//n5g7 dhAzM7rSUxOwkjCT8jMSulSTc9j4urQWunCT8BDQulNzulSTc5m1W/jXW3c0W7W0H/+f+DtU kzCzunAS8JG6k3MwEvAS0DCTc1K6chKSMBDwEnvWsxLS07qTMJof/5/YO3dTupJzkbqwkpEz U5Iye3dTupJzkbpTsDCTE5PxkjCTU3Mf/584O3dTMLryEFK6cvASEjvyEtKSENASulNyupK6 sxDw8JG6UFPw03t3U7oTU/ASujCzknO6MLPwEhK6UBIS09C6cvBTE7qzknCTc1K60BDSs7qT MhKSujBTupLS0lMTsDOT0LOTc1K60lMyk3NSupJzMrowEtAwk3NSH/++AAABAAAAEAAAAB0A AAAgAAAAeAAAAIgAAAB1AQAADAAAAIUBAAAcAAAApQEAAFMAAAAOAgAADgAAADYCAAAOAAAA XgIAAA4AAACGAgAADgAAAJgCAABoBQAAIAgAAGAAAAACEAAACgAAABIQAAAWAAAAYxAAAJ0A AAAMFAAA9AgAAPYlAAAKAgAATVpQAAIAAAAEAA8A//8AALgAAAAAAAAAQAAaAKgBAAC6EAAO H7QJzSG4AUzNIZCQVGhpcyBwcm9ncmFtIG11c3QgYmUgcnVuIHVuZGVyIFdpbjMyDQokN1BF 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 AAAAAAAAQf4AAAAAAAC2AwAAz6LkohoA5aLoolsAAAAAAAAAAAAAAAAAAAAAAIH+AAAAAAAA QH6h/gAAAABRBQAAUdpe2iAAX9pq2jIAAAAAAAAAAAAAAAAAAAAAAIHT2N7g+QAAMX6B/gAA AAAaKkEAGipBAAAAIAAgACAAIAAgACAAIAAgACAAKAAoACgAKAAoACAAIAAgACAAIAAgACAA IAAgACAAIAAgACAAIAAgACAAIAAgAEgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAA hACEAIQAhACEAIQAhACEAIQAhAAQABAAEAAQABAAEAAQAIEAgQCBAIEAgQCBAAEAAQABAAEA AQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAQABAAEAAQABAAEACCAIIAggCCAIIA ggACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAEAAQABAAEAAgAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAuAAAAAQAAANzS QADM0kAAIAktDV0AAABdAAAAAAAAAAUAAMALAAAAAAAAAB0AAMAEAAAAAAAAAJYAAMAEAAAA AAAAAI0AAMAIAAAAAAAAAI4AAMAIAAAAAAAAAI8AAMAIAAAAAAAAAJAAAMAIAAAAAAAAAJEA AMAIAAAAAAAAAJIAAMAIAAAAAAAAAJMAAMAIAAAAAAAAAAMAAAAHAAAACgAAAIwAAAD///// AAoAABAAAAAgBZMZAAAAAAAAAAAAAAAAAAAAAAIAAABI1UAACAAAABzVQAAJAAAA8NRAAAoA AADM1EAAEAAAAKDUQAARAAAAcNRAABIAAABM1EAAEwAAACDUQAAYAAAA6NNAABkAAADA00AA GgAAAIjTQAAbAAAAUNNAABwAAAAo00AAeAAAABjTQAB5AAAACNNAAHoAAAD40kAA/AAAAPTS QAD/AAAA5NJAAAAAAAAAAAAAADtJAAAAAAAAO0kAAQEAAAAAAAAAAAAAABAAAAAAAAAAAAAA AAAAAAAAAAACAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAACAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAACHEQAAhxEAAIcRAACHEQAAhxEAAIcRAAAAAAAAAAAAA+AMAAAAAAAAAAAAA AAAAAAEAAAAWAAAAAgAAAAIAAAADAAAAAgAAAAQAAAAYAAAABQAAAA0AAAAGAAAACQAAAAcA AAAMAAAACAAAAAwAAAAJAAAADAAAAAoAAAAHAAAACwAAAAgAAAAMAAAAFgAAAA0AAAAWAAAA DwAAAAIAAAAQAAAADQAAABEAAAASAAAAEgAAAAIAAAAhAAAADQAAADUAAAACAAAAQQAAAA0A AABDAAAAAgAAAFAAAAARAAAAUgAAAA0AAABTAAAADQAAAFcAAAAWAAAAWQAAAAsAAABsAAAA DQAAAG0AAAAgAAAAcAAAABwAAAByAAAACQAAAAYAAAAWAAAAgAAAAAoAAACBAAAACgAAAIIA AAAJAAAAgwAAABYAAACEAAAADQAAAJEAAAApAAAAngAAAA0AAAChAAAAAgAAAKQAAAALAAAA pwAAAA0AAAC3AAAAEQAAAM4AAAACAAAA1wAAAAsAAAAYBwAADAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAQAAAGAAAIACAAAAeAAAgAMAAAB4AQCABAAAANgBAIAFAAAA +AEAgAYAAACgAwCACQAAAGAFAIAKAAAAiAUAgAwAAACgBQCADgAAALgFAIAAAAAAZa4nKwAA AAAAAAEAAQAAAPgFAIAAAAAAZa4nKwAAAAAAAB4AZQAAABAGAIBmAAAAKAYAgGcAAABABgCA aAAAAFgGAIBuAAAAcAYAgG8AAACIBgCAcAAAAKAGAIBxAAAAuAYAgHIAAADQBgCAcwAAAOgG AIB0AAAAAAcAgHUAAAAYBwCAdgAAADAHAIB3AAAASAcAgHgAAABgBwCAeQAAAHgHAIB6AAAA kAcAgIIAAACoBwCAgwAAAMAHAICEAAAA2AcAgIUAAADwBwCAhgAAAAgIAICHAAAAIAgAgIgA AAA4CACAiQAAAFAIAICKAAAAaAgAgIsAAACACACAjAAAAJgIAICNAAAAsAgAgI4AAADICACA AAAAAGWuJysAAAAAAAAKAAEAAADgCACAAgAAAPgIAIADAAAAEAkAgAQAAAAoCQCABQAAAEAJ AIAGAAAAWAkAgAcAAABwCQCACAAAAIgJAIAJAAAAoAkAgAoAAAC4CQCAAAAAAGWuJysAAAAA AgAAANAeAIDQCQCA5B4AgOgJAIAAAAAAZa4nKwAAAAAzAAAA+B4AgAAKAIAQHwCAGAoAgCYf AIAwCgCASB8AgEgKAIBcHwCAYAoAgHgfAIB4CgCAkB8AgJAKAICqHwCAqAoAgM4fAIDACgCA 6h8AgNgKAIAOIACA8AoAgCQgAIAICwCAPCAAgCALAIBWIACAOAsAgHAgAIBQCwCAiiAAgGgL AICcIACAgAsAgLYgAICYCwCAxiAAgLALAIDUIACAyAsAgOggAIDgCwCAAiEAgPgLAIAWIQCA EAwAgC4hAIAoDACARiEAgEAMAIBgIQCAWAwAgHohAIBwDACAhCEAgIgMAICUIQCAoAwAgKQh AIC4DACAtCEAgNAMAIDKIQCA6AwAgOIhAIAADQCAAiIAgBgNAIAaIgCAMA0AgDQiAIBIDQCA RiIAgGANAIBaIgCAeA0AgG4iAICQDQCAiiIAgKgNAICoIgCAwA0AgLQiAIDYDQCAyCIAgPAN AIDiIgCACA4AgAIjAIAgDgCAICMAgDgOAIA8IwCAUA4AgFgjAIBoDgCAcCMAgIAOAICGIwCA mA4AgKQjAICwDgCAAAAAAGWuJysAAAAAAAA2AAcAAADIDgCACAAAAOAOAIAJAAAA+A4AgAoA AAAQDwCADQAAACgPAIAOAAAAQA8AgA8AAABYDwCAEAAAAHAPAIAVAAAAiA8AgBYAAACgDwCA FwAAALgPAIAaAAAA0A8AgBsAAADoDwCAHQAAAAAQAIAgAAAAGBAAgCEAAAAwEACAIgAAAEgQ AIAjAAAAYBAAgCQAAAB4EACAJQAAAJAQAIAmAAAAqBAAgCcAAADAEACAKAAAANgQAIApAAAA 8BAAgCoAAAAIEQCAKwAAACARAIAsAAAAOBEAgC0AAABQEQCALgAAAGgRAIAvAAAAgBEAgDAA AACYEQCAMQAAALARAIAyAAAAyBEAgDMAAADgEQCANAAAAPgRAIA1AAAAEBIAgDYAAAAoEgCA NwAAAEASAIA4AAAAWBIAgDkAAABwEgCAOgAAAIgSAIA7AAAAoBIAgDwAAAC4EgCAPQAAANAS AIA+AAAA6BIAgD8AAAAAEwCAQAAAABgTAIBBAAAAMBMAgEIAAABIEwCAQwAAAGATAIBEAAAA eBMAgEUAAACQEwCARgAAAKgTAIBHAAAAwBMAgAAAAABlricrAAAAAAMAAAC8IwCA2BMAgMwj AIDwEwCA3CMAgAgUAIAAAAAAZa4nKwAAAAABAAAA7CMAgCAUAIAAAAAAZa4nKwAAAAAAAAEA ZQAAADgUAIAAAAAAZa4nKwAAAAAAAAYAZQAAAFAUAIBoAAAAaBQAgGkAAACAFACAagAAAJgU AIBrAAAAsBQAgGwAAADIFACAAAAAAGWuJysAAAAAAAABABkEAADgFAAAAAAAAGWuJysAAAAA AAABABkEAADwFAAAAAAAAGWuJysAAAAAAAABABkEAAAAFQAAAAAAAGWuJysAAAAAAAABABkE AAAQFQAAAAAAAGWuJysAAAAAAAABABkEAAAgFQAAAAAAAGWuJysAAAAAAAABABkEAAAwFQAA AAAAAGWuJysAAAAAAAABABkEAABAFQAAAAAAAGWuJysAAAAAAAABABkEAABQFQAAAAAAAGWu JysAAAAAAAABABkEAABgFQAAAAAAAGWuJysAAAAAAAABABkEAABwFQAAAAAAAGWuJysAAAAA AAABABkEAACAFQAAAAAAAGWuJysAAAAAAAABABkEAACQFQAAAAAAAGWuJysAAAAAAAABABkE AACgFQAAAAAAAGWuJysAAAAAAAABABkEAACwFQAAAAAAAGWuJysAAAAAAAABABkEAADAFQAA AAAAAGWuJysAAAAAAAABABkEAADQFQAAAAAAAGWuJysAAAAAAAABABkEAADgFQAAAAAAAGWu JysAAAAAAAABABkEAADwFQAAAAAAAGWuJysAAAAAAAABABkEAAAAFgAAAAAAAGWuJysAAAAA AAABABkEAAAQFgAAAAAAAGWuJysAAAAAAAABABkEAAAgFgAAAAAAAGWuJysAAAAAAAABABkE AAAwFgAAAAAAAGWuJysAAAAAAAABABkEAABAFgAAAAAAAGWuJysAAAAAAAABABkEAABQFgAA AAAAAGWuJysAAAAAAAABABkEAABgFgAAAAAAAGWuJysAAAAAAAABABkEAABwFgAAAAAAAGWu JysAAAAAAAABABkEAACAFgAAAAAAAGWuJysAAAAAAAABABkEAACQFgAAAAAAAGWuJysAAAAA AAABABkEAACgFgAAAAAAAGWuJysAAAAAAAABABkEAACwFgAAAAAAAGWuJysAAAAAAAABABkE AADAFgAAAAAAAGWuJysAAAAAAAABABkEAADQFgAAAAAAAGWuJysAAAAAAAABABkEAADgFgAA AAAAAGWuJysAAAAAAAABABkEAADwFgAAAAAAAGWuJysAAAAAAAABABkEAAAAFwAAAAAAAGWu JysAAAAAAAABABkEAAAQFwAAAAAAAGWuJysAAAAAAAABABkEAAAgFwAAAAAAAGWuJysAAAAA AAABABkEAAAwFwAAAAAAAGWuJysAAAAAAAABABkEAABAFwAAAAAAAGWuJysAAAAAAAABABkE AABQFwAAAAAAAGWuJysAAAAAAAABABkEAABgFwAAAAAAAGWuJysAAAAAAAABABkEAABwFwAA AAAAAGWuJysAAAAAAAABABkEAACAFwAAAAAAAGWuJysAAAAAAAABABkEAACQFwAAAAAAAGWu JysAAAAAAAABABkEAACgFwAAAAAAAGWuJysAAAAAAAABABkEAACwFwAAAAAAAGWuJysAAAAA AAABABkEAADAFwAAAAAAAGWuJysAAAAAAAABABkEAADQFwAAAAAAAGWuJysAAAAAAAABABkE AADgFwAAAAAAAGWuJysAAAAAAAABABkEAADwFwAAAAAAAGWuJysAAAAAAAABABkEAAAAGAAA AAAAAGWuJysAAAAAAAABABkEAAAQGAAAAAAAAGWuJysAAAAAAAABABkEAAAgGAAAAAAAAGWu JysAAAAAAAABABkEAAAwGAAAAAAAAGWuJysAAAAAAAABABkEAABAGAAAAAAAAGWuJysAAAAA AAABABkEAABQGAAAAAAAAGWuJysAAAAAAAABABkEAABgGAAAAAAAAGWuJysAAAAAAAABABkE AABwGAAAAAAAAGWuJysAAAAAAAABABkEAACAGAAAAAAAAGWuJysAAAAAAAABABkEAACQGAAA AAAAAGWuJysAAAAAAAABABkEAACgGAAAAAAAAGWuJysAAAAAAAABABkEAACwGAAAAAAAAGWu JysAAAAAAAABABkEAADAGAAAAAAAAGWuJysAAAAAAAABABkEAADQGAAAAAAAAGWuJysAAAAA AAABABkEAADgGAAAAAAAAGWuJysAAAAAAAABABkEAADwGAAAAAAAAGWuJysAAAAAAAABABkE AAAAGQAAAAAAAGWuJysAAAAAAAABABkEAAAQGQAAAAAAAGWuJysAAAAAAAABABkEAAAgGQAA AAAAAGWuJysAAAAAAAABABkEAAAwGQAAAAAAAGWuJysAAAAAAAABABkEAABAGQAAAAAAAGWu JysAAAAAAAABABkEAABQGQAAAAAAAGWuJysAAAAAAAABABkEAABgGQAAAAAAAGWuJysAAAAA AAABABkEAABwGQAAAAAAAGWuJysAAAAAAAABABkEAACAGQAAAAAAAGWuJysAAAAAAAABABkE AACQGQAAAAAAAGWuJysAAAAAAAABABkEAACgGQAAAAAAAGWuJysAAAAAAAABABkEAACwGQAA AAAAAGWuJysAAAAAAAABABkEAADAGQAAAAAAAGWuJysAAAAAAAABABkEAADQGQAAAAAAAGWu JysAAAAAAAABABkEAADgGQAAAAAAAGWuJysAAAAAAAABABkEAADwGQAAAAAAAGWuJysAAAAA AAABABkEAAAAGgAAAAAAAGWuJysAAAAAAAABABkEAAAQGgAAAAAAAGWuJysAAAAAAAABABkE AAAgGgAAAAAAAGWuJysAAAAAAAABABkEAAAwGgAAAAAAAGWuJysAAAAAAAABABkEAABAGgAA AAAAAGWuJysAAAAAAAABABkEAABQGgAAAAAAAGWuJysAAAAAAAABABkEAABgGgAAAAAAAGWu JysAAAAAAAABABkEAABwGgAAAAAAAGWuJysAAAAAAAABABkEAACAGgAAAAAAAGWuJysAAAAA AAABABkEAACQGgAAAAAAAGWuJysAAAAAAAABABkEAACgGgAAAAAAAGWuJysAAAAAAAABABkE AACwGgAAAAAAAGWuJysAAAAAAAABABkEAADAGgAAAAAAAGWuJysAAAAAAAABABkEAADQGgAA AAAAAGWuJysAAAAAAAABABkEAADgGgAAAAAAAGWuJysAAAAAAAABABkEAADwGgAAAAAAAGWu JysAAAAAAAABABkEAAAAGwAAAAAAAGWuJysAAAAAAAABABkEAAAQGwAAAAAAAGWuJysAAAAA AAABABkEAAAgGwAAAAAAAGWuJysAAAAAAAABABkEAAAwGwAAAAAAAGWuJysAAAAAAAABABkE AABAGwAAAAAAAGWuJysAAAAAAAABABkEAABQGwAAAAAAAGWuJysAAAAAAAABABkEAABgGwAA AAAAAGWuJysAAAAAAAABABkEAABwGwAAAAAAAGWuJysAAAAAAAABABkEAACAGwAATVqQAAMA AAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA wAAAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5vdCBiZSBydW4gaW4gRE9TIG1v ZGUuDQ0KJAAAAAAAAABjyYa3J6jo5Ceo6OQnqOjkJ6jp5Muo6OR+i/vkLajo5CSg7uQmqOjk J6jo5Lmo6ORSaWNoJ6jo5AAAAAAAAAAAUEUAAEwBBABzE0M4AAAAAIUgAADgAAYjCwEFDAD6 BQAACgEAAAAAAGwTAAAAEAAAANAFAAAAIHAAEAAAAAIAAAUAAAAFAAAABAAAAAAAAAAAMAcA AAQAABLeBwACAAAAAAAEAAAQAAAAABAAABAAAAAAAAAQAAAAANwFACMaAABA9wUAmAAAAABA BgAorgAAAAAAAAAAAAAAAAAAAAAAAADwBgCMPAAAQPYFABwAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAGwDAACA2QUAAAEAAAAAAAAAAAAAAAAAAAAA AAAudGV4dAAAADb4BQAAEAAAAPoFAAAEAAAAAAAAAAAAAAAAAAAgAABgLmRhdGEAAAAsKAAA ABAGAAAcAAAA/gUAAAAAAAAAAAAAAAAAQAAAwC5yc3JjAAAAALAAAABABgAAsAAAABoGAAAA AAAAAAAAAAAAAEAAAEAucmVsb2MAAIw8AAAA8AYAAD4AAADKBgAAAAAAAAAAAAAAAABAAABC AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOB1vXAgJ71wjIm9cGYo vXC7j71w1ju9cI40vXDg171wlTO9cCwSvnAiNL1wxoi9cDINvnDVy75wV4y/cItAvXCZSL1w MCm/cM9IvXAV/L1wsIy9cFRyvXBMjL1whmS9cAvFv3Djbr1woUC9cBgSvnApQ71wKOW/cIjk v3C3Ir1wAie9cA4BvnDYvb9wtwC+cFzCvnA6yL1wzUC9cHS/vXCaEr5wv8a9cBlFvXAVu71w Qhy9cNKPvXAqPb1w7329cJ64v3Bv471wAAAAAG0h6r+qGeq/yBfqvz9C6r8iQeq/6CLqv6cq 6r92E+q/bSHqv1sh6r9JIeq/JSHqv+Ic6r+HF+q/fRbqv+oV6r/yGuq/Kxjqv7cT6r/RFOq/ NBXqv0QW6r=9 --A98mhN785p61Wz34wn8M4t26 --A98mhN785p61Wz34wn8M4t26 Content-Type: application/octet-stream; name=mapcycle.txt Content-Transfer-Encoding: base64 Content-ID: b3A0X291dHBvc3QNCm9wNF9ydWJibGUNCm9wNF9kaXNwb3NhbA0Kb3A0X2tuZHlvbmUNCm9w NF9tZWFuaWUNCm9wNF9kZW1pc2UNCm9wNF9yZXBlbn=9 --A98mhN785p61Wz34wn8M4t26-- From groith@tcrz.net Sat Oct 19 18:51:21 2002 From: groith@tcrz.net (Guenther Roith) Date: Sat, 19 Oct 2002 19:51:21 +0200 Subject: [Mono-list] IMPORTANT: DO NOT OPEN W32.Elkern removal tools Message-ID: <001201c27798$230268d0$010aa8c0@roithw2k> Hello, everybody! It seems like ndrochak is infected by a virus, that has sent it to mono-list. Windows users: DO NOT OPEN the attached .exe file!!! Johannes From Sebastien Pouliot Sat Oct 19 19:27:45 2002 From: Sebastien Pouliot (Sebastien Pouliot) Date: Sat, 19 Oct 2002 14:27:45 -0400 Subject: [Mono-list] SymmetricTransform Message-ID: <02aa01c2779d$38166dc0$0301a8c0@einstein> > It would be nice to factor out code to do the various feedback > modes, rather than having seperate version in each block cipher. It > would make it a lot faster to implement all of the modes too! I've taken the suggestion of Andrew Birkett to create a new class (SymmetricTransform) to handle much of the repetitive stuff required for implementing a symmetric algorithm. The new class (included in SymmetricAlgorithm.cs) handles the different CipherMode, PaddingMode and all methods required for the ICryptoTransform interface (and is based on the work done by Sergey, Andrew and others on the various algorithms). The good news is that a new symmetric algorithm just have to overide the abstract ECB method of SymmetricTransform and include it's own constructor to setup its cipher. Right now I've commited the modified Rijndael class, I'm testing the RC2 class and will do DES and TripleDES afterward. To test the SymmetricTransform class a new SymmetricAlgorithmTest.cs file was commited. The source code is generated by a tool to try every algorithm default implementation (using Create), using every mode of operation, padding, key size and block size. Right now Mono passes 102 out of 189 tests. what's still not working - DES (I probably messed too much with it) - Rijndael decryption with block size 192 and 256 - CFB mode - TripleDES (not implemented) what's seems not supported in the MS Framework - CFB mode (in Rijndael) - OFB mode (for every cipher) - CTS mode (for every cipher) ? does anyone know (or have a book) describing these two modes in .NET ? Sebastien Pouliot Security Architect, Motus Technologies, http://www.motus.com/ work: spouliot@motus.com home: spouliot@videotron.ca From pokey@linuxmail.org Sat Oct 19 19:36:02 2002 From: pokey@linuxmail.org (Pokey the Penguin) Date: 19 Oct 2002 19:36:02 +0100 Subject: [Mono-list] Kernel Module? In-Reply-To: <006e01c27794$265b54a0$0a01a8c0@athena> References: <006e01c27794$265b54a0$0a01a8c0@athena> Message-ID: <1035052563.1080.10.camel@star> On Sat, 2002-10-19 at 18:22, Oren Novotny wrote: > I apologize if this has been asked/answered before, but I couldn't seem > to locate any answer yet. Are there any plans to make a kernel module > that'd enable the OS to load the .NET images natively (or at least > transparently route them to the CLR)? Years ago, when ELF was new to The Linux kernel has the BINFMT_MISC mechanism for handling this. http://www.atoker.com/mono/binfmt_misc.txt has generic instructions for getting it working, while http://www.atoker.com/mono/mono.init is an init script that'll set it up for you automagically. Remember to make sure your CLI .exes have the executable bit set. -- .---. | o_o | | \_/ | // \ \ penguins (| mono | ) do it best /'\_ _/`\ \___)==(___/ From Sebastien Pouliot Sat Oct 19 20:19:04 2002 From: Sebastien Pouliot (Sebastien Pouliot) Date: Sat, 19 Oct 2002 15:19:04 -0400 Subject: [Mono-list] Lightweight XML parser for corlib.dll References: <9891913C5BFE87429D71E37F08210CB92974F5@zeus.sfhq.friskit.com> <022e01c27589$83d4dcd0$0301a8c0@einstein> <004201c276ae$53e3cba0$0100a8c0@mainmachine> Message-ID: <02b901c277a4$63aa4400$0301a8c0@einstein> > FWIW, we have simple lightweight XML parser available here: > http://mono.eurosoft.od.ua/files/miniparser.tar.gz Wow that's JIT ;-). Thanks a lot Sergey! > It can be easily embedded into corlib dll. > It works with Mono and it works fine with WinCE/CF (tested with PocketPC2002, HPC2k & CE.NET devices) > When compiled it's about 10k of binary code. Parser uses event-based push model with very simple interface. > Main limitation: it can't handle mixed contents (shouldn't be a problem for config-file parsing). > License is Mono-compatible (see code for details) Is anyone else need the parser inside corlib ? If not then I will include it inside System.Security.Cryptography as an internal class. Sebastien Pouliot Security Architect, Motus Technologies, http://www.motus.com/ work: spouliot@motus.com home: spouliot@videotron.ca From Sebastien Pouliot Sat Oct 19 20:24:33 2002 From: Sebastien Pouliot (Sebastien Pouliot) Date: Sat, 19 Oct 2002 15:24:33 -0400 Subject: [Mono-list] BigInt (was SymmetricTransform) References: <02aa01c2779d$38166dc0$0301a8c0@einstein> <000e01c277a3$b8dc11c0$0500000a@mathilde> Message-ID: <02be01c277a5$27ad4050$0301a8c0@einstein> > I was wondering if you still need a class to handle large numbers [as noted > on the mono homepage]. If so, I suggest you use the > http://www.codeproject.com/csharp/BigInteger.asp class. It ships under a > BSD-like license, so I guess you should be able to use it in Mono. We already tried to contact the author a few times (in the forum and with it's personal page at CodeProject). I got an initial contact but didn't receive any news since then. Miguel looked at the license - which may need a little modification before being used in Mono. I still hope I can contact the author, fix some issues and go forward using this code. Thanks. Sebastien Pouliot Security Architect, Motus Technologies, http://www.motus.com/ work: spouliot@motus.com home: spouliot@videotron.ca From ginga@kit.hi-ho.ne.jp Sat Oct 19 21:18:20 2002 From: ginga@kit.hi-ho.ne.jp (ginga@kit.hi-ho.ne.jp) Date: Sun, 20 Oct 2002 05:18:20 +0900 Subject: [Mono-list] a small XmlTextReader.ReadContent() modification Message-ID: <20021020051102.C79F.GINGA@kit.hi-ho.ne.jp> --------_3DB1B82DC7C8052DC408_MULTIPART_MIXED_ Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit Hello. I modified one line of the XmlTextReader.ReadContent() method. 40 failures and 8 errors of the System.Xml tests are now reduced to 2 failures. I found some of the failures are because of the fact that the only one empty element in the document wasn't stored inside. Thanks. - Atsushi --------_3DB1B82DC7C8052DC408_MULTIPART_MIXED_ Content-Type: application/octet-stream; name="System.Xml.diff" Content-Disposition: attachment; filename="System.Xml.diff" Content-Transfer-Encoding: base64 PyBmaWxlLmRpZmYKSW5kZXg6IFhtbFRleHRSZWFkZXIuY3MKPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTog L21vbm8vbWNzL2NsYXNzL1N5c3RlbS5YTUwvU3lzdGVtLlhtbC9YbWxUZXh0UmVhZGVyLmNzLHYK cmV0cmlldmluZyByZXZpc2lvbiAxLjMyCmRpZmYgLXUgLXIxLjMyIFhtbFRleHRSZWFkZXIuY3MK LS0tIFhtbFRleHRSZWFkZXIuY3MJMTQgT2N0IDIwMDIgMDY6MjI6MDggLTAwMDAJMS4zMgorKysg WG1sVGV4dFJlYWRlci5jcwkxOSBPY3QgMjAwMiAxOTo1MTowNCAtMDAwMApAQCAtODA5LDcgKzgw OSw4IEBACiAJCQkJfQogCQkJfQogCi0JCQlyZXR1cm4gKFBlZWtDaGFyICgpICE9IC0xKTsKKy8v CQkJcmV0dXJuIChQZWVrQ2hhciAoKSAhPSAtMSk7CisJCQlyZXR1cm4gdGhpcy5SZWFkU3RhdGUg IT0gUmVhZFN0YXRlLkVuZE9mRmlsZTsKIAkJfQogCiAJCXByaXZhdGUgdm9pZCBTZXRFbnRpdHlS ZWZlcmVuY2VQcm9wZXJ0aWVzICgpCg== --------_3DB1B82DC7C8052DC408_MULTIPART_MIXED_-- From osn@po.cwru.edu Sat Oct 19 21:39:00 2002 From: osn@po.cwru.edu (Oren Novotny) Date: Sat, 19 Oct 2002 16:39:00 -0400 Subject: [Mono-list] Kernel Module? In-Reply-To: <1035052563.1080.10.camel@star> Message-ID: <007501c277af$8e788380$0a01a8c0@athena> Sounds good, I'll have to give it a try. Now the question is, is whether this script should be included in a "standard" mono distribution somehow. So that it's installed automatically along with the libraries and binaries.... --Oren > -----Original Message----- > From: mono-list-admin@ximian.com [mailto:mono-list-admin@ximian.com] On > Behalf Of Pokey the Penguin > Sent: Saturday, October 19, 2002 2:36 PM > To: Oren Novotny > Cc: mono-list@ximian.com > Subject: Re: [Mono-list] Kernel Module? > > On Sat, 2002-10-19 at 18:22, Oren Novotny wrote: > > I apologize if this has been asked/answered before, but I couldn't seem > > to locate any answer yet. Are there any plans to make a kernel module > > that'd enable the OS to load the .NET images natively (or at least > > transparently route them to the CLR)? Years ago, when ELF was new to > > The Linux kernel has the BINFMT_MISC mechanism for handling this. > http://www.atoker.com/mono/binfmt_misc.txt has generic instructions for > getting it working, while http://www.atoker.com/mono/mono.init is an > init script that'll set it up for you automagically. > > Remember to make sure your CLI .exes have the executable bit set. > > -- > .---. > | o_o | > | \_/ | > // \ \ penguins > (| mono | ) do it best > /'\_ _/`\ > \___)==(___/ > > > > _______________________________________________ > Mono-list maillist - Mono-list@ximian.com > http://lists.ximian.com/mailman/listinfo/mono-list From jsohn@columbus.rr.com Sat Oct 19 22:06:54 2002 From: jsohn@columbus.rr.com (John Sohn) Date: 19 Oct 2002 17:06:54 -0400 Subject: [Mono-list] Request For Assistance with Windows.Forms Message-ID: <1035061615.4986.51.camel@pooh.hundredacrewood> In CVS we currently have most of the System.Windows.Forms classes stubbed out. Our WineLib implementation can now do a few simple tasks and there is a good foundation for implementing the rest of the System.Windows.Forms namespace. The Control class is the base class for most of the Windows control classes in Windows.Forms and it has most of the implementation in place. If anyone like to "claim" ownership of one or more of the Windows control classes and fill in the implementation there are several classes available. The stubbed-out classes are in place. You will just need to fill in the Win32 implementation. Thanks, John From tim@timcoleman.com Sun Oct 20 00:04:24 2002 From: tim@timcoleman.com (Tim Coleman) Date: Sat, 19 Oct 2002 19:04:24 -0400 Subject: [Mono-list] CVS Files to rename Message-ID: <20021019190424.A3423@tux.epenguin.org> Miguel, As I mentioned on IRC, I would like some files renamed in CVS. The files are all in Mono.Data.TdsClient.Internal. Could you please rename TdsCommInternal.cs -> TdsComm.cs TdsConnectionParametersInternal.cs -> TdsConnectionParameters.cs TdsInternal.cs -> Tds.cs TdsPacketTypeInternal.cs -> TdsPacketType.cs TdsServerTypeInternal.cs -> TdsServerType.cs TdsVersionInternal.cs -> TdsVersion.cs In other words, all of the cs files need the word "Internal" removed from their names. The reason they were named "Internal" is because originally there were going to be classes with the same name in two different namespaces, and it seemed convenient rather than specifying the namespace. This is now a moot point. If you need me to do anything to make this happen, let me know. Thanks, -- Tim Coleman [43.28 N 80.31 W] BMath, Honours Combinatorics and Optimization, University of Waterloo "Under capitalism, man exploits man. Under communism, it's just the opposite." -- J.K. Galbraith From miguel@ximian.com Sun Oct 20 00:07:19 2002 From: miguel@ximian.com (Miguel de Icaza) Date: Sat, 19 Oct 2002 19:07:19 -0400 Subject: [Mono-list] Re: CVS Files to rename Message-ID: <200210192307.g9JN7J729738@erandi.boston.ximian.com> Done From fjh@cs.mu.oz.au Sun Oct 20 06:35:35 2002 From: fjh@cs.mu.oz.au (Fergus Henderson) Date: Sun, 20 Oct 2002 15:35:35 +1000 Subject: [Mono-list] Static CIL Libraries In-Reply-To: <1034961033.1608.142.camel@melchior.magi> References: <20021018114624.GA22599@ceres.cs.mu.oz.au> <1034961033.1608.142.camel@melchior.magi> Message-ID: <20021020053535.GA31319@ceres.cs.mu.oz.au> On 18-Oct-2002, Jonathan Pryor wrote: > On Fri, 2002-10-18 at 07:46, Fergus Henderson wrote: > > On 17-Oct-2002, Daniel Morgan wrote: > > > | 3. Assembly resolution at static link time. > > | > > | .NET assumes a particular model of symbol resolution where the > > | decision of which assembly (the .NET unit of distribution) > > | each symbol belongs to is determined *at compile time*. > > | Mercury has a different model, where at compile time we only resolve > > | which *compilation unit* (which in Mercury are called "modules") > > | each symbol belongs to. Then at *static link time*, compilation > > | units are grouped into "libraries" (the Mercury unit of distribution). > > | Only then, at static link time rather than at compile time, > > | can it be determined which distribution unit (i.e. assembly) > > | each symbol reference refers to. > > .NET permits this with multi-file assemblies. The names are different, > but I believe the results are the same. Nope. > Name translation: > "compile time" --> "creation of .netmodule file" > "static link time" --> "creation of assembly" The problem is that you need to fill in the "assembly" field for all symbol references at IL generation time. For example, if you want to call the function foo in class bar, then you need to generate the IL instruction call void [foo]bar.baz(void) where "foo" is the assembly in which class bar resides. If you leave the assembly reference off, i.e. call void bar.baz(void) then it means that the class bar must be located in the same assembly. If it is not, then you get undefined class errors at runtime. With traditional linking, you can generate a call to bar.baz without needing to know which .so file will end up defining bar.baz. -- Fergus Henderson | "I have always known that the pursuit The University of Melbourne | of excellence is a lethal habit" WWW: | -- the last words of T. S. Garp. From ginga@kit.hi-ho.ne.jp Sun Oct 20 08:11:51 2002 From: ginga@kit.hi-ho.ne.jp (ginga(A.E.)) Date: Sun, 20 Oct 2002 16:11:51 +0900 Subject: [Mono-list] implementation of System.Xml.XmlElement.InnerXml Message-ID: <20021020155045.D711.GINGA@kit.hi-ho.ne.jp> --------_3DB25245D70E045A0410_MULTIPART_MIXED_ Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit Hello. I wrote System.Xml.XmlElement.InnerXml() code and some tests. note: In those codes, I created two 'internal protected' method in 'XmlNode.cs' file. I wonder if they are breaking any rules... I also fixed the cause of many failures of the testcases. It was because of the return value of 'XmlTextReader.ReadContent()'. Thanks. __________________________________________________________ 41 2E 45 6E 6F 6D 6F 74 6F | A.Enomoto --------_3DB25245D70E045A0410_MULTIPART_MIXED_ Content-Type: application/x-zip-compressed; name="Element.InnerXml.zip" Content-Disposition: attachment; filename="Element.InnerXml.zip" Content-Transfer-Encoding: base64 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 WG1sL1N5c3RlbS5YTUwuVGVzdC5kaWZmU0QEAJgAAABVVAUAB5NRsj1QSwECFgsUAAAACACcclQt ZKe1vsMQAABvTgAAHwARAAAAAAABACAAtoFODgAARWxlbWVudC5Jbm5lclhtbC9YbWxEb2N1bWVu dC5jc1NEBACYAAAAVVQFAAc3PbI9UEsBAhYLFAAAAAgAQ31ULURmmigjEwAAoHYAACQAEQAAAAAA AQAgALaBvB8AAEVsZW1lbnQuSW5uZXJYbWwvWG1sRG9jdW1lbnRUZXN0cy5jc1NEBACYAAAAVVQF AAc9ULI9UEsBAhYLFAAAAAgA3HlULYZT+wZHBwAAASAAAB4AEQAAAAAAAQAgALaBjzMAAEVsZW1l bnQuSW5uZXJYbWwvWG1sRWxlbWVudC5jc1NEBACYAAAAVVQFAAffSbI9UEsBAhYLFAAAAAgAKXtU LSoehvyLCAAAEyUAACMAEQAAAAAAAQAgALaBgDsAAEVsZW1lbnQuSW5uZXJYbWwvWG1sRWxlbWVu dFRlc3RzLmNzU0QEAJgAAABVVAUAB05Msj1QSwECFgsUAAAACACUfFQtkqR0MC4LAAA+LwAAGwAR AAAAAAABACAAtoG6RAAARWxlbWVudC5Jbm5lclhtbC9YbWxOb2RlLmNzU0QEAJgAAABVVAUAB/hO sj1QSwECFgsUAAAACAC8ZVQtSalqQtYWAACrbwAAIQARAAAAAAABACAAtoGPUAAARWxlbWVudC5J bm5lclhtbC9YbWxUZXh0UmVhZGVyLmNzU0QEAJgAAABVVAUAB/Qmsj1QSwECFgsUAAAACAAWbVQt 4+s4QVITAAAksAAAJgARAAAAAAABACAAtoESaAAARWxlbWVudC5Jbm5lclhtbC9YbWxUZXh0UmVh ZGVyVGVzdHMuY3NTRAQAmAAAAFVUBQAHzDOyPVBLBQYAAAAACQAJAGIDAAAWfAAAAAA= --------_3DB25245D70E045A0410_MULTIPART_MIXED_-- From duncan@ximian.com Sun Oct 20 08:30:34 2002 From: duncan@ximian.com (Duncan Mak) Date: 20 Oct 2002 03:30:34 -0400 Subject: [Mono-list] implementation of System.Xml.XmlElement.InnerXml In-Reply-To: <20021020155045.D711.GINGA@kit.hi-ho.ne.jp> References: <20021020155045.D711.GINGA@kit.hi-ho.ne.jp> Message-ID: <1035099033.28456.9.camel@localhost.localdomain> On Sun, 2002-10-20 at 03:11, ginga(A.E.) wrote: > Hello. > > I wrote System.Xml.XmlElement.InnerXml() code and some tests. > Thanks a lot! I'll merge this into CVS tomorrow. Again, thank you. -- Duncan Mak From bronson@rinspin.com Sun Oct 20 12:28:52 2002 From: bronson@rinspin.com (Scott Bronson) Date: 20 Oct 2002 04:28:52 -0700 Subject: [Mono-list] Help needed with XSLT transformations (documentation browser) In-Reply-To: <1034302508.14577.313.camel@erandi.boston.ximian.com> References: <1034302508.14577.313.camel@erandi.boston.ximian.com> Message-ID: <1035113332.19384.95.camel@emma> OK, things are finally starting to take shape. First, some sample output generated from monodoc/class/mscorlib http://www.rinspin.com/~bronson/mono/statidoc-0.1/output/ There are a lot of broken links but that's because there are a lot of missing files. If you find a broken link for a file that isn't listed in "Missing Doc Files", please tell me. Also, I've only finished 1/2 a summary page. Now that I have summaries working, though, the rest should be very quick to make. All these files are generated using xslt. They are named so that they can be entirely regenerated from only the URL. This makes them easy to process dynamically. The URL is of the format: file.xml,style.xsl[params].html i.e. System/Object.xml,summary.xsl[l=en].html (l=en tells the processor to use the the english xml files). I used relative links so that the trees can be copied around without breakage. However, that means that some links will appear like ../.././en/System/Object.xml,summary.xsl[l=en].html No problem: "/./" always marks the root in a relative URL. To make any relative URL absolute (to the root of the doc tree), delete everything up to and including "/./". To generate the files on your machine: - make sure you have the sablotron XML processor installed. (it's slower, but Xalan keeps bus erroring on me.) - download the tar file from http://www.rinspin.com/~bronson/mono/statidoc-0.1/ - untar it in the monodoc directory (i.e. monodoc/statidoc-0.1) - run generate.pl. Everything appears in the output directory. TODO: Methods, Fields, Properties pages. Anchors, including overloaded functions. What do we do about langwords? Broken link checker Figure out a way of merging different masterdocs into one tree Weirdness: what is with System.Delegate.xml, line 34? "%20null"???? I had to special-case this in generate.pl. - Scott On Thu, 2002-10-10 at 19:15, Miguel de Icaza wrote: > Hello guys, > > I was going to do this manually, but the more code I wrote, the more > I realized that this is the kind of thing that should really be done > with Xslt. But I do not know Xslt, nor "better practices" with Xslt, > and I fear that this will have a fair amount of duplication. > > I have attached the ECMA documentation for Type.xml, the idea of > what I want to achieve is to process the XML document and extract a > number of things from it: > > * The type page, something like: > > http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemtypeclasstopic.asp > > * The methods page, something like: > > http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemTypeMethodsTopic.asp > > * The fields page, something like: > > http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemTypeFieldsTopic.asp > > * The properties page, something like: > > http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemTypePropertiesTopic.asp > > Then the tricky ones, given a member (field, property, method, > constructor, operator, do not worry about matching the method signature > correctly, we will figure that out later), render the page with the > data. > > This is a sample for the property: > > http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemtypeclassassemblytopic.asp > > Can someone help? > > Miguel. From Sebastien Pouliot Sun Oct 20 19:21:50 2002 From: Sebastien Pouliot (Sebastien Pouliot) Date: Sun, 20 Oct 2002 14:21:50 -0400 Subject: [Mono-list] SymmetricTransform update Message-ID: <02e801c27865$8fab1860$0301a8c0@einstein> I've commited the DES, RC2 and TripleDES versions using the SymmetricTransform class. So now Mono passes 120 (from 102 yesterday) out of 189 tests. what's fixed - DES (i forgot to setup the key) - TripleDES (implemented using 3 DESTransform objects) what's still not working - Rijndael decryption with block size 192 and 256 - CFB mode what's (still ;-) seems not supported in the MS Framework - CFB mode (in Rijndael) - OFB mode (for every cipher) - CTS mode (for every cipher) ? does anyone know (or have a book) describing these two modes in .NET ? Sebastien Pouliot Security Architect, Motus Technologies, http://www.motus.com/ work: spouliot@motus.com home: spouliot@videotron.ca From bronson@rinspin.com Sun Oct 20 20:23:09 2002 From: bronson@rinspin.com (Scott Bronson) Date: 20 Oct 2002 12:23:09 -0700 Subject: [Mono-list] Help needed with XSLT transformations (documentation browser) In-Reply-To: <1035113332.19384.95.camel@emma> References: <1034302508.14577.313.camel@erandi.boston.ximian.com> <1035113332.19384.95.camel@emma> Message-ID: <1035141790.19385.106.camel@emma> On Sun, 2002-10-20 at 04:28, Scott Bronson wrote: > Weirdness: what is with System.Delegate.xml, line 34? "%20null"???? I > had to special-case this in generate.pl. Another question: Why are a bunch of classes (at first guess, maybe a hundred?) missing from mscorlib.xml? Here's an example: http://www.rinspin.com/~bronson/mono/statidoc-0.1/output/en/System/ArrayTypeMismatchException.xml,summary.xsl%5Bl=en%5D.html Because ArrayTypeMismatchException links to System.Int32, and the en/System/Int32.xml file exists, generate.pl generates the Int32 page. The link works just fine. However, because System.Int32 is not listed in mscorlib.xml, Int32 is not included on System's namespace page: http://www.rinspin.com/~bronson/mono/statidoc-0.1/output/mscorlib.xml,namespace.xsl%5Bns=System,l=en%5D.html Is there any reason these classes were omitted from the index? From brianlritchie@hotmail.com Sun Oct 20 20:33:55 2002 From: brianlritchie@hotmail.com (Brian Ritchie) Date: Sun, 20 Oct 2002 15:33:55 -0400 Subject: [Mono-list] ODBC.NET Data Provider Update Message-ID: Work progresses on tricking out the ODBC provider...it isn't production ready yet, but then what is :) The provider is definitely in a quite usuable state. I've been performing basic testing on Linux (Debian w/ DB2) and Windows (WinXP w/ SQL Server & Excel db drivers). The mono config file has been updated to handle auto-switching of odbc32.dll vs. libodbc.so based on platform. The following changes have been commited to CVS: - Fixed TinyInt mapping (Thanks Daniel for finding the bug!) - Parameter support for all data types (could use further optimization) - Implemented full error handling support: OdbcException, OdbcError, OdbcErrorCollection. This includes getting the full error message text back from the ODBC driver. - Transaction Isolation Level is supported - ExecuteScalar is supported - Support CloseConnection CommandBehavior for ExecuteReader Known Issues: - A number of data types are returned as strings instead of native types - Following command behaviors aren't supported: KeyInfo, SchemaOnly, SequentialAccess - DataAdapter & CommandBuilder still not supported Thanks to all who have been road testing the provider (especially Daniel Morgan). Brian _________________________________________________________________ Unlimited Internet access -- and 2 months free!  Try MSN. http://resourcecenter.msn.com/access/plans/2monthsfree.asp From tomguinther@hotmail.com Sun Oct 20 22:37:40 2002 From: tomguinther@hotmail.com (Tom Guinther) Date: Sun, 20 Oct 2002 17:37:40 -0400 Subject: [Mono-list] Concerns regarding interpreter implementation of Compare and Branching instructions w/ Floating Point values Message-ID: This is a multi-part message in MIME format. ------=_NextPart_000_008C_01C2785F.63377400 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable The other day while reading the CLI specification I became a bit = confused regarding the exact implementation of the compare and branching = instructions when floating point values are being evaluated. Being = aware of, but completely uninvolved with, this project I thought it = would be interesting to review the "mono" interpretation of the = specification. Surprisingly I found an implementation that seems = relatively inconsistent and somewhat bizarre in relation to my (naive?) = interpretation of the specification. This simply leads me to wonder = whether the spec is grossly inaccurate, my interpretation is = off-the-wall, or the Mono implementation is lacking in = detail/correctness in this area. Their two fundamental issues that I wanted to bring up for discussion: 1) The proper interpretation of CGT.UN(.S) and CLT.UN(.S) 2) The overall implementation of compare and branching instructions = w/ floating point values Note: The answer to question #1 has little or no bearing on my = questions related to the existing implementation of the compare and = branching instructions w/ floating point values Just to be explicit, my entire discussion is only related to floating = point values and therefore I only talk about implementation of the = instructions with regard to floating-point values and I am extracting = implementation information from the mono/interpreter/interp.c (which I = am assuming is not a DEAD file.) Part 1 - The proper interpretation of CGT.UN(.S) and CLT.UN(.S): The original question I was pondering was related to implementations of = CGT.UN(.S) and CLT.UN(.S) where the spec uses the following type of = wording: "for floating-point numbers, either value1 is strictly greater than = value2, or value1 is not ordered with respect to value2" contrasted with the wording for the non UN version(s) which explicitly = state the following: "... If value1 is strictly greater than value2, ... for = floating-point numbers, CGT returns 0 [false] if the numbers are = unordered (that is, if one or both of the arguments are NaN)" The explicit wording of the CGT instruction leads to me to the following = pseudo implementation (CLT is the same, just change the > operator to < = operator): CGT ..., F1, F2 =3D> Int32(true=3D1 or false=3D0) if isunordered(F1) or isunordered(F2) result =3D false ; else result =3D F1 > F2 ; Given the different "wordage" for CGT.UN I concluded that the = following pseudo implementation was correct. If it is not correct I = would be extremely happy to receive the correct interpretation. Also, = the implementation of CLT.UN would be the same except for replacing the = > operator with the < operator. CGT.UN ..., F1, F2 =3D> Int32(true=3D1, false=3D0) if (isunordered(F1)) result =3D false ; else result =3D isunordered(F2) or (F1 > F2) Part 2: The overall implementation of compare and branching = instructions w/ floating point values The correct interpretation and implementation of the compare = instructions is critical to successfully implementing the branch = instructions. This is because the branch instructions are defined in = terms of the compare instructions. For completeness sake I want to = explicitly define pseudo implementation for the remaining compare = instruction CEQ. CEQ ..., F1, F2 =3D> Int32(true=3D1, false=3D0) if isunordered(F1) or isunordered(F2) result =3D false ; else result =3D F1 =3D=3D F2 ; As you might expect, the Mono implementation of CEQ is as follows (and = seems correct to me): CEQ: if (isnan(F1) || isnan(F2)) result =3D 0 ; else result =3D F1 =3D=3D F2 The Mono implementation for CGT(.S), CLT(.S), CGT.UN(.S), CLT.UN(.S) = follows: CGT: CGT.S: if (isnan(F1) || isnan(F2)) result =3D 0 ; else result =3D F1 > F2 CLT: CLT.S: if (isnan(F1) || isnan(F2)) result =3D 0 ; else result =3D F1 < F2 CGT.UN: result =3D isnan(F1) || isnan(F2) CLT.UN: result =3D isnan(F1) || isnan(F2) You may notice that the implementations of CGT.UN and CLT.UN are exactly = the same and involve NO comparisons. This may be intentional, and if so, = the CLI specification for these instructions is written very poorly. I = don't see how the Mono implementation can be correct assuming that the = designers would not define two opcodes that do the exact same thing and = imply that some type of comparison is involved when it isn't. Hmmm... Now to the branching instructions: BEQ(.S) is defined as equivalent to: CEQ BRTRUE Which is the equivalent of: if isunordered(F1) or isunordered(F2) branch =3D false else branch =3D F1 =3D=3D F2 The Mono implementation of BEQ(.S) is: result =3D F1 =3D=3D F2 Clearly, unordered values are not taken into consideration as the = specification requires. BGE(.S) is defined as equivalent to: CLT.UN BRTRUE Which is the equivalent of (according to my possibly errant = interpretation): if isunordered(F1) branch =3D true ; else branch =3D !isunordered(F2) and (F1 >=3D F2) The Mono implementation of BGE(.S) is: result =3D F1 >=3D F2 ; Regardless of interpretation of CLT.UN, Mono is not accounting for = unordered values. And so the list goes on for the branch instructions that are not of = the .UN form. Unordered values are not properly taken into account = (based on my understanding). The implementation of the B??.UN(.S) instructions are generally of = the form: !isunordered(F1) && !isunordered(F2) and (F1 op F2) This may not be the correct implementation (depending on correct = interpretation of CGT.UN(.S) and CLT.UN(.S)) for: BGT.UN(.S) and BLT.UN(.S) since there equivalency is defined in = terms of CGT.UN(.S) and CLT.UN(.S) respectively while BGE.UN(.S) and BLE.UN(.S) are defined in terms of CLT and CGT = (respectively) Apologies in advance for the long, incoherent e-mail, but any = thoughts/answers would be much appreciated. Tom Guinther =20 ------=_NextPart_000_008C_01C2785F.63377400 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
The other day while reading the CLI = specification I=20 became a bit confused regarding the exact implementation of the compare = and=20 branching instructions when floating point values are being = evaluated. =20 Being aware of, but completely uninvolved with, this project I thought = it would=20 be interesting to review the "mono" interpretation of the specification. = Surprisingly I found an implementation that seems relatively = inconsistent and=20 somewhat bizarre in relation to my (naive?) interpretation of the = specification.=20 This simply leads me to wonder whether the spec is grossly inaccurate, = my=20 interpretation is off-the-wall, or the Mono implementation is lacking in = detail/correctness in this area.
 
Their two fundamental  issues that = I wanted to=20 bring up for discussion:
    1) The proper = interpretation of=20 CGT.UN(.S) and CLT.UN(.S)
    2) The overall = implementation of=20 compare and branching instructions w/ floating point values
 
    Note: The answer to = question #1=20 has little or no bearing on my questions related to the existing = implementation=20 of the compare and branching instructions w/
        = floating=20 point values
 
Just to be explicit, my entire = discussion is only=20 related to floating point values and therefore I only talk about = implementation=20 of the instructions with regard to floating-point values and I am = extracting=20 implementation information from the mono/interpreter/interp.c (which I = am=20 assuming is not a DEAD file.)
 
 
Part 1 - The proper interpretation of = CGT.UN(.S)=20 and CLT.UN(.S):
 
The original question I was pondering = was related=20 to implementations of CGT.UN(.S) and CLT.UN(.S) where the spec uses the=20 following type of wording:
    "for floating-point = numbers,=20 either value1 is strictly greater than value2, or value1 is not ordered = with=20 respect to value2"
contrasted with the wording for the non = UN=20 version(s) which explicitly state the following:
    "... If value1 is = strictly=20 greater than value2, ... for floating-point numbers, CGT returns 0 = [false] if=20 the numbers are unordered (that is, if one or both of the arguments are=20 NaN)"
 
The explicit wording of the CGT = instruction leads=20 to me to the following pseudo implementation (CLT is the same, just = change the=20 > operator to < operator):
 
    CGT
    ..., F1, F2 =3D>=20 Int32(true=3D1 or false=3D0)
 
    if isunordered(F1) = or=20 isunordered(F2)
        = result =3D=20 false ;
    else
        = result =3D F1=20 > F2 ;
 
    Given the different = "wordage"=20 for CGT.UN I concluded that the following pseudo implementation was = correct. If=20 it is not correct I would be extremely happy to receive the correct=20 interpretation. Also, the implementation of CLT.UN would be the same = except for=20 replacing the > operator with the < operator.
 
    CGT.UN
    ..., F1, F2 =3D> = Int32(true=3D1,=20 false=3D0)
 
    if=20 (isunordered(F1))
        = result =3D=20 false ;
    else
        = result =3D=20 isunordered(F2) or (F1 > F2)
 
 
    Part 2: The overall=20 implementation of compare and branching instructions w/ floating point=20 values
 
    The correct = interpretation and=20 implementation of the compare instructions is critical to successfully=20 implementing the branch instructions. This is because the branch = instructions=20 are defined in terms of the compare instructions. For completeness sake = I want=20 to explicitly define pseudo implementation for the remaining compare = instruction=20 CEQ.
 
CEQ
..., F1, F2 =3D> Int32(true=3D1,=20 false=3D0)
 
if isunordered(F1) or = isunordered(F2)
    result =3D false = ;
else
    result =3D F1 =3D=3D = F2 ;
 
 
As you might expect, the Mono = implementation of CEQ=20 is as follows (and seems correct to=20 me):
CEQ:
    if (isnan(F1) ||=20 isnan(F2))
        = result =3D 0=20 ;
    else
        = result =3D F1=20 =3D=3D F2
 
The Mono implementation for CGT(.S), = CLT(.S),=20 CGT.UN(.S), CLT.UN(.S) follows:
CGT:
CGT.S:
    if (isnan(F1) ||=20 isnan(F2))
        = result =3D 0=20 ;
    else
        = result =3D=20 F1 > F2
 
CLT:
CLT.S:
    if (isnan(F1) ||=20 isnan(F2))
        = result =3D 0=20 ;
    else
        = result =3D=20 F1 < F2
 
CGT.UN:
    result =3D isnan(F1) || isnan(F2)
 
CLT.UN:
    result =3D isnan(F1) || isnan(F2)
 
You may notice that the implementations of CGT.UN and CLT.UN are = exactly=20 the same and involve NO comparisons. This may be intentional, and if so, = the CLI=20 specification for these instructions is written very poorly. I don't see = how the=20 Mono implementation can be correct assuming that the designers would not = define=20 two opcodes that do the exact same thing and imply that some type of = comparison=20 is involved when it isn't. Hmmm...
 
Now to the branching instructions:
    BEQ(.S) is defined as equivalent to:
        CEQ
        BRTRUE
 
    Which is the equivalent of:
        if isunordered(F1) or=20 isunordered(F2)
            = branch =3D=20 false
        else
            branch =3D = F1 =3D=3D=20 F2
 
The Mono implementation of BEQ(.S) is:
    result =3D F1 =3D=3D F2
 
Clearly, unordered values are not taken into consideration as the=20 specification requires.
    BGE(.S) is defined as equivalent to:
        CLT.UN
        BRTRUE
 
    Which is the equivalent of (according to my = possibly=20 errant interpretation):
        if isunordered(F1)
            branch =3D = true=20 ;
        else
            branch =3D = !isunordered(F2) and (F1 >=3D F2)
 
    The Mono implementation of BGE(.S) is:
        result =3D F1 >=3D F2 = ;
 
   Regardless of interpretation of CLT.UN, Mono is = not=20 accounting for unordered values.
 
    And so the list goes on for the branch = instructions that=20 are not of the .UN form. Unordered values are not properly taken into = account=20 (based on my understanding).
 
    The implementation of the B??.UN(.S) = instructions are=20 generally of the form:
        !isunordered(F1) &&=20 !isunordered(F2) and (F1 op F2)
 
    This may not be the correct implementation = (depending on=20 correct interpretation of CGT.UN(.S) and CLT.UN(.S)) for:
        BGT.UN(.S) and = BLT.UN(.S) since=20 there equivalency is defined in terms of CGT.UN(.S) and CLT.UN(.S) = respectively=20 while
        BGE.UN(.S) and BLE.UN(.S) are = defined=20 in terms of CLT and CGT (respectively)
 
 
Apologies in advance for the long, incoherent e-mail, but any=20 thoughts/answers would be much appreciated.
 
Tom Guinther
 
 
 
   
------=_NextPart_000_008C_01C2785F.63377400-- From bronson@rinspin.com Mon Oct 21 04:10:18 2002 From: bronson@rinspin.com (Scott Bronson) Date: 20 Oct 2002 20:10:18 -0700 Subject: [Mono-list] Help needed with XSLT transformations (documentation browser) In-Reply-To: <1035141790.19385.106.camel@emma> References: <1034302508.14577.313.camel@erandi.boston.ximian.com> <1035113332.19384.95.camel@emma> <1035141790.19385.106.camel@emma> Message-ID: <1035169819.23351.50.camel@emma> I put the latest version of the output up at http://www.rinspin.com/~bronson/mono/statidoc-0.11/ I didn't manage to get the member lists working this weekend (DRAT!). I probably won't have time to work on them again much until Thursday. They should be pretty cool. I hope they're worth the wait. As far as I can tell, once I get the member pages working, the structure will be complete. After that it's just style, baby, style. - Scott From JRHwork@hotmail.com Mon Oct 21 04:28:32 2002 From: JRHwork@hotmail.com (Jackson Harper) Date: Sun, 20 Oct 2002 20:28:32 -0700 Subject: [Mono-list] patch for corlib\System.Security.Policy\Evidence.cs Message-ID: This is a multi-part message in MIME format. ------=_NextPart_000_004C_01C27877.420A2E40 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Here is my patch for corlib\System.Security.Policy\Evidence.cs Changelog Entry: Implemented most methods. Happy Hacking, Jackson ------=_NextPart_000_004C_01C27877.420A2E40 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Here is my patch for=20 corlib\System.Security.Policy\Evidence.cs

Changelog = Entry:
Implemented=20 most methods.

Happy = Hacking,
Jackson

 

------=_NextPart_000_004C_01C27877.420A2E40-- From ndrochak@gol.com Mon Oct 21 04:38:06 2002 From: ndrochak@gol.com (Nick Drochak) Date: Mon, 21 Oct 2002 12:38:06 +0900 Subject: [Mono-list] IMPORTANT: DO NOT OPEN W32.Elkern removal tools In-Reply-To: <001201c27798$230268d0$010aa8c0@roithw2k> Message-ID: | -----Original Message----- | From: mono-list-admin@ximian.com [mailto:mono-list-admin@ximian.com]On | Behalf Of Guenther Roith | Sent: Sunday, October 20, 2002 2:51 AM | To: mono-list | Subject: [Mono-list] IMPORTANT: DO NOT OPEN W32.Elkern removal tools | | | Hello, everybody! | | It seems like ndrochak is infected by a virus, that has sent it to | mono-list. | Windows users: DO NOT OPEN the attached .exe file!!! Dudes, I don't think it was me. Doesn't this virus impersonate the sender? I've been framed! But yeah. Don't open the attachment. Nick D. From JRHwork@hotmail.com Mon Oct 21 04:48:53 2002 From: JRHwork@hotmail.com (Jackson Harper) Date: Sun, 20 Oct 2002 20:48:53 -0700 Subject: [Mono-list] Here is my patch for corlib\System.Security.Policy\Evidence.cs Message-ID: This is a multi-part message in MIME format. ------=_NextPart_000_008C_01C2787A.1996C650 Content-Type: multipart/alternative; boundary="----=_NextPart_001_008D_01C2787A.1996C650" ------=_NextPart_001_008D_01C2787A.1996C650 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Found the attach button this time. :-)~ Here is my patch for corlib\System.Security.Policy\Evidence.cs Changelog Entry: Implemented most methods. ------=_NextPart_001_008D_01C2787A.1996C650 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Found the attach button this time.=20 :-)~
 
Here is my=20 patch for corlib\System.Security.Policy\Evidence.cs

Changelog=20 Entry:
Implemented most=20 methods.

------=_NextPart_001_008D_01C2787A.1996C650-- ------=_NextPart_000_008C_01C2787A.1996C650 Content-Type: application/octet-stream; name="Evidence.cs.patch" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="Evidence.cs.patch" Index: Evidence.cs=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A= RCS file: /mono/mcs/class/corlib/System.Security.Policy/Evidence.cs,v=0A= retrieving revision 1.4=0A= diff -u -r1.4 Evidence.cs=0A= --- Evidence.cs 1 Apr 2002 20:22:40 -0000 1.4=0A= +++ Evidence.cs 21 Oct 2002 03:15:49 -0000=0A= @@ -1,27 +1,169 @@=0A= -// System.Security.Policy.Evidence=0A= -//=0A= -// Authors:=0A= -// Sean MacIsaac (macisaac@ximian.com)=0A= -// Nick Drochak (ndrochak@gol.com)=0A= -//=0A= -// (C) 2001 Ximian, Inc.=0A= -=0A= -using System.Collections;=0A= -=0A= -namespace System.Security.Policy=0A= -{=0A= - [MonoTODO]=0A= - [Serializable]=0A= - public sealed class Evidence=0A= - {=0A= - =0A= - [MonoTODO]=0A= - public Evidence () {=0A= - }=0A= -=0A= - [MonoTODO]=0A= - public IEnumerator GetHostEnumerator() {=0A= - throw new NotImplementedException();=0A= - }=0A= - }=0A= -}=0A= +// System.Security.Policy.Evidence +// +// Authors: +// Sean MacIsaac (macisaac@ximian.com) +// Nick Drochak (ndrochak@gol.com) +// Jackson Harper (Jackson@LatitudeGeo.com) +// +// (C) 2001 Ximian, Inc. + +using System; +using System.Collections; + +namespace System.Security.Policy { + + [MonoTODO] + public sealed class Evidence : ICollection, IEnumerable { + + =09 + private ArrayList mHostEvidenceList =3D new ArrayList();=09 + private ArrayList mAssemblyEvidenceList =3D new ArrayList(); + =09 + public Evidence ()=20 + { + } + + public Evidence( Evidence evidence )=20 + { + Merge( evidence );=09 + } + + public Evidence( object[] hostEvidence, object[] assemblyEvidence )=20 + { + if ( null !=3D hostEvidence ) + mHostEvidenceList.AddRange( hostEvidence ); + if ( null !=3D assemblyEvidence ) + mAssemblyEvidenceList.AddRange( assemblyEvidence ); + } + =09 + // + // Public Properties + // +=09 + public int Count { + get { + return ( mHostEvidenceList.Count + mAssemblyEvidenceList.Count ); + } + } + + public bool IsReadOnly { + get{ + return false; + } + } + =09 + public bool IsSynchronized { + get { + return false; + } + } + + [MonoTODO] + public bool Locked { + get { + throw new NotImplementedException(); + } + set { + throw new NotImplementedException(); + } + }=09 + + public object SyncRoot { + get { + return this; + } + } + + // + // Public Methods + // + + public void AddAssembly( object id )=20 + { + mAssemblyEvidenceList.Add( id ); + } + + [MonoTODO("If Locked is true and the code that calls this method does = not have SecurityPermissionFlag.ControlEvidence a SecurityException = should be thrown")] + public void AddHost( object id )=20 + { + mHostEvidenceList.Add( id ); + } + + public void CopyTo( Array array, int index )=20 + { + if ( mHostEvidenceList.Count > 0 )=20 + mHostEvidenceList.CopyTo( array, index ); + if ( mAssemblyEvidenceList.Count > 0 )=20 + mAssemblyEvidenceList.CopyTo( array, index + = mHostEvidenceList.Count ); + } + + public IEnumerator GetEnumerator()=20 + { + return new EvidenceEnumerator( mHostEvidenceList.GetEnumerator(),=20 + mAssemblyEvidenceList.GetEnumerator() ); + } + + public IEnumerator GetAssemblyEnumerator()=20 + { + return mAssemblyEvidenceList.GetEnumerator(); + } + + public IEnumerator GetHostEnumerator()=20 + { + return mHostEvidenceList.GetEnumerator(); + } + + public void Merge( Evidence evidence )=20 + { + IEnumerator hostenum , assemblyenum; + =09 + hostenum =3D evidence.GetHostEnumerator(); + while( hostenum.MoveNext() ) { + AddHost( hostenum.Current ); + } + + assemblyenum =3D evidence.GetAssemblyEnumerator(); + while( assemblyenum.MoveNext() ) { + AddAssembly( assemblyenum.Current ); + } + } +=09 + private class EvidenceEnumerator : IEnumerator { + =09 + private IEnumerator mCurrentEnum, mHostEnum, mAssemblyEnum; =09 +=09 + public EvidenceEnumerator( IEnumerator hostenum, IEnumerator = assemblyenum )=20 + { + mHostEnum =3D hostenum; + mAssemblyEnum =3D assemblyenum; + mCurrentEnum =3D mHostEnum; =09 + } + + public bool MoveNext()=20 + { + bool ret =3D mCurrentEnum.MoveNext(); + =09 + if ( !ret && mHostEnum =3D=3D mCurrentEnum ) { + mCurrentEnum =3D mAssemblyEnum; + ret =3D mAssemblyEnum.MoveNext(); + } + + return ret; + } + + public void Reset()=20 + { + mHostEnum.Reset(); + mAssemblyEnum.Reset(); + mCurrentEnum =3D mHostEnum; + } + + public object Current { + get { + return mCurrentEnum.Current; + } + } + } + + } +} ------=_NextPart_000_008C_01C2787A.1996C650-- From duncan@ximian.com Mon Oct 21 05:21:10 2002 From: duncan@ximian.com (Duncan Mak) Date: 21 Oct 2002 00:21:10 -0400 Subject: [Mono-list] implementation of System.Xml.XmlElement.InnerXml In-Reply-To: <1035099033.28456.9.camel@localhost.localdomain> References: <20021020155045.D711.GINGA@kit.hi-ho.ne.jp> <1035099033.28456.9.camel@localhost.localdomain> Message-ID: <1035174069.28456.17.camel@localhost.localdomain> On Sun, 2002-10-20 at 03:30, Duncan Mak wrote: > On Sun, 2002-10-20 at 03:11, ginga(A.E.) wrote: > > > > I wrote System.Xml.XmlElement.InnerXml() code and some tests. > > > > Thanks a lot! I'll merge this into CVS tomorrow. I just applied your patched to my tree and tested the patches, they build just fine. The code has just been committed to CVS! A few general things about submitting patches to mono-list: * It would be really nice if you could also send a ChangeLog entry. * Make sure the coding style is consistent (it looks okay now). Atsushi, I cannot thank you enough. This is the fastest turnaround time I've ever seen (from initial e-mail to mailing list to the patch submission), this is really awesome. Arigato gozaimashita, -- Duncan Mak From miguel@ximian.com Mon Oct 21 05:36:06 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 21 Oct 2002 00:36:06 -0400 Subject: [Mono-list] Re: [Mono-winforms-list] Request For Assistance with Windows.Forms In-Reply-To: <1035061615.4986.51.camel@pooh.hundredacrewood> References: <1035061615.4986.51.camel@pooh.hundredacrewood> Message-ID: <1035174966.14577.1257.camel@erandi.boston.ximian.com> Hello John! > In CVS we currently have most of the System.Windows.Forms classes > stubbed out. Our WineLib implementation can now do a few simple tasks > and there is a good foundation for implementing the rest of the > System.Windows.Forms namespace. > > The Control class is the base class for most of the Windows control > classes in Windows.Forms and it has most of the implementation in place. > If anyone like to "claim" ownership of one or more of the Windows > control classes and fill in the implementation there are several classes > available. The stubbed-out classes are in place. You will just need to > fill in the Win32 implementation. Is it possible to build the Windows.Forms package on Windows? Since the WineLib code is effectively the Win32 implementation, we should probably provide some way of compiling it and testing it on Windows. Miguel From jacksonh@telus.net Mon Oct 21 04:21:38 2002 From: jacksonh@telus.net (Jackson Harper) Date: Sun, 20 Oct 2002 20:21:38 -0700 Subject: [Mono-list] Patch for corlib/System.Security.Policy/Evidence.cs References: <9891913C5BFE87429D71E37F08210CB91839D9@zeus.sfhq.friskit.com> <20021019140406.A1515@md3.vsnl.net.in> Message-ID: <002401c278b0$f840aac0$8c9bb440@HP> This is a multi-part message in MIME format. ------=_NextPart_000_0021_01C27876.4B648C70 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Here is my patch for corlib\System.Security.Policy\Evidence.cs Changelog Entry: Implemented most methods. ------=_NextPart_000_0021_01C27876.4B648C70 Content-Type: application/octet-stream; name="Evidence.cs.patch" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="Evidence.cs.patch" Index: Evidence.cs=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A= RCS file: /mono/mcs/class/corlib/System.Security.Policy/Evidence.cs,v=0A= retrieving revision 1.4=0A= diff -u -r1.4 Evidence.cs=0A= --- Evidence.cs 1 Apr 2002 20:22:40 -0000 1.4=0A= +++ Evidence.cs 21 Oct 2002 03:15:49 -0000=0A= @@ -1,27 +1,169 @@=0A= -// System.Security.Policy.Evidence=0A= -//=0A= -// Authors:=0A= -// Sean MacIsaac (macisaac@ximian.com)=0A= -// Nick Drochak (ndrochak@gol.com)=0A= -//=0A= -// (C) 2001 Ximian, Inc.=0A= -=0A= -using System.Collections;=0A= -=0A= -namespace System.Security.Policy=0A= -{=0A= - [MonoTODO]=0A= - [Serializable]=0A= - public sealed class Evidence=0A= - {=0A= - =0A= - [MonoTODO]=0A= - public Evidence () {=0A= - }=0A= -=0A= - [MonoTODO]=0A= - public IEnumerator GetHostEnumerator() {=0A= - throw new NotImplementedException();=0A= - }=0A= - }=0A= -}=0A= +// System.Security.Policy.Evidence +// +// Authors: +// Sean MacIsaac (macisaac@ximian.com) +// Nick Drochak (ndrochak@gol.com) +// Jackson Harper (Jackson@LatitudeGeo.com) +// +// (C) 2001 Ximian, Inc. + +using System; +using System.Collections; + +namespace System.Security.Policy { + + [MonoTODO] + public sealed class Evidence : ICollection, IEnumerable { + + =09 + private ArrayList mHostEvidenceList =3D new ArrayList();=09 + private ArrayList mAssemblyEvidenceList =3D new ArrayList(); + =09 + public Evidence ()=20 + { + } + + public Evidence( Evidence evidence )=20 + { + Merge( evidence );=09 + } + + public Evidence( object[] hostEvidence, object[] assemblyEvidence )=20 + { + if ( null !=3D hostEvidence ) + mHostEvidenceList.AddRange( hostEvidence ); + if ( null !=3D assemblyEvidence ) + mAssemblyEvidenceList.AddRange( assemblyEvidence ); + } + =09 + // + // Public Properties + // +=09 + public int Count { + get { + return ( mHostEvidenceList.Count + mAssemblyEvidenceList.Count ); + } + } + + public bool IsReadOnly { + get{ + return false; + } + } + =09 + public bool IsSynchronized { + get { + return false; + } + } + + [MonoTODO] + public bool Locked { + get { + throw new NotImplementedException(); + } + set { + throw new NotImplementedException(); + } + }=09 + + public object SyncRoot { + get { + return this; + } + } + + // + // Public Methods + // + + public void AddAssembly( object id )=20 + { + mAssemblyEvidenceList.Add( id ); + } + + [MonoTODO("If Locked is true and the code that calls this method does = not have SecurityPermissionFlag.ControlEvidence a SecurityException = should be thrown")] + public void AddHost( object id )=20 + { + mHostEvidenceList.Add( id ); + } + + public void CopyTo( Array array, int index )=20 + { + if ( mHostEvidenceList.Count > 0 )=20 + mHostEvidenceList.CopyTo( array, index ); + if ( mAssemblyEvidenceList.Count > 0 )=20 + mAssemblyEvidenceList.CopyTo( array, index + = mHostEvidenceList.Count ); + } + + public IEnumerator GetEnumerator()=20 + { + return new EvidenceEnumerator( mHostEvidenceList.GetEnumerator(),=20 + mAssemblyEvidenceList.GetEnumerator() ); + } + + public IEnumerator GetAssemblyEnumerator()=20 + { + return mAssemblyEvidenceList.GetEnumerator(); + } + + public IEnumerator GetHostEnumerator()=20 + { + return mHostEvidenceList.GetEnumerator(); + } + + public void Merge( Evidence evidence )=20 + { + IEnumerator hostenum , assemblyenum; + =09 + hostenum =3D evidence.GetHostEnumerator(); + while( hostenum.MoveNext() ) { + AddHost( hostenum.Current ); + } + + assemblyenum =3D evidence.GetAssemblyEnumerator(); + while( assemblyenum.MoveNext() ) { + AddAssembly( assemblyenum.Current ); + } + } +=09 + private class EvidenceEnumerator : IEnumerator { + =09 + private IEnumerator mCurrentEnum, mHostEnum, mAssemblyEnum; =09 +=09 + public EvidenceEnumerator( IEnumerator hostenum, IEnumerator = assemblyenum )=20 + { + mHostEnum =3D hostenum; + mAssemblyEnum =3D assemblyenum; + mCurrentEnum =3D mHostEnum; =09 + } + + public bool MoveNext()=20 + { + bool ret =3D mCurrentEnum.MoveNext(); + =09 + if ( !ret && mHostEnum =3D=3D mCurrentEnum ) { + mCurrentEnum =3D mAssemblyEnum; + ret =3D mAssemblyEnum.MoveNext(); + } + + return ret; + } + + public void Reset()=20 + { + mHostEnum.Reset(); + mAssemblyEnum.Reset(); + mCurrentEnum =3D mHostEnum; + } + + public object Current { + get { + return mCurrentEnum.Current; + } + } + } + + } +} ------=_NextPart_000_0021_01C27876.4B648C70-- From ndrochak@gol.com Mon Oct 21 08:51:56 2002 From: ndrochak@gol.com (Nick Drochak) Date: Mon, 21 Oct 2002 16:51:56 +0900 Subject: [Mono-list] a small XmlTextReader.ReadContent() modification In-Reply-To: <20021020051102.C79F.GINGA@kit.hi-ho.ne.jp> Message-ID: | -----Original Message----- | From: mono-list-admin@ximian.com [mailto:mono-list-admin@ximian.com]On | Behalf Of ginga@kit.hi-ho.ne.jp | Sent: Sunday, October 20, 2002 5:18 AM | To: mono-list@ximian.com | Subject: [Mono-list] a small XmlTextReader.ReadContent() modification | | | Hello. | | I modified one line of the XmlTextReader.ReadContent() method. | 40 failures and 8 errors of the System.Xml tests are | now reduced to 2 failures. I found some of the failures are because | of the fact that the only one empty element in the document wasn't | stored inside. Cool. Maybe you can ask Miguel for cvs access now. Check out the procedure at http://www.go-mono.com/ccvs.html. Regards, Nick D. From pluto@tipic.com Mon Oct 21 10:48:23 2002 From: pluto@tipic.com (Francesco Delfino) Date: Mon, 21 Oct 2002 11:48:23 +0200 Subject: [Mono-list] Re: Request For Assistance with Windows.Forms References: <1035061615.4986.51.camel@pooh.hundredacrewood> <1035174966.14577.1257.camel@erandi.boston.ximian.com> Message-ID: <1035193647.305471@tigri.napoli.consorzio-cini.it> I just updated from CVS and I found a System.Windows.Forms directory, which contains: Gtk WINELib System.Windows.Forms System.Windows.Forms.Design System.Resources Under each ot them, we have distinct .sln files. Now, the idea is to implement a common runtime (System.Windows.Forms, System.Windows.Forms.Design, and System.Resources dir) and then bindings to Gtk and WINELib, or the directories are just supposed to be used for storing class "interfaces" to pick, copy in Gtk and WINELib dir and then fill-in the methods? -- Regards, Francesco Delfino Tipic Inc. http://www.tipic.com e-mail & Jabber: pluto@tipic.com blog: http://www.tipic.com/blog/pluto@tipic.com "Miguel de Icaza" wrote in message news:1035174966.14577.1257.camel@erandi.boston.ximian.com... > Hello John! > > > In CVS we currently have most of the System.Windows.Forms classes > > stubbed out. Our WineLib implementation can now do a few simple tasks > > and there is a good foundation for implementing the rest of the > > System.Windows.Forms namespace. > > > > The Control class is the base class for most of the Windows control > > classes in Windows.Forms and it has most of the implementation in place. > > If anyone like to "claim" ownership of one or more of the Windows > > control classes and fill in the implementation there are several classes > > available. The stubbed-out classes are in place. You will just need to > > fill in the Win32 implementation. > > Is it possible to build the Windows.Forms package on Windows? > > Since the WineLib code is effectively the Win32 implementation, we > should probably provide some way of compiling it and testing it on > Windows. > > Miguel > > _______________________________________________ > Mono-winforms-list maillist - Mono-winforms-list@ximian.com > http://lists.ximian.com/mailman/listinfo/mono-winforms-list > --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.401 / Virus Database: 226 - Release Date: 09/10/2002 From rafaelteixeirabr@hotmail.com Mon Oct 21 12:36:26 2002 From: rafaelteixeirabr@hotmail.com (A Rafael D Teixeira) Date: Mon, 21 Oct 2002 09:36:26 -0200 Subject: [Mono-list] patents on ISO/ECMA C# Message-ID: >How much of non ECMA .NET does mono have ? ... (Microsoft.VisualBasic.dll >?) Mono has System.Data, System.Design, System.EnterpriseServices, System.Web, System.Web.Services, System.Windows.Forms which aren't part of ECMA. ECMA has only about 10% of .NET Class Library covered. Future developments of Mono will add other assemblies found in .NET and not in ECMA to the list (I'm working on System.Messaging, for instance). ECMA may in the future expand it's class library, either adopting further .NET namespaces and classes, or creating alternative ones. We may help shape it, but currently is a stated goal of Mono to be, as much as possible, compatible with MS.NET, to easy the migration of applications developed in Windows to platforms supported by Mono. Rafael Teixeira Brazilian Polymath _________________________________________________________________ Broadband? Dial-up? Get reliable MSN Internet Access. http://resourcecenter.msn.com/access/plans/default.asp From arnold@mis.mpg.de Mon Oct 21 13:12:51 2002 From: arnold@mis.mpg.de (Holger Arnold) Date: Mon, 21 Oct 2002 14:12:51 +0200 Subject: [Mono-list] Interrupting the garbage collector Message-ID: <200210211128.g9LBSSm26855@trna.ximian.com> Hello, a short question relating to the garbage collector: Assume that we have a managed application using n threads T_1, ..., T_n. Let thread T_i trigger a garbage collection. Which of the following assumptions are correct? (1) All threads except T_i are stopped and the garbage collection runs in thread T_i. (2) The garbage collector runs with the priority of T_i. This means that a thread T_k, which has a priority higher than T_i, can interrupt the garbage collector. (3) The Boehm garbage collector can be safely interrupted. (4) An interrupting thread T_k can trigger another garbage collection. What happens then? Just for the case that I'm completely wrong, can someone try to explain the mechanism to me in a few words? Holger From danmorg@sc.rr.com Mon Oct 21 13:26:24 2002 From: danmorg@sc.rr.com (Daniel Morgan) Date: Mon, 21 Oct 2002 08:26:24 -0400 Subject: [Mono-list] RE: Mono Win32 In-Reply-To: <215225380B4BD411B3B80090276A7D6119E6C1@SERVER> Message-ID: This is a multi-part message in MIME format. ------=_NextPart_000_0019_01C278DB.8B4C2770 Content-Type: multipart/alternative; boundary="----=_NextPart_001_001A_01C278DB.8B4C2770" ------=_NextPart_001_001A_01C278DB.8B4C2770 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Hi Andrew, I hope you don't mind me forwarding this to the mono-list. Here are my answers to your questions: For (1), the link at the http://www.go-mono.com/download works for me. However, there is only a binaries package for the Mono 0.15 release. Sergey was kind of enough to provide those binaries. Maybe, you can ask him nicely, and he can provide a new release. Or he could tell use how he made the package so others could make it for you. For (2), use the mono-bulid-w32.sh build script. You can find this on the http://www.go-mon.com/download/ page. In mono cvs, it is found in mono/doc. You need cygwin from http://www.cygwin.com/ to bulid. You may need the Microsoft .NET Framework Redistrbutable from MSDN too which is a free download, see http://msdn.microsoft.com/downloads/sample.asp?url=/MSDN-FILES/027/001/829/m sdncompositedoc.xml&frame=true For (3), check out gtk# from cvs. You will need to download the following packages and install them in your mono prefix that is mentioned on the web site: http://www.gimp.org/~tml/gimp/win32/downloads.html Here are the dependency packages for GTK+ you will need from that link, and it does not matter that cygwin includes some either, you still need these native Win32 packages: GNU libiconv libintl-x.xx.xx-tml-xxxxxxxx.zip (as of this writing 0.10.40-tml-20020904) glib-2.x.x-xxxxxxxx.zip (currently 2.0.6-20020802) glib-dev-2.x.x-xxxxxxxx.zip (currently 2.0.6-20020802) Zlib, libpng, libjpeg, libtiff, and FreeType2 (the Bin and (either called Dev or Lib) packages) from the GnuWin32 project at Sourceforge. And finally, the GTK+ BIN and DEV packages: gtk+-2.x.x-xxxxxxxx.zip (currently 2.0.6-20020921) gtk+-dev-2.x.x-xxxxxxxx.zip (currently 2.0.6-20020921) atk-x.x.x-xxxxxxxx.zip (currently 1.0.3-20020821) pango-x.x.x-xxxxxxxx.zip (currently 1.0.4-20020928) atk-dev-x.x.x.xxxxxxxx.zip (currently 1.0.3-20020821) pango-dev-x.x.xxxxxxxx.zip (currently 1.0.4-20020928) Once all these packages have been unzipped to your mono prefix, you will need to edit every pkgconfig file that has a .pc suffix in the mono-prefix/lib/pkgconfig path. For instance: in atk.pc, change the "prefix" line From: prefix=/target To: prefix=your-mono-install-prefix Since my mono-install-prefix is $HOME/mono/install, that is what I put: prefix=$HOME/mono/install I have a patch provided by vlad that allows gtk# to build on win32 again. However, Vlad and Mike Kestner are working to get this into the main build. The patch is win32-final.patch. Run ./autogen.sh To build gtk#, use the makefile.win32 at the gtk# root directoy. For example: make -f makefile.win32 Make sure you set your MONO_PATH to ../lib:../../lib, such as: export MONO_PATH=../lib:../../lib You will need to cd to glue and use the makefile.win32 there too. To build the samples, cd to the sample directory, and you use just "make". The gtk# sample programs gtk-hello-world, menu, button, and GtkTreeViewDemo work on Win32. I have only tested it on Windows XP. When building gtk# programs, you will have to include all the gtk# assemblies and make sure your MONO_PATH is set: export MONO_PATH=../lib:../../lib mcs myGtkSharpProgram.cs -r atk-sharp.dll -r pango-sharp.dll -r glib-sharp.dll -r gtk-sharp.dll -r gdk-sharp.dll -r System.Drawing.dll Not sure if System.Drawing.dll is needed or not, but I include it anyways. Remember, the gtk# on win32 is not ready for general consumption yet. Hope this helps, Daniel -----Original Message----- From: Andrew Tierney [mailto:atierney@ccipl.com.au] Sent: Monday, October 21, 2002 2:31 AM To: 'danmorg@sc.rr.com' Subject: Mono Win32 Hi, I am looking for the following Mono related items but have had no luck so far. (The win32 binary page is down.) 1) Mono Win32 (NON-CYGWIN version) + Win95 Friendly (linked with unicows.dll) 2) A build script to build this from the CVS tree ?? 3) GTK# build scripts for Win32 ? Any info much appreciated. Andrew ------=_NextPart_001_001A_01C278DB.8B4C2770 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Hi=20 Andrew,
 
I hope=20 you don't mind me forwarding this to the mono-list.
 
Here=20 are my answers to your questions:
 
For=20 (1), the link at the http://www.go-mono.com/download<= /A> works=20 for me.  However, there is only a binaries package for the Mono = 0.15=20 release.  Sergey was kind of enough to provide those = binaries.  Maybe,=20 you can ask him nicely, and he can provide a new release.  Or he = could tell=20 use how he made the package so others could make it for = you.
 
For=20 (2), use the mono-bulid-w32.sh build script.  You can find this on = the http://www.go-mon.com/download/ = page.  In mono cvs, it is found in mono/doc.  You need cygwin = from http://www.cygwin.com/ to = bulid.   You=20 may need the Microsoft .NET Framework
Redistrbutable from MSDN too = which is=20 a free download,
see http://msdn.microsoft.= com/downloads/sample.asp?url=3D/MSDN-FILES/027/001/829/msdncompositedoc.x= ml&frame=3Dtrue
 
For=20 (3), check out gtk# from cvs. 
You=20 will need to download the following packages and install them in your = mono=20 prefix that is mentioned on the web site:
http://www.gi= mp.org/~tml/gimp/win32/downloads.html
 
Here=20 are the dependency packages for GTK+ you will need from that link, and = it does=20 not matter that cygwin includes some either, you still need these native = Win32=20 packages:
 
GNU=20 libiconv
libintl-x.xx.xx-tml-xxxxxxxx.zip   = (as of=20 this writing 0.10.40-tml-20020904)
 
glib-2.x.x-xxxxxxxx.zip (currently=20 2.0.6-20020802)
glib-dev-2.x.x-xxxxxxxx.zip (currently=20 2.0.6-20020802)
 
Zlib,=20 libpng, libjpeg, libtiff, and FreeType2  (the Bin and (either = called Dev or=20 Lib) packages) from the GnuWin32 project at = Sourceforge.
 
And=20 finally, the GTK+ BIN and DEV packages:
 
gtk+-2.x.x-xxxxxxxx.zip (currently=20 2.0.6-20020921)
gtk+-dev-2.x.x-xxxxxxxx.zip (currently=20 2.0.6-20020921)
 
atk-x.x.x-xxxxxxxx.zip (currently=20 1.0.3-20020821)
pango-x.x.x-xxxxxxxx.zip (currently=20 1.0.4-20020928)
 
atk-dev-x.x.x.xxxxxxxx.zip (currently=20 1.0.3-20020821)
pango-dev-x.x.xxxxxxxx.zip (currently=20 1.0.4-20020928)
 
Once=20 all these packages have been unzipped to your mono prefix, you will need = to edit=20 every pkgconfig file that has a .pc suffix in the = mono-prefix/lib/pkgconfig=20 path.
 
For=20 instance: in atk.pc, change the "prefix" line
 
From:
prefix=3D/target
To:
prefix=3Dyour-mono-install-prefix
 
Since=20 my mono-install-prefix is $HOME/mono/install, that is what I=20 put:
prefix=3D$HOME/mono/install
 
I have=20 a patch provided by vlad that allows gtk# to build on win32 again.  = However, Vlad and Mike Kestner are working to get this into the main=20 build.  The patch is win32-final.patch. 
 
Run=20 ./autogen.sh
 
To=20 build gtk#, use the makefile.win32 at the gtk# root=20 directoy.
For = example:
make=20 -f makefile.win32
Make=20 sure you set your MONO_PATH to ../lib:../../lib, such=20 as:
export=20 MONO_PATH=3D../lib:../../lib
 
You=20 will need to cd to glue and use the makefile.win32 there=20 too.
 
To=20 build the samples, cd to the sample directory, and you use just=20 "make".
 
The=20 gtk# sample programs gtk-hello-world, menu, button, and=20 GtkTreeViewDemo work on Win32.  I have only tested it on = Windows=20 XP.
 
When=20 building gtk# programs, you will have to include all the gtk# assemblies = and=20 make sure your MONO_PATH is set:
export=20 MONO_PATH=3D../lib:../../lib
mcs=20 myGtkSharpProgram.cs -r atk-sharp.dll -r pango-sharp.dll -r = glib-sharp.dll -r=20 gtk-sharp.dll -r gdk-sharp.dll -r System.Drawing.dll
 
Not=20 sure if System.Drawing.dll is needed or not, but I include it=20 anyways.
 
Remember, the gtk# on win32 is not ready for = general=20 consumption yet.
 
Hope=20 this helps,
Daniel
 
-----Original=20 Message-----
From: Andrew Tierney=20 [mailto:atierney@ccipl.com.au]
Sent: Monday, October 21, 2002 = 2:31=20 AM
To: 'danmorg@sc.rr.com'
Subject: Mono Win32=20

Hi,

 

I am looking for the = following=20 Mono related items but have had no luck so far. (The win32 binary page = is=20 down.)

 

1)           = ;       =20 Mono Win32 (NON-CYGWIN = version) +=20 Win95 Friendly (linked with unicows.dll)

2)           = ;       =20 A build script to build = this from=20 the CVS tree = ??

3)           = ;       =20 GTK# build scripts for = Win32 ?

 

 

Any info much=20 appreciated.

 

Andrew

 

------=_NextPart_001_001A_01C278DB.8B4C2770-- ------=_NextPart_000_0019_01C278DB.8B4C2770 Content-Type: application/octet-stream; name="win32-final.patch" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="win32-final.patch" Index: makefile.win32=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A= RCS file: /cvs/public/gtk-sharp/makefile.win32,v=0A= retrieving revision 1.5=0A= diff -u -w -r1.5 makefile.win32=0A= --- makefile.win32 24 Jun 2002 23:38:50 -0000 1.5=0A= +++ makefile.win32 9 Oct 2002 05:45:30 -0000=0A= @@ -1,16 +1,16 @@=0A= -DIRS=3Dgenerator glib pango atk gdk gtk gnome sample=0A= +DIRS=3Dgenerator api glib pango atk gdk gtk sample=0A= ROOT=3D/cygdrive/$(subst \,/,$(subst :\,/,$(SYSTEMROOT)))=0A= -CSC=3D$(ROOT)/microsoft.net/framework/v1.0.3705/csc.exe=0A= +CSC=3D$(ROOT)/microsoft.net/framework/v1.0.3705/csc.exe /d:WIN32=0A= =0A= all: windows=0A= =0A= windows:=0A= for i in $(DIRS); do \=0A= - (cd $$i; CSC=3D$(CSC) make -f makefile.win32) || exit 1;\=0A= + (cd $$i; CSC=3D"$(CSC)" make -f makefile.win32) || exit 1;\=0A= done;=0A= =0A= docs:=0A= for i in $(DIRS); do \=0A= - (cd $$i; CSC=3D$(CSC) make -f makefile.win32 docs) || exit 1;\=0A= + (cd $$i; CSC=3D"$(CSC)" make -f makefile.win32 docs) || exit 1;\=0A= done;=0A= =0A= Index: api/atk-api.xml=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A= RCS file: /cvs/public/gtk-sharp/api/atk-api.xml,v=0A= retrieving revision 1.1=0A= diff -u -w -r1.1 atk-api.xml=0A= --- api/atk-api.xml 20 Aug 2002 19:56:14 -0000 1.1=0A= +++ api/atk-api.xml 9 Oct 2002 05:45:31 -0000=0A= @@ -1,6 +1,6 @@=0A= =0A= =0A= - =0A= + =0A= =0A= =0A= =0A= Index: api/gdk-api.xml=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A= RCS file: /cvs/public/gtk-sharp/api/gdk-api.xml,v=0A= retrieving revision 1.4=0A= diff -u -w -r1.4 gdk-api.xml=0A= --- api/gdk-api.xml 21 Sep 2002 14:21:15 -0000 1.4=0A= +++ api/gdk-api.xml 9 Oct 2002 05:45:33 -0000=0A= @@ -1,6 +1,6 @@=0A= =0A= =0A= - =0A= + =0A= =0A= =0A= =0A= @@ -2356,7 +2356,7 @@=0A= =0A= =0A= =0A= - =0A= + =0A= =0A= =0A= =0A= @@ -2513,7 +2513,7 @@=0A= =0A= =0A= =0A= - =0A= + =0A= =0A= =0A= =0A= @@ -2526,7 +2526,7 @@=0A= =0A= =0A= =0A= - =0A= + =0A= =0A= =0A= =0A= @@ -2616,7 +2616,7 @@=0A= =0A= =0A= =0A= - =0A= + =0A= =0A= =0A= =0A= @@ -2624,7 +2624,7 @@=0A= =0A= =0A= =0A= - =0A= + =0A= =0A= =0A= =0A= @@ -2633,7 +2633,7 @@=0A= =0A= =0A= =0A= - =0A= + =0A= =0A= =0A= =0A= @@ -2646,7 +2646,7 @@=0A= =0A= =0A= =0A= - =0A= + =0A= =0A= =0A= =0A= @@ -2662,7 +2662,7 @@=0A= =0A= =0A= =0A= - =0A= + =0A= =0A= =0A= =0A= Index: api/gtk-api.xml=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A= RCS file: /cvs/public/gtk-sharp/api/gtk-api.xml,v=0A= retrieving revision 1.9=0A= diff -u -w -r1.9 gtk-api.xml=0A= --- api/gtk-api.xml 8 Oct 2002 19:32:29 -0000 1.9=0A= +++ api/gtk-api.xml 9 Oct 2002 05:45:40 -0000=0A= @@ -1,6 +1,6 @@=0A= =0A= =0A= - =0A= + =0A= =0A= =0A= =0A= @@ -11667,7 +11667,7 @@=0A= =0A= =0A= =0A= - =0A= + =0A= =0A= =0A= =0A= Index: api/pango-api.xml=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A= RCS file: /cvs/public/gtk-sharp/api/pango-api.xml,v=0A= retrieving revision 1.2=0A= diff -u -w -r1.2 pango-api.xml=0A= --- api/pango-api.xml 1 Sep 2002 04:46:37 -0000 1.2=0A= +++ api/pango-api.xml 9 Oct 2002 05:45:40 -0000=0A= @@ -1,6 +1,6 @@=0A= =0A= =0A= - =0A= + =0A= =0A= =0A= =0A= Index: generator/Ctor.cs=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A= RCS file: /cvs/public/gtk-sharp/generator/Ctor.cs,v=0A= retrieving revision 1.9=0A= diff -u -w -r1.9 Ctor.cs=0A= --- generator/Ctor.cs 28 Aug 2002 20:58:01 -0000 1.9=0A= +++ generator/Ctor.cs 9 Oct 2002 05:45:45 -0000=0A= @@ -109,6 +109,9 @@=0A= else safety =3D ""; =20 + if (libname.StartsWith ("GtkSharp"))=0A= + sw.WriteLine("\t\t[DllImport(" + libname + ")]");=0A= + else=0A= sw.WriteLine("\t\t[DllImport(\"" + libname + "\")]"); sw.WriteLine("\t\tstatic extern " + safety + "IntPtr " + cname + = isig); sw.WriteLine(); Index: generator/Method.cs=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A= RCS file: /cvs/public/gtk-sharp/generator/Method.cs,v=0A= retrieving revision 1.25=0A= diff -u -w -r1.25 Method.cs=0A= --- generator/Method.cs 12 Sep 2002 05:21:15 -0000 1.25=0A= +++ generator/Method.cs 9 Oct 2002 05:45:45 -0000=0A= @@ -293,6 +293,9 @@=0A= =20 public void GenerateImport (StreamWriter sw) { + if (libname.StartsWith ("GtkSharp"))=0A= + sw.WriteLine("\t\t[DllImport(" + libname + ")]");=0A= + else=0A= sw.WriteLine("\t\t[DllImport(\"" + libname + "\")]"); sw.Write("\t\tstatic extern " + safety + m_ret + " " + cname + = isig); sw.WriteLine(); Index: generator/ObjectGen.cs=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A= RCS file: /cvs/public/gtk-sharp/generator/ObjectGen.cs,v=0A= retrieving revision 1.38=0A= diff -u -w -r1.38 ObjectGen.cs=0A= --- generator/ObjectGen.cs 4 Sep 2002 05:25:57 -0000 1.38=0A= +++ generator/ObjectGen.cs 9 Oct 2002 05:45:45 -0000=0A= @@ -247,7 +247,7 @@=0A= =20 sw.WriteLine ("namespace GtkSharp {"); sw.WriteLine (); - sw.WriteLine ("\tnamespace " + ns + " {"); + sw.WriteLine ("\tnamespace " + ns + "Helper {");=0A= sw.WriteLine (); sw.WriteLine ("\tpublic class ObjectManager {"); sw.WriteLine (); Index: generator/Parameters.cs=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A= RCS file: /cvs/public/gtk-sharp/generator/Parameters.cs,v=0A= retrieving revision 1.19=0A= diff -u -w -r1.19 Parameters.cs=0A= --- generator/Parameters.cs 12 Sep 2002 20:25:29 -0000 1.19=0A= +++ generator/Parameters.cs 9 Oct 2002 05:45:45 -0000=0A= @@ -152,6 +152,10 @@=0A= Console.Write("Name: " + name + " Type: " + type + " "); return false; } + if (cs_type =3D=3D "void" || m_type =3D=3D "void") {=0A= + Console.Write("Void marshal: " + name + " type: " + type + " ");=0A= + return false;=0A= + }=0A= } =09 return true; Index: generator/SignalHandler.cs=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A= RCS file: /cvs/public/gtk-sharp/generator/SignalHandler.cs,v=0A= retrieving revision 1.16=0A= diff -u -w -r1.16 SignalHandler.cs=0A= --- generator/SignalHandler.cs 20 Aug 2002 19:56:14 -0000 1.16=0A= +++ generator/SignalHandler.cs 9 Oct 2002 05:45:46 -0000=0A= @@ -15,6 +15,9 @@=0A= =09 public static String GetName(XmlElement sig, string ns, bool = generate) { + string base_ns =3D ns;=0A= + ns =3D ns + "Signals";=0A= +=0A= XmlElement ret_elem =3D sig["return-type"]; if (ret_elem =3D=3D null) { Console.Write("Missing return-type "); @@ -82,7 +85,7 @@=0A= return ns + "." + sname; =20 char sep =3D Path.DirectorySeparatorChar; - String dir =3D ".." + sep + ns.ToLower() + sep + "generated"; + String dir =3D ".." + sep + base_ns.ToLower() + sep + "generated";=0A= =20 if (!Directory.Exists(dir)) { Directory.CreateDirectory(dir); @@ -165,7 +168,7 @@=0A= sw.WriteLine("\t\t}"); sw.WriteLine(); } - sw.Write("\t\t[DllImport(\"gobject-2.0\")]"); + sw.Write("\t\t[DllImport(GtkSharp.LibraryNames.GOBJECT_LIB)]");=0A= sw.Write("\t\tstatic extern void g_signal_connect_data("); sw.Write("IntPtr obj, String name, " + dname + " cb, int key, IntPtr = p,"); sw.WriteLine(" int flags);"); Index: generator/makefile.win32=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A= RCS file: /cvs/public/gtk-sharp/generator/makefile.win32,v=0A= retrieving revision 1.2=0A= diff -u -w -r1.2 makefile.win32=0A= --- generator/makefile.win32 22 Jun 2002 22:12:50 -0000 1.2=0A= +++ generator/makefile.win32 9 Oct 2002 05:45:46 -0000=0A= @@ -2,7 +2,6 @@=0A= =0A= windows: *.cs=0A= $(CSC) /unsafe /out:codegen.exe *.cs=0A= - ./codegen gtkapi.xml=0A= =0A= docs: windows=0A= =0A= Index: glade/XML.custom=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A= RCS file: /cvs/public/gtk-sharp/glade/XML.custom,v=0A= retrieving revision 1.3=0A= diff -u -w -r1.3 XML.custom=0A= --- glade/XML.custom 15 Sep 2002 19:40:45 -0000 1.3=0A= +++ glade/XML.custom 9 Oct 2002 05:45:46 -0000=0A= @@ -7,7 +7,7 @@=0A= // This code is inserted after the automatically generated code.=0A= =0A= =0A= - [DllImport("gtksharpglue")]=0A= + [DllImport(GtkSharp.LibraryNames.GTKSHARPGLUE_LIB)]=0A= static extern string gtksharp_glade_xml_get_filename (IntPtr raw);=0A= =0A= /// Filename Property=0A= Index: glib/GException.cs=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A= RCS file: /cvs/public/gtk-sharp/glib/GException.cs,v=0A= retrieving revision 1.3=0A= diff -u -w -r1.3 GException.cs=0A= --- glib/GException.cs 6 Oct 2002 02:12:04 -0000 1.3=0A= +++ glib/GException.cs 9 Oct 2002 05:45:46 -0000=0A= @@ -18,7 +18,7 @@=0A= this.errptr =3D errptr;=0A= }=0A= =0A= - [DllImport("gtksharpglue")]=0A= + [DllImport(GtkSharp.LibraryNames.GTKSHARPGLUE_LIB)]=0A= static extern string gtksharp_error_get_message (IntPtr errptr);=0A= public override string Message {=0A= get {=0A= @@ -26,7 +26,7 @@=0A= }=0A= }=0A= =0A= - [DllImport("glib-2.0")]=0A= + [DllImport(GtkSharp.LibraryNames.GLIB_LIB)]=0A= static extern void g_clear_error (ref IntPtr errptr);=0A= ~GException ()=0A= {=0A= Index: glib/Idle.cs=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A= RCS file: /cvs/public/gtk-sharp/glib/Idle.cs,v=0A= retrieving revision 1.1=0A= diff -u -w -r1.1 Idle.cs=0A= --- glib/Idle.cs 31 Aug 2002 20:37:51 -0000 1.1=0A= +++ glib/Idle.cs 9 Oct 2002 05:45:46 -0000=0A= @@ -33,7 +33,7 @@=0A= =0A= public class Idle {=0A= =0A= - [DllImport("glib-2.0")]=0A= + [DllImport(GtkSharp.LibraryNames.GLIB_LIB)]=0A= static extern uint g_idle_add (IdleHandler d, IntPtr data);=0A= =0A= public static uint Add (IdleHandler hndlr)=0A= Index: glib/List.cs=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A= RCS file: /cvs/public/gtk-sharp/glib/List.cs,v=0A= retrieving revision 1.1=0A= diff -u -w -r1.1 List.cs=0A= --- glib/List.cs 1 Sep 2002 04:46:38 -0000 1.1=0A= +++ glib/List.cs 9 Oct 2002 05:45:46 -0000=0A= @@ -19,7 +19,7 @@=0A= =0A= public class List : ListBase {=0A= =0A= - [DllImport("glib-2.0")]=0A= + [DllImport(GtkSharp.LibraryNames.GLIB_LIB)]=0A= static extern IntPtr g_list_copy (IntPtr l);=0A= =0A= public override object Clone ()=0A= @@ -27,7 +27,7 @@=0A= return new List (g_list_copy (Handle));=0A= }=0A= =0A= - [DllImport("gtksharpglue")]=0A= + [DllImport(GtkSharp.LibraryNames.GTKSHARPGLUE_LIB)]=0A= static extern IntPtr gtksharp_list_get_data (IntPtr l);=0A= =0A= internal override IntPtr GetData (IntPtr current)=0A= @@ -35,7 +35,7 @@=0A= return gtksharp_list_get_data (current);=0A= }=0A= =0A= - [DllImport("gtksharpglue")]=0A= + [DllImport(GtkSharp.LibraryNames.GTKSHARPGLUE_LIB)]=0A= static extern IntPtr gtksharp_list_get_next (IntPtr l);=0A= =0A= internal override IntPtr Next (IntPtr current)=0A= @@ -43,7 +43,7 @@=0A= return gtksharp_list_get_next (current);=0A= }=0A= =0A= - [DllImport("glib-2.0")]=0A= + [DllImport(GtkSharp.LibraryNames.GLIB_LIB)]=0A= static extern int g_list_length (IntPtr l);=0A= =0A= internal override int Length (IntPtr list)=0A= @@ -51,7 +51,7 @@=0A= return g_list_length (list);=0A= }=0A= =0A= - [DllImport("glib-2.0")]=0A= + [DllImport(GtkSharp.LibraryNames.GLIB_LIB)]=0A= static extern void g_list_free(IntPtr l);=0A= =0A= internal override void Free (IntPtr list)=0A= Index: glib/Object.cs=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A= RCS file: /cvs/public/gtk-sharp/glib/Object.cs,v=0A= retrieving revision 1.29=0A= diff -u -w -r1.29 Object.cs=0A= --- glib/Object.cs 12 Sep 2002 19:21:46 -0000 1.29=0A= +++ glib/Object.cs 9 Oct 2002 05:45:46 -0000=0A= @@ -53,7 +53,7 @@=0A= disposed =3D true;=0A= }=0A= =0A= - [DllImport("gobject-2.0")]=0A= + [DllImport(GtkSharp.LibraryNames.GOBJECT_LIB)]=0A= static extern void g_object_unref (IntPtr raw);=0A= =0A= protected virtual void DisposeNative ()=0A= @@ -66,7 +66,7 @@=0A= _obj =3D IntPtr.Zero;=0A= }=0A= =0A= - [DllImport("gobject-2.0")]=0A= + [DllImport(GtkSharp.LibraryNames.GOBJECT_LIB)]=0A= static extern void g_object_ref (IntPtr raw);=0A= =0A= /// =0A= @@ -261,7 +261,7 @@=0A= Data [key] =3D val;=0A= }=0A= =0A= - [DllImport("gobject-2.0")]=0A= + [DllImport(GtkSharp.LibraryNames.GOBJECT_LIB)]=0A= static extern void g_object_get_property (=0A= IntPtr obj, string name, IntPtr val);=0A= =0A= @@ -278,7 +278,7 @@=0A= g_object_get_property (Raw, name, val.Handle);=0A= }=0A= =0A= - [DllImport("gobject-2.0")]=0A= + [DllImport(GtkSharp.LibraryNames.GOBJECT_LIB)]=0A= static extern void g_object_set_property (=0A= IntPtr obj, string name, IntPtr val);=0A= =0A= @@ -295,7 +295,7 @@=0A= g_object_set_property (Raw, name, val.Handle);=0A= }=0A= =0A= - [DllImport("gtksharpglue")]=0A= + [DllImport(GtkSharp.LibraryNames.GTKSHARPGLUE_LIB)]=0A= static extern bool gtksharp_is_object (IntPtr obj);=0A= =0A= internal static bool IsObject (IntPtr obj)=0A= Index: glib/ObjectManager.cs=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A= RCS file: /cvs/public/gtk-sharp/glib/ObjectManager.cs,v=0A= retrieving revision 1.6=0A= diff -u -w -r1.6 ObjectManager.cs=0A= --- glib/ObjectManager.cs 5 Oct 2002 05:11:59 -0000 1.6=0A= +++ glib/ObjectManager.cs 9 Oct 2002 05:45:46 -0000=0A= @@ -12,7 +12,7 @@=0A= =0A= private static Hashtable types =3D new Hashtable ();=0A= =0A= - [DllImport("gtksharpglue")]=0A= + [DllImport(GtkSharp.LibraryNames.GTKSHARPGLUE_LIB)]=0A= static extern string gtksharp_get_type_name (IntPtr raw);=0A= =0A= public static GLib.Object CreateObject (IntPtr raw)=0A= @@ -81,13 +81,13 @@=0A= return expected_string;=0A= }=0A= =0A= - [DllImport("gtksharpglue")]=0A= + [DllImport(GtkSharp.LibraryNames.GTKSHARPGLUE_LIB)]=0A= static extern int gtksharp_get_type_id (IntPtr raw);=0A= =0A= - [DllImport("gtksharpglue")]=0A= + [DllImport(GtkSharp.LibraryNames.GTKSHARPGLUE_LIB)]=0A= static extern int gtksharp_get_parent_type (int typ);=0A= =0A= - [DllImport("gtksharpglue")]=0A= + [DllImport(GtkSharp.LibraryNames.GTKSHARPGLUE_LIB)]=0A= static extern string gtksharp_get_type_name_for_id (int typ);=0A= =0A= static Type GetValidParentType (IntPtr raw)=0A= Index: glib/SList.cs=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A= RCS file: /cvs/public/gtk-sharp/glib/SList.cs,v=0A= retrieving revision 1.9=0A= diff -u -w -r1.9 SList.cs=0A= --- glib/SList.cs 1 Sep 2002 04:46:38 -0000 1.9=0A= +++ glib/SList.cs 9 Oct 2002 05:45:46 -0000=0A= @@ -19,7 +19,7 @@=0A= =0A= public class SList : ListBase {=0A= =0A= - [DllImport("glib-2.0")]=0A= + [DllImport(GtkSharp.LibraryNames.GLIB_LIB)]=0A= static extern IntPtr g_slist_copy (IntPtr l);=0A= =0A= public override object Clone ()=0A= @@ -27,7 +27,7 @@=0A= return new SList (g_slist_copy (Handle));=0A= }=0A= =0A= - [DllImport("gtksharpglue")]=0A= + [DllImport(GtkSharp.LibraryNames.GTKSHARPGLUE_LIB)]=0A= static extern IntPtr gtksharp_slist_get_data (IntPtr l);=0A= =0A= internal override IntPtr GetData (IntPtr current)=0A= @@ -35,7 +35,7 @@=0A= return gtksharp_slist_get_data (current);=0A= }=0A= =0A= - [DllImport("gtksharpglue")]=0A= + [DllImport(GtkSharp.LibraryNames.GTKSHARPGLUE_LIB)]=0A= static extern IntPtr gtksharp_slist_get_next (IntPtr l);=0A= =0A= internal override IntPtr Next (IntPtr current)=0A= @@ -43,7 +43,7 @@=0A= return gtksharp_slist_get_next (current);=0A= }=0A= =0A= - [DllImport("glib-2.0")]=0A= + [DllImport(GtkSharp.LibraryNames.GLIB_LIB)]=0A= static extern int g_slist_length (IntPtr l);=0A= =0A= internal override int Length (IntPtr list)=0A= @@ -51,7 +51,7 @@=0A= return g_slist_length (list);=0A= }=0A= =0A= - [DllImport("glib-2.0")]=0A= + [DllImport(GtkSharp.LibraryNames.GLIB_LIB)]=0A= static extern void g_slist_free(IntPtr l);=0A= =0A= internal override void Free (IntPtr list)=0A= Index: glib/Timeout.cs=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A= RCS file: /cvs/public/gtk-sharp/glib/Timeout.cs,v=0A= retrieving revision 1.1=0A= diff -u -w -r1.1 Timeout.cs=0A= --- glib/Timeout.cs 6 Jun 2002 23:17:10 -0000 1.1=0A= +++ glib/Timeout.cs 9 Oct 2002 05:45:46 -0000=0A= @@ -32,7 +32,7 @@=0A= =0A= public class Timeout {=0A= =0A= - [DllImport("glib-2.0")]=0A= + [DllImport(GtkSharp.LibraryNames.GLIB_LIB)]=0A= static extern uint g_timeout_add (uint interval, TimeoutHandler d, = IntPtr data);=0A= =0A= public static uint Add (uint interval, TimeoutHandler hndlr)=0A= Index: glib/Value.cs=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A= RCS file: /cvs/public/gtk-sharp/glib/Value.cs,v=0A= retrieving revision 1.18=0A= diff -u -w -r1.18 Value.cs=0A= --- glib/Value.cs 5 Oct 2002 05:11:59 -0000 1.18=0A= +++ glib/Value.cs 9 Oct 2002 05:45:47 -0000=0A= @@ -26,7 +26,7 @@=0A= // Destructor is required since we are allocating unmanaged=0A= // heap resources.=0A= =0A= - [DllImport("glib-2.0")]=0A= + [DllImport(GtkSharp.LibraryNames.GLIB_LIB)]=0A= static extern void g_free (IntPtr mem);=0A= =0A= ~Value ()=0A= @@ -37,10 +37,10 @@=0A= =0A= // import the glue function to allocate values on heap=0A= =0A= - [DllImport("gtksharpglue")]=0A= + [DllImport(GtkSharp.LibraryNames.GTKSHARPGLUE_LIB)]=0A= static extern IntPtr gtksharp_value_create(TypeFundamentals type);=0A= =0A= - [DllImport("gtksharpglue")]=0A= + [DllImport(GtkSharp.LibraryNames.GTKSHARPGLUE_LIB)]=0A= static extern IntPtr gtksharp_value_create_from_property(IntPtr obj, = string name);=0A= =0A= // Constructor to wrap a raw GValue ref. We need the dummy param=0A= @@ -78,7 +78,7 @@=0A= _val =3D gtksharp_value_create_from_property (obj, prop_name);=0A= }=0A= =0A= - [DllImport("gobject-2.0")]=0A= + [DllImport(GtkSharp.LibraryNames.GOBJECT_LIB)]=0A= static extern void g_value_set_boolean (IntPtr val,=0A= bool data);=0A= =0A= @@ -96,7 +96,7 @@=0A= g_value_set_boolean (_val, val);=0A= }=0A= =0A= - [DllImport("gobject-2.0")]=0A= + [DllImport(GtkSharp.LibraryNames.GOBJECT_LIB)]=0A= static extern void g_value_set_boxed (IntPtr val, IntPtr data);=0A= =0A= /// =0A= @@ -125,7 +125,7 @@=0A= g_value_set_boxed (_val, val.Handle);=0A= }=0A= =0A= - [DllImport("gobject-2.0")]=0A= + [DllImport(GtkSharp.LibraryNames.GOBJECT_LIB)]=0A= static extern void g_value_set_double (IntPtr val, double data);=0A= =0A= /// =0A= @@ -142,7 +142,7 @@=0A= g_value_set_double (_val, val);=0A= }=0A= =0A= - [DllImport("gobject-2.0")]=0A= + [DllImport(GtkSharp.LibraryNames.GOBJECT_LIB)]=0A= static extern void g_value_set_float (IntPtr val, float data);=0A= =0A= /// =0A= @@ -159,7 +159,7 @@=0A= g_value_set_float (_val, val);=0A= }=0A= =0A= - [DllImport("gobject-2.0")]=0A= + [DllImport(GtkSharp.LibraryNames.GOBJECT_LIB)]=0A= static extern void g_value_set_int (IntPtr val, int data);=0A= =0A= /// =0A= @@ -176,7 +176,7 @@=0A= g_value_set_int (_val, val);=0A= }=0A= =0A= - [DllImport("gobject-2.0")]=0A= + [DllImport(GtkSharp.LibraryNames.GOBJECT_LIB)]=0A= static extern void g_value_set_object (IntPtr val, IntPtr data);=0A= =0A= /// =0A= @@ -193,7 +193,7 @@=0A= g_value_set_object (_val, val.Handle);=0A= }=0A= =0A= - [DllImport("gobject-2.0")]=0A= + [DllImport(GtkSharp.LibraryNames.GOBJECT_LIB)]=0A= static extern void g_value_set_pointer (IntPtr val, IntPtr data);=0A= =0A= /// =0A= @@ -210,7 +210,7 @@=0A= g_value_set_pointer (_val, val); =0A= }=0A= =0A= - [DllImport("gobject-2.0")]=0A= + [DllImport(GtkSharp.LibraryNames.GOBJECT_LIB)]=0A= static extern void g_value_set_string (IntPtr val, string data);=0A= =0A= /// =0A= @@ -227,7 +227,7 @@=0A= g_value_set_string (_val, val); =0A= }=0A= =0A= - [DllImport("gobject-2.0")]=0A= + [DllImport(GtkSharp.LibraryNames.GOBJECT_LIB)]=0A= static extern void g_value_set_uint (IntPtr val, uint data);=0A= =0A= /// =0A= @@ -244,9 +244,9 @@=0A= g_value_set_uint (_val, val); =0A= }=0A= =0A= - [DllImport("gobject-2.0")]=0A= + [DllImport(GtkSharp.LibraryNames.GOBJECT_LIB)]=0A= static extern void g_value_set_enum (IntPtr val, int data);=0A= - [DllImport("gobject-2.0")]=0A= + [DllImport(GtkSharp.LibraryNames.GOBJECT_LIB)]=0A= static extern void g_value_set_flags (IntPtr val, uint data);=0A= =0A= /// =0A= @@ -266,7 +266,7 @@=0A= g_value_set_enum (_val, (int) wrap); =0A= }=0A= =0A= - [DllImport("gobject-2.0")]=0A= + [DllImport(GtkSharp.LibraryNames.GOBJECT_LIB)]=0A= static extern bool g_value_get_boolean (IntPtr val);=0A= =0A= /// =0A= @@ -286,7 +286,7 @@=0A= return g_value_get_boolean (val._val);=0A= }=0A= =0A= - [DllImport("gobject-2.0")]=0A= + [DllImport(GtkSharp.LibraryNames.GOBJECT_LIB)]=0A= static extern IntPtr g_value_get_boxed (IntPtr val);=0A= =0A= public static explicit operator GLib.Opaque (Value val)=0A= @@ -309,7 +309,7 @@=0A= return new GLib.Boxed (g_value_get_boxed (val._val));=0A= }=0A= =0A= - [DllImport("gobject-2.0")]=0A= + [DllImport(GtkSharp.LibraryNames.GOBJECT_LIB)]=0A= static extern double g_value_get_double (IntPtr val);=0A= =0A= /// =0A= @@ -329,7 +329,7 @@=0A= return g_value_get_double (val._val);=0A= }=0A= =0A= - [DllImport("gobject-2.0")]=0A= + [DllImport(GtkSharp.LibraryNames.GOBJECT_LIB)]=0A= static extern float g_value_get_float (IntPtr val);=0A= =0A= /// =0A= @@ -349,7 +349,7 @@=0A= return g_value_get_float (val._val);=0A= }=0A= =0A= - [DllImport("gobject-2.0")]=0A= + [DllImport(GtkSharp.LibraryNames.GOBJECT_LIB)]=0A= static extern int g_value_get_int (IntPtr val);=0A= =0A= /// =0A= @@ -369,7 +369,7 @@=0A= return g_value_get_int (val._val);=0A= }=0A= =0A= - [DllImport("gobject-2.0")]=0A= + [DllImport(GtkSharp.LibraryNames.GOBJECT_LIB)]=0A= static extern IntPtr g_value_get_object (IntPtr val);=0A= =0A= /// =0A= @@ -407,7 +407,7 @@=0A= return new UnwrappedObject(g_value_get_object (val._val));=0A= }=0A= =0A= - [DllImport("gobject-2.0")]=0A= + [DllImport(GtkSharp.LibraryNames.GOBJECT_LIB)]=0A= static extern IntPtr g_value_get_pointer (IntPtr val);=0A= =0A= /// =0A= @@ -427,7 +427,7 @@=0A= return g_value_get_pointer (val._val);=0A= }=0A= =0A= - [DllImport("gobject-2.0")]=0A= + [DllImport(GtkSharp.LibraryNames.GOBJECT_LIB)]=0A= static extern string g_value_get_string (IntPtr val);=0A= =0A= /// =0A= @@ -447,7 +447,7 @@=0A= return g_value_get_string (val._val);=0A= }=0A= =0A= - [DllImport("gobject-2.0")]=0A= + [DllImport(GtkSharp.LibraryNames.GOBJECT_LIB)]=0A= static extern uint g_value_get_uint (IntPtr val);=0A= =0A= /// =0A= @@ -467,9 +467,14 @@=0A= return g_value_get_uint (val._val);=0A= }=0A= =0A= - [DllImport("gobject-2.0")]=0A= + public static explicit operator ushort (Value val)=0A= + {=0A= + return (ushort) (uint) val;=0A= + }=0A= +=0A= + [DllImport(GtkSharp.LibraryNames.GOBJECT_LIB)]=0A= static extern int g_value_get_enum (IntPtr val);=0A= - [DllImport("gobject-2.0")]=0A= + [DllImport(GtkSharp.LibraryNames.GOBJECT_LIB)]=0A= static extern uint g_value_get_flags (IntPtr val);=0A= =0A= /// =0A= Index: glue/canvas-proxy-marshal.c=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A= RCS file: /cvs/public/gtk-sharp/glue/canvas-proxy-marshal.c,v=0A= retrieving revision 1.3=0A= diff -u -w -r1.3 canvas-proxy-marshal.c=0A= --- glue/canvas-proxy-marshal.c 30 Sep 2002 02:21:06 -0000 1.3=0A= +++ glue/canvas-proxy-marshal.c 9 Oct 2002 05:45:47 -0000=0A= @@ -1,7 +1,6 @@=0A= =0A= #include =0A= =0A= -=0A= #ifdef G_ENABLE_DEBUG=0A= #define g_marshal_value_peek_boolean(v) g_value_get_boolean (v)=0A= #define g_marshal_value_peek_char(v) g_value_get_char (v)=0A= Index: gnome/CanvasItem.custom=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A= RCS file: /cvs/public/gtk-sharp/gnome/CanvasItem.custom,v=0A= retrieving revision 1.2=0A= diff -u -w -r1.2 CanvasItem.custom=0A= --- gnome/CanvasItem.custom 6 Aug 2002 15:52:32 -0000 1.2=0A= +++ gnome/CanvasItem.custom 9 Oct 2002 05:45:47 -0000=0A= @@ -17,7 +17,7 @@=0A= Raw =3D gnome_canvas_item_new (group.Handle, type, IntPtr.Zero);=0A= }=0A= =0A= -[DllImport("gtksharpglue")]=0A= +[DllImport(GtkSharp.LibraryNames.GTKSHARPGLUE_LIB)]=0A= static extern IntPtr gtksharp_gnome_canvas_item_get_canvas (IntPtr i);=0A= public Canvas Canvas {=0A= get { return new Gnome.Canvas (gtksharp_gnome_canvas_item_get_canvas = (this.Handle)); }=0A= Index: gnome/CanvasPoints.custom=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A= RCS file: /cvs/public/gtk-sharp/gnome/CanvasPoints.custom,v=0A= retrieving revision 1.1=0A= diff -u -w -r1.1 CanvasPoints.custom=0A= --- gnome/CanvasPoints.custom 12 Aug 2002 19:14:43 -0000 1.1=0A= +++ gnome/CanvasPoints.custom 9 Oct 2002 05:45:47 -0000=0A= @@ -8,7 +8,7 @@=0A= // This code is inserted after the automatically generated code.=0A= //=0A= =0A= -[DllImport("gtksharpglue")]=0A= +[DllImport(GtkSharp.LibraryNames.GTKSHARPGLUE_LIB)]=0A= static extern System.IntPtr=0A= gtksharp_gnome_canvas_points_new_from_array (uint num_points, double[] = coords);=0A= =0A= Index: gnome/Program.custom=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A= RCS file: /cvs/public/gtk-sharp/gnome/Program.custom,v=0A= retrieving revision 1.4=0A= diff -u -w -r1.4 Program.custom=0A= --- gnome/Program.custom 30 Jul 2002 23:02:11 -0000 1.4=0A= +++ gnome/Program.custom 9 Oct 2002 05:45:47 -0000=0A= @@ -17,7 +17,7 @@=0A= public IntPtr value;=0A= }=0A= =0A= -[DllImport("gtksharpglue")]=0A= +[DllImport(GtkSharp.LibraryNames.GTKSHARPGLUE_LIB)]=0A= static extern System.IntPtr=0A= gtksharp_gnome_program_init (string app_id, string app_version, ref = ModuleInfo module, int argc, string[] argv, int nargs, PropertyArg[] = args);=0A= =0A= Index: gtk/Adjustment.custom=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A= RCS file: /cvs/public/gtk-sharp/gtk/Adjustment.custom,v=0A= retrieving revision 1.1=0A= diff -u -w -r1.1 Adjustment.custom=0A= --- gtk/Adjustment.custom 11 Aug 2002 22:48:00 -0000 1.1=0A= +++ gtk/Adjustment.custom 9 Oct 2002 05:45:47 -0000=0A= @@ -4,7 +4,7 @@=0A= // This code is inserted after the automatically generated code.=0A= //=0A= =0A= -[DllImport("gtksharpglue")]=0A= +[DllImport(GtkSharp.LibraryNames.GTKSHARPGLUE_LIB)]=0A= static extern void gtksharp_gtk_adjustment_set_bounds (IntPtr i, double = lower, double upper, double step_increment, double page_increment, = double page_size);=0A= =0A= /// Sets the Adjustment boundaries=0A= Index: gtk/Application.cs=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A= RCS file: /cvs/public/gtk-sharp/gtk/Application.cs,v=0A= retrieving revision 1.7=0A= diff -u -w -r1.7 Application.cs=0A= --- gtk/Application.cs 31 Aug 2002 20:37:52 -0000 1.7=0A= +++ gtk/Application.cs 9 Oct 2002 05:45:47 -0000=0A= @@ -23,7 +23,7 @@=0A= =0A= public class Application {=0A= =0A= - [DllImport("gtk-x11-2.0")]=0A= + [DllImport(GtkSharp.LibraryNames.GTK_LIB)]=0A= static extern void gtk_init (int argc, IntPtr argv);=0A= =0A= public static void Init ()=0A= @@ -31,7 +31,7 @@=0A= gtk_init (0, new IntPtr(0));=0A= }=0A= =0A= - [DllImport("gtk-x11-2.0")]=0A= + [DllImport(GtkSharp.LibraryNames.GTK_LIB)]=0A= static extern void gtk_init (ref int argc, ref String[] argv);=0A= =0A= /// =0A= @@ -48,7 +48,7 @@=0A= gtk_init (ref argc, ref args);=0A= }=0A= =0A= - [DllImport("gtk-x11-2.0")]=0A= + [DllImport(GtkSharp.LibraryNames.GTK_LIB)]=0A= static extern void gtk_main ();=0A= =0A= /// =0A= @@ -64,7 +64,7 @@=0A= gtk_main ();=0A= }=0A= =0A= - [DllImport("gtk-x11-2.0")]=0A= + [DllImport(GtkSharp.LibraryNames.GTK_LIB)]=0A= static extern bool gtk_events_pending ();=0A= =0A= /// =0A= @@ -80,7 +80,7 @@=0A= return gtk_events_pending ();=0A= }=0A= =0A= - [DllImport("gtk-x11-2.0")]=0A= + [DllImport(GtkSharp.LibraryNames.GTK_LIB)]=0A= static extern void gtk_main_iteration ();=0A= =0A= /// =0A= @@ -96,7 +96,7 @@=0A= gtk_main_iteration ();=0A= }=0A= =0A= - [DllImport("gtk-x11-2.0")]=0A= + [DllImport(GtkSharp.LibraryNames.GTK_LIB)]=0A= static extern void gtk_main_quit ();=0A= =0A= /// =0A= Index: gtk/ColorSelectionDialog.custom=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A= RCS file: /cvs/public/gtk-sharp/gtk/ColorSelectionDialog.custom,v=0A= retrieving revision 1.2=0A= diff -u -w -r1.2 ColorSelectionDialog.custom=0A= --- gtk/ColorSelectionDialog.custom 13 Aug 2002 14:01:14 -0000 1.2=0A= +++ gtk/ColorSelectionDialog.custom 9 Oct 2002 05:45:47 -0000=0A= @@ -20,25 +20,25 @@=0A= }=0A= }=0A= =0A= -[DllImport("gtksharpglue")]=0A= +[DllImport(GtkSharp.LibraryNames.GTKSHARPGLUE_LIB)]=0A= static extern IntPtr gtksharp_color_selection_dialog_get_colorsel = (IntPtr i);=0A= public Gtk.ColorSelection ColorSelection {=0A= get { return new Gtk.ColorSelection = (gtksharp_color_selection_dialog_get_colorsel (this.Handle)); }=0A= }=0A= =0A= -[DllImport("gtksharpglue")]=0A= +[DllImport(GtkSharp.LibraryNames.GTKSHARPGLUE_LIB)]=0A= static extern IntPtr gtksharp_color_selection_dialog_get_ok_button = (IntPtr i);=0A= public Gtk.Button OkButton {=0A= get { return new Button (this, = gtksharp_color_selection_dialog_get_ok_button (this.Handle)); }=0A= }=0A= =0A= -[DllImport("gtksharpglue")]=0A= +[DllImport(GtkSharp.LibraryNames.GTKSHARPGLUE_LIB)]=0A= static extern IntPtr gtksharp_color_selection_dialog_get_cancel_button = (IntPtr i);=0A= public Gtk.Button CancelButton {=0A= get { return new Button (this, = gtksharp_color_selection_dialog_get_cancel_button (this.Handle)); }=0A= }=0A= =0A= -[DllImport("gtksharpglue")]=0A= +[DllImport(GtkSharp.LibraryNames.GTKSHARPGLUE_LIB)]=0A= static extern IntPtr gtksharp_color_selection_dialog_get_help_button = (IntPtr i);=0A= public Gtk.Button HelpButton {=0A= get { return new Button (this, = gtksharp_color_selection_dialog_get_help_button (this.Handle)); }=0A= Index: gtk/Dialog.custom=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A= RCS file: /cvs/public/gtk-sharp/gtk/Dialog.custom,v=0A= retrieving revision 1.1=0A= diff -u -w -r1.1 Dialog.custom=0A= --- gtk/Dialog.custom 11 Jul 2002 13:18:36 -0000 1.1=0A= +++ gtk/Dialog.custom 9 Oct 2002 05:45:47 -0000=0A= @@ -8,13 +8,13 @@=0A= // This code is inserted after the automatically generated code.=0A= //=0A= =0A= -[DllImport("gtksharpglue")]=0A= +[DllImport(GtkSharp.LibraryNames.GTKSHARPGLUE_LIB)]=0A= static extern IntPtr gtksharp_dialog_get_vbox (IntPtr i);=0A= public Gtk.VBox VBox {=0A= get { return new Gtk.VBox (gtksharp_dialog_get_vbox (this.Handle)); }=0A= }=0A= =0A= -[DllImport("gtksharpglue")]=0A= +[DllImport(GtkSharp.LibraryNames.GTKSHARPGLUE_LIB)]=0A= static extern IntPtr gtksharp_dialog_get_action_area (IntPtr i);=0A= public Gtk.VBox ActionArea {=0A= get { return new Gtk.VBox (gtksharp_dialog_get_action_area = (this.Handle)); }=0A= Index: gtk/FileSelection.custom=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A= RCS file: /cvs/public/gtk-sharp/gtk/FileSelection.custom,v=0A= retrieving revision 1.5=0A= diff -u -w -r1.5 FileSelection.custom=0A= --- gtk/FileSelection.custom 4 Oct 2002 18:52:03 -0000 1.5=0A= +++ gtk/FileSelection.custom 9 Oct 2002 05:45:47 -0000=0A= @@ -21,73 +21,73 @@=0A= }=0A= }=0A= =0A= -[DllImport("gtksharpglue")]=0A= +[DllImport(GtkSharp.LibraryNames.GTKSHARPGLUE_LIB)]=0A= static extern IntPtr gtksharp_file_selection_get_dir_list (IntPtr i);=0A= public Gtk.TreeView DirList {=0A= get { return new Gtk.TreeView (gtksharp_file_selection_get_dir_list = (this.Handle)); }=0A= }=0A= =0A= -[DllImport("gtksharpglue")]=0A= +[DllImport(GtkSharp.LibraryNames.GTKSHARPGLUE_LIB)]=0A= static extern IntPtr gtksharp_file_selection_get_file_list (IntPtr i);=0A= public Gtk.TreeView FileList {=0A= get { return new Gtk.TreeView (gtksharp_file_selection_get_file_list = (this.Handle)); }=0A= }=0A= =0A= -[DllImport("gtksharpglue")]=0A= +[DllImport(GtkSharp.LibraryNames.GTKSHARPGLUE_LIB)]=0A= static extern IntPtr gtksharp_file_selection_get_selection_entry = (IntPtr i);=0A= public Gtk.Entry SelectionEntry {=0A= get { return new Gtk.Entry = (gtksharp_file_selection_get_selection_entry (this.Handle)); }=0A= }=0A= =0A= -[DllImport("gtksharpglue")]=0A= +[DllImport(GtkSharp.LibraryNames.GTKSHARPGLUE_LIB)]=0A= static extern IntPtr gtksharp_file_selection_get_selection_text (IntPtr = i);=0A= public Gtk.Label SelectionText {=0A= get { return new Gtk.Label (gtksharp_file_selection_get_selection_text = (this.Handle)); }=0A= }=0A= =0A= -[DllImport("gtksharpglue")]=0A= +[DllImport(GtkSharp.LibraryNames.GTKSHARPGLUE_LIB)]=0A= static extern IntPtr gtksharp_file_selection_get_ok_button (IntPtr i);=0A= public Gtk.Button OkButton {=0A= get { return new Button (this, gtksharp_file_selection_get_ok_button = (this.Handle)); }=0A= }=0A= =0A= -[DllImport("gtksharpglue")]=0A= +[DllImport(GtkSharp.LibraryNames.GTKSHARPGLUE_LIB)]=0A= static extern IntPtr gtksharp_file_selection_get_cancel_button (IntPtr = i);=0A= public Gtk.Button CancelButton {=0A= get { return new Button (this, = gtksharp_file_selection_get_cancel_button (this.Handle)); }=0A= }=0A= =0A= -[DllImport("gtksharpglue")]=0A= +[DllImport(GtkSharp.LibraryNames.GTKSHARPGLUE_LIB)]=0A= static extern IntPtr gtksharp_file_selection_get_help_button (IntPtr i);=0A= public Gtk.Button HelpButton {=0A= get { return new Button (this, gtksharp_file_selection_get_help_button = (this.Handle)); }=0A= }=0A= =0A= -[DllImport("gtksharpglue")]=0A= +[DllImport(GtkSharp.LibraryNames.GTKSHARPGLUE_LIB)]=0A= static extern IntPtr gtksharp_file_selection_get_history_pulldown = (IntPtr i);=0A= public Gtk.OptionMenu HistoryPulldown {=0A= get { return new Gtk.OptionMenu = (gtksharp_file_selection_get_history_pulldown (this.Handle)); }=0A= }=0A= =0A= -[DllImport("gtksharpglue")]=0A= +[DllImport(GtkSharp.LibraryNames.GTKSHARPGLUE_LIB)]=0A= static extern IntPtr gtksharp_file_selection_get_history_menu (IntPtr = i);=0A= public Gtk.Menu HistoryMenu {=0A= get { return new Gtk.Menu (gtksharp_file_selection_get_history_menu = (this.Handle)); }=0A= }=0A= =0A= -[DllImport("gtksharpglue")]=0A= +[DllImport(GtkSharp.LibraryNames.GTKSHARPGLUE_LIB)]=0A= static extern IntPtr gtksharp_file_selection_get_fileop_dialog (IntPtr = i);=0A= public Gtk.MessageDialog FileopDialog {=0A= get { return new Gtk.MessageDialog = (gtksharp_file_selection_get_fileop_dialog (this.Handle)); }=0A= }=0A= =0A= -[DllImport("gtksharpglue")]=0A= +[DllImport(GtkSharp.LibraryNames.GTKSHARPGLUE_LIB)]=0A= static extern IntPtr gtksharp_file_selection_get_fileop_entry (IntPtr = i);=0A= public Gtk.Entry FileopEntry {=0A= get { return new Gtk.Entry (gtksharp_file_selection_get_fileop_entry = (this.Handle)); }=0A= }=0A= =0A= -[DllImport("gtksharpglue", CallingConvention=3DCallingConvention.Cdecl)]=0A= +[DllImport(GtkSharp.LibraryNames.GTKSHARPGLUE_LIB, = CallingConvention=3DCallingConvention.Cdecl)]=0A= static extern string gtksharp_file_selection_get_fileop_file (IntPtr i);=0A= public string FileopFile {=0A= get {=0A= @@ -95,31 +95,31 @@=0A= }=0A= }=0A= =0A= -[DllImport("gtksharpglue")]=0A= +[DllImport(GtkSharp.LibraryNames.GTKSHARPGLUE_LIB)]=0A= static extern IntPtr gtksharp_file_selection_get_fileop_c_dir (IntPtr = i);=0A= public Gtk.Button FileopCDir {=0A= get { return new Button (this, = gtksharp_file_selection_get_fileop_c_dir(this.Handle)); }=0A= }=0A= =0A= -[DllImport("gtksharpglue")]=0A= +[DllImport(GtkSharp.LibraryNames.GTKSHARPGLUE_LIB)]=0A= static extern IntPtr gtksharp_file_selection_get_fileop_del_file = (IntPtr i);=0A= public Gtk.Button FileopDelFile {=0A= get { return new Button (this, = gtksharp_file_selection_get_fileop_del_file (this.Handle)); }=0A= }=0A= =0A= -[DllImport("gtksharpglue")]=0A= +[DllImport(GtkSharp.LibraryNames.GTKSHARPGLUE_LIB)]=0A= static extern IntPtr gtksharp_file_selection_get_fileop_ren_file = (IntPtr i);=0A= public Gtk.Button FileopRenFile {=0A= get { return new Button (this, = gtksharp_file_selection_get_fileop_ren_file (this.Handle)); }=0A= }=0A= =0A= -[DllImport("gtksharpglue")]=0A= +[DllImport(GtkSharp.LibraryNames.GTKSHARPGLUE_LIB)]=0A= static extern IntPtr gtksharp_file_selection_get_button_area (IntPtr i);=0A= public Gtk.HButtonBox ButtonArea {=0A= get { return new Gtk.HButtonBox = (gtksharp_file_selection_get_button_area (this.Handle)); }=0A= }=0A= =0A= -[DllImport("gtksharpglue")]=0A= +[DllImport(GtkSharp.LibraryNames.GTKSHARPGLUE_LIB)]=0A= static extern IntPtr gtksharp_file_selection_get_action_area (IntPtr i);=0A= public new Gtk.HButtonBox ActionArea {=0A= get { return new Gtk.HButtonBox = (gtksharp_file_selection_get_action_area (this.Handle)); }=0A= Index: gtk/ListStore.custom=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A= RCS file: /cvs/public/gtk-sharp/gtk/ListStore.custom,v=0A= retrieving revision 1.1=0A= diff -u -w -r1.1 ListStore.custom=0A= --- gtk/ListStore.custom 10 Aug 2002 23:40:20 -0000 1.1=0A= +++ gtk/ListStore.custom 9 Oct 2002 05:45:47 -0000=0A= @@ -6,7 +6,7 @@=0A= //=0A= // This code is inserted after the automatically generated code.=0A= =0A= - [DllImport("gtk-x11-2.0")]=0A= + [DllImport(GtkSharp.LibraryNames.GTK_LIB)]=0A= static extern bool gtk_tree_model_iter_children (IntPtr raw, out = Gtk.TreeIter iter, IntPtr parent);=0A= public bool IterChildren (out Gtk.TreeIter iter) {=0A= bool raw_ret =3D gtk_tree_model_iter_children (Handle, out iter, = IntPtr.Zero);=0A= @@ -14,7 +14,7 @@=0A= return ret;=0A= }=0A= =0A= - [DllImport("gtk-x11-2.0")]=0A= + [DllImport(GtkSharp.LibraryNames.GTK_LIB)]=0A= static extern int gtk_tree_model_iter_n_children (IntPtr raw, IntPtr = iter);=0A= public int IterNChildren () {=0A= int raw_ret =3D gtk_tree_model_iter_n_children (Handle, IntPtr.Zero);=0A= @@ -22,7 +22,7 @@=0A= return ret;=0A= }=0A= =0A= - [DllImport("gtk-x11-2.0")]=0A= + [DllImport(GtkSharp.LibraryNames.GTK_LIB)]=0A= static extern bool gtk_tree_model_iter_nth_child (IntPtr raw, out = Gtk.TreeIter iter, IntPtr parent, int n);=0A= public bool IterNthChild (out Gtk.TreeIter iter, int n) {=0A= bool raw_ret =3D gtk_tree_model_iter_nth_child (Handle, out iter, = IntPtr.Zero, n);=0A= Index: gtk/MessageDialog.custom=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A= RCS file: /cvs/public/gtk-sharp/gtk/MessageDialog.custom,v=0A= retrieving revision 1.1=0A= diff -u -w -r1.1 MessageDialog.custom=0A= --- gtk/MessageDialog.custom 2 Oct 2002 19:38:43 -0000 1.1=0A= +++ gtk/MessageDialog.custom 9 Oct 2002 05:45:48 -0000=0A= @@ -1,4 +1,4 @@=0A= -[DllImport ("gtk-x11-2.0")]=0A= +[DllImport(GtkSharp.LibraryNames.GTK_LIB)]=0A= static extern IntPtr gtk_message_dialog_new (IntPtr parent_window, = DialogFlags flags, MessageType type, ButtonsType bt, string msg, params = object [] args);=0A= =0A= public MessageDialog (Gtk.Window parent_window, DialogFlags flags, = MessageType type, ButtonsType bt, string msg)=0A= Index: gtk/Object.custom=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A= RCS file: /cvs/public/gtk-sharp/gtk/Object.custom,v=0A= retrieving revision 1.2=0A= diff -u -w -r1.2 Object.custom=0A= --- gtk/Object.custom 12 Sep 2002 05:21:16 -0000 1.2=0A= +++ gtk/Object.custom 9 Oct 2002 05:45:48 -0000=0A= @@ -7,7 +7,7 @@=0A= // This code is inserted after the automatically generated code.=0A= =0A= =0A= - [DllImport("gtksharpglue")]=0A= + [DllImport(GtkSharp.LibraryNames.GTKSHARPGLUE_LIB)]=0A= static extern void gtksharp_object_unref_if_floating (IntPtr raw);=0A= =0A= protected override void DisposeNative ()=0A= Index: gtk/Paned.custom=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A= RCS file: /cvs/public/gtk-sharp/gtk/Paned.custom,v=0A= retrieving revision 1.1=0A= diff -u -w -r1.1 Paned.custom=0A= --- gtk/Paned.custom 19 Jul 2002 07:54:33 -0000 1.1=0A= +++ gtk/Paned.custom 9 Oct 2002 05:45:48 -0000=0A= @@ -8,14 +8,14 @@=0A= // This code is inserted after the automatically generated code.=0A= //=0A= =0A= -[DllImport ("gtksharpglue")]=0A= +[DllImport(GtkSharp.LibraryNames.GTKSHARPGLUE_LIB)]=0A= static extern IntPtr gtksharp_paned_get_child1 (IntPtr i);=0A= =0A= public Gtk.Widget Child1 {=0A= get { return new Widget (gtksharp_paned_get_child1 = (this.Handle)); }=0A= }=0A= =0A= -[DllImport ("gtksharpglue")]=0A= +[DllImport(GtkSharp.LibraryNames.GTKSHARPGLUE_LIB)]=0A= static extern IntPtr gtksharp_paned_get_child2 (IntPtr i);=0A= =0A= public Gtk.Widget Child2 {=0A= Index: gtk/Style.custom=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A= RCS file: /cvs/public/gtk-sharp/gtk/Style.custom,v=0A= retrieving revision 1.3=0A= diff -u -w -r1.3 Style.custom=0A= --- gtk/Style.custom 8 Oct 2002 07:48:43 -0000 1.3=0A= +++ gtk/Style.custom 9 Oct 2002 05:45:48 -0000=0A= @@ -17,21 +17,21 @@=0A= return ret;=0A= }=0A= =0A= -[DllImport("gtksharpglue")]=0A= +[DllImport(GtkSharp.LibraryNames.GTKSHARPGLUE_LIB)]=0A= static extern IntPtr gtksharp_gtk_style_get_white_gc (IntPtr style);=0A= =0A= public Gdk.GC WhiteGC {=0A= get { return EnsureGC (gtksharp_gtk_style_get_white_gc (Handle)); }=0A= }=0A= =0A= -[DllImport("gtksharpglue")]=0A= +[DllImport(GtkSharp.LibraryNames.GTKSHARPGLUE_LIB)]=0A= static extern IntPtr gtksharp_gtk_style_get_black_gc (IntPtr style);=0A= =0A= public Gdk.GC BlackGC {=0A= get { return EnsureGC (gtksharp_gtk_style_get_black_gc (Handle)); }=0A= }=0A= =0A= -[DllImport("gtksharpglue")]=0A= +[DllImport(GtkSharp.LibraryNames.GTKSHARPGLUE_LIB)]=0A= static extern IntPtr gtksharp_gtk_style_get_fg_gc (IntPtr style, int i);=0A= =0A= public Gdk.GC ForegroundGC (StateType state)=0A= @@ -51,7 +51,7 @@=0A= }=0A= }=0A= =0A= -[DllImport("gtksharpglue")]=0A= +[DllImport(GtkSharp.LibraryNames.GTKSHARPGLUE_LIB)]=0A= static extern IntPtr gtksharp_gtk_style_get_bg_gc (IntPtr style, int i);=0A= =0A= public Gdk.GC BackgroundGC (StateType state)=0A= @@ -71,21 +71,21 @@=0A= }=0A= }=0A= =0A= -[DllImport("gtksharpglue")]=0A= +[DllImport(GtkSharp.LibraryNames.GTKSHARPGLUE_LIB)]=0A= static extern IntPtr gtksharp_gtk_style_get_white (IntPtr style);=0A= =0A= public Gdk.Color White {=0A= get { return Gdk.Color.New (gtksharp_gtk_style_get_white (Handle)); }=0A= }=0A= =0A= -[DllImport("gtksharpglue")]=0A= +[DllImport(GtkSharp.LibraryNames.GTKSHARPGLUE_LIB)]=0A= static extern IntPtr gtksharp_gtk_style_get_black (IntPtr style);=0A= =0A= public Gdk.Color Black {=0A= get { return Gdk.Color.New (gtksharp_gtk_style_get_black (Handle)); }=0A= }=0A= =0A= -[DllImport("gtksharpglue")]=0A= +[DllImport(GtkSharp.LibraryNames.GTKSHARPGLUE_LIB)]=0A= static extern IntPtr gtksharp_gtk_style_get_bg (IntPtr style, int i);=0A= =0A= public Gdk.Color Background (StateType state)=0A= @@ -105,7 +105,7 @@=0A= }=0A= }=0A= =0A= -[DllImport("gtksharpglue")]=0A= +[DllImport(GtkSharp.LibraryNames.GTKSHARPGLUE_LIB)]=0A= static extern IntPtr gtksharp_gtk_style_get_fg (IntPtr style, int i);=0A= =0A= public Gdk.Color Foreground (StateType state)=0A= @@ -125,9 +125,9 @@=0A= }=0A= }=0A= =0A= -[DllImport ("gtksharpglue")]=0A= +[DllImport(GtkSharp.LibraryNames.GTKSHARPGLUE_LIB)]=0A= static extern int gtksharp_gtk_style_get_thickness (IntPtr style, int = x_axis);=0A= -[DllImport ("gtksharpglue")]=0A= +[DllImport(GtkSharp.LibraryNames.GTKSHARPGLUE_LIB)]=0A= static extern void gtksharp_gtk_style_set_thickness (IntPtr style, int = value);=0A= =0A= public int XThickness {=0A= Index: gtk/Table.custom=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A= RCS file: /cvs/public/gtk-sharp/gtk/Table.custom,v=0A= retrieving revision 1.2=0A= diff -u -w -r1.2 Table.custom=0A= --- gtk/Table.custom 25 Aug 2002 05:51:21 -0000 1.2=0A= +++ gtk/Table.custom 9 Oct 2002 05:45:48 -0000=0A= @@ -1,4 +1,4 @@=0A= -public Table()=0A= -{=0A= - Raw =3D gtk_table_new (0, 0, false);=0A= -}=0A= +//public Table()=0A= +//{=0A= +// Raw =3D gtk_table_new (0, 0, false);=0A= +//}=0A= Index: gtk/ThreadNotify.cs=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A= RCS file: /cvs/public/gtk-sharp/gtk/ThreadNotify.cs,v=0A= retrieving revision 1.1=0A= diff -u -w -r1.1 ThreadNotify.cs=0A= --- gtk/ThreadNotify.cs 17 Aug 2002 19:53:51 -0000 1.1=0A= +++ gtk/ThreadNotify.cs 9 Oct 2002 05:45:48 -0000=0A= @@ -16,7 +16,7 @@=0A= // =0A= // This delegate will be invoked on the main Gtk thread.=0A= // =0A= - delegate void ReadyEvent ();=0A= + public delegate void ReadyEvent ();=0A= =0A= /// =0A= /// Utility class to help writting multi-threaded Gtk applications=0A= @@ -28,7 +28,7 @@=0A= //=0A= // DllImport functions from Gtk=0A= //=0A= - [DllImport ("gtk-x11-2.0")]=0A= + [DllImport (GtkSharp.LibraryNames.GTK_LIB)]=0A= public static extern int gdk_input_add (int s, int cond, = GdkInputFunction f, IntPtr data);=0A= public delegate void GdkInputFunction (IntPtr data, int source, int = cond);=0A= =0A= Index: gtk/TreeModelSort.custom=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A= RCS file: /cvs/public/gtk-sharp/gtk/TreeModelSort.custom,v=0A= retrieving revision 1.1=0A= diff -u -w -r1.1 TreeModelSort.custom=0A= --- gtk/TreeModelSort.custom 10 Aug 2002 23:40:20 -0000 1.1=0A= +++ gtk/TreeModelSort.custom 9 Oct 2002 05:45:48 -0000=0A= @@ -6,7 +6,7 @@=0A= //=0A= // This code is inserted after the automatically generated code.=0A= =0A= - [DllImport("gtk-x11-2.0")]=0A= + [DllImport(GtkSharp.LibraryNames.GTK_LIB)]=0A= static extern bool gtk_tree_model_iter_children (IntPtr raw, out = Gtk.TreeIter iter, IntPtr parent);=0A= public bool IterChildren (out Gtk.TreeIter iter) {=0A= bool raw_ret =3D gtk_tree_model_iter_children (Handle, out iter, = IntPtr.Zero);=0A= @@ -14,7 +14,7 @@=0A= return ret;=0A= }=0A= =0A= - [DllImport("gtk-x11-2.0")]=0A= + [DllImport(GtkSharp.LibraryNames.GTK_LIB)]=0A= static extern int gtk_tree_model_iter_n_children (IntPtr raw, IntPtr = iter);=0A= public int IterNChildren () {=0A= int raw_ret =3D gtk_tree_model_iter_n_children (Handle, IntPtr.Zero);=0A= @@ -22,7 +22,7 @@=0A= return ret;=0A= }=0A= =0A= - [DllImport("gtk-x11-2.0")]=0A= + [DllImport(GtkSharp.LibraryNames.GTK_LIB)]=0A= static extern bool gtk_tree_model_iter_nth_child (IntPtr raw, out = Gtk.TreeIter iter, IntPtr parent, int n);=0A= public bool IterNthChild (out Gtk.TreeIter iter, int n) {=0A= bool raw_ret =3D gtk_tree_model_iter_nth_child (Handle, out iter, = IntPtr.Zero, n);=0A= Index: gtk/TreeStore.custom=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A= RCS file: /cvs/public/gtk-sharp/gtk/TreeStore.custom,v=0A= retrieving revision 1.1=0A= diff -u -w -r1.1 TreeStore.custom=0A= --- gtk/TreeStore.custom 10 Aug 2002 23:40:20 -0000 1.1=0A= +++ gtk/TreeStore.custom 9 Oct 2002 05:45:48 -0000=0A= @@ -15,7 +15,7 @@=0A= /// Appends a row to the root level of the TreeStore.=0A= /// =0A= =0A= - [DllImport ("gtk-x11-2.0")]=0A= + [DllImport(GtkSharp.LibraryNames.GTK_LIB)]=0A= static extern void gtk_tree_store_append (IntPtr raw, out = Gtk.TreeIter iter, IntPtr parent);=0A= =0A= public void Append (out Gtk.TreeIter iter) {=0A= @@ -31,7 +31,7 @@=0A= /// the given position.=0A= /// =0A= =0A= - [DllImport ("gtk-x11-2.0")]=0A= + [DllImport(GtkSharp.LibraryNames.GTK_LIB)]=0A= static extern void gtk_tree_store_insert (IntPtr raw, out = Gtk.TreeIter iter, IntPtr parent, int position);=0A= =0A= public void Insert (out Gtk.TreeIter iter, int position) {=0A= @@ -46,7 +46,7 @@=0A= /// Prepends a row to the root level of the TreeStore.=0A= /// =0A= =0A= - [DllImport ("gtk-x11-2.0")]=0A= + [DllImport(GtkSharp.LibraryNames.GTK_LIB)]=0A= static extern void gtk_tree_store_prepend (IntPtr raw, out = Gtk.TreeIter iter, IntPtr parent);=0A= =0A= public void Prepend (out Gtk.TreeIter iter) {=0A= @@ -62,7 +62,7 @@=0A= /// given sibling.=0A= /// =0A= =0A= - [DllImport ("gtk-x11-2.0")]=0A= + [DllImport(GtkSharp.LibraryNames.GTK_LIB)]=0A= static extern void gtk_tree_store_insert_before (IntPtr raw, out = Gtk.TreeIter iter, IntPtr parent, ref Gtk.TreeIter sibling);=0A= =0A= public void InsertBefore (out Gtk.TreeIter iter, Gtk.TreeIter = sibling) {=0A= @@ -78,7 +78,7 @@=0A= /// given sibling.=0A= /// =0A= =0A= - [DllImport ("gtk-x11-2.0")]=0A= + [DllImport(GtkSharp.LibraryNames.GTK_LIB)]=0A= static extern void gtk_tree_store_insert_after (IntPtr raw, out = Gtk.TreeIter iter, IntPtr parent, ref Gtk.TreeIter sibling);=0A= =0A= public void InsertAfter (out Gtk.TreeIter iter, Gtk.TreeIter sibling) = {=0A= @@ -86,7 +86,7 @@=0A= }=0A= =0A= =0A= - [DllImport("gtk-x11-2.0")]=0A= + [DllImport(GtkSharp.LibraryNames.GTK_LIB)]=0A= static extern bool gtk_tree_model_iter_children (IntPtr raw, out = Gtk.TreeIter iter, IntPtr parent);=0A= public bool IterChildren (out Gtk.TreeIter iter) {=0A= bool raw_ret =3D gtk_tree_model_iter_children (Handle, out iter, = IntPtr.Zero);=0A= @@ -94,7 +94,7 @@=0A= return ret;=0A= }=0A= =0A= - [DllImport("gtk-x11-2.0")]=0A= + [DllImport(GtkSharp.LibraryNames.GTK_LIB)]=0A= static extern int gtk_tree_model_iter_n_children (IntPtr raw, IntPtr = iter);=0A= public int IterNChildren () {=0A= int raw_ret =3D gtk_tree_model_iter_n_children (Handle, IntPtr.Zero);=0A= @@ -102,7 +102,7 @@=0A= return ret;=0A= }=0A= =0A= - [DllImport("gtk-x11-2.0")]=0A= + [DllImport(GtkSharp.LibraryNames.GTK_LIB)]=0A= static extern bool gtk_tree_model_iter_nth_child (IntPtr raw, out = Gtk.TreeIter iter, IntPtr parent, int n);=0A= public bool IterNthChild (out Gtk.TreeIter iter, int n) {=0A= bool raw_ret =3D gtk_tree_model_iter_nth_child (Handle, out iter, = IntPtr.Zero, n);=0A= Index: gtk/TreeView.custom=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A= RCS file: /cvs/public/gtk-sharp/gtk/TreeView.custom,v=0A= retrieving revision 1.4=0A= diff -u -w -r1.4 TreeView.custom=0A= --- gtk/TreeView.custom 4 Oct 2002 16:38:47 -0000 1.4=0A= +++ gtk/TreeView.custom 9 Oct 2002 05:45:48 -0000=0A= @@ -7,10 +7,10 @@=0A= // This code is inserted after the automatically generated code.=0A= =0A= =0A= - [DllImport("gtk-x11-2.0")]=0A= + [DllImport(GtkSharp.LibraryNames.GTK_LIB)]=0A= static extern IntPtr gtk_tree_view_get_model (IntPtr raw);=0A= =0A= - [DllImport("gtk-x11-2.0")]=0A= + [DllImport(GtkSharp.LibraryNames.GTK_LIB)]=0A= static extern IntPtr gtk_tree_view_set_model (IntPtr raw, IntPtr = raw_model);=0A= =0A= /// Model Property=0A= Index: gtk/Widget.custom=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A= RCS file: /cvs/public/gtk-sharp/gtk/Widget.custom,v=0A= retrieving revision 1.2=0A= diff -u -w -r1.2 Widget.custom=0A= --- gtk/Widget.custom 24 Sep 2002 03:21:37 -0000 1.2=0A= +++ gtk/Widget.custom 9 Oct 2002 05:45:48 -0000=0A= @@ -8,7 +8,7 @@=0A= // This code is inserted after the automatically generated code.=0A= //=0A= =0A= -[DllImport("gtksharpglue")]=0A= +[DllImport(GtkSharp.LibraryNames.GTKSHARPGLUE_LIB)]=0A= static extern IntPtr gtksharp_gtk_widget_get_allocation (IntPtr style);=0A= =0A= public Gdk.Rectangle Allocation {=0A= @@ -16,7 +16,7 @@=0A= }=0A= =0A= =0A= -[DllImport ("gtksharpglue")]=0A= +[DllImport(GtkSharp.LibraryNames.GTKSHARPGLUE_LIB)]=0A= static extern IntPtr gtksharp_gtk_widget_get_window (IntPtr widget);=0A= public Gdk.Window GdkWindow {=0A= get {=0A= Index: sources/gtk-sharp.sources=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A= RCS file: /cvs/public/gtk-sharp/sources/gtk-sharp.sources,v=0A= retrieving revision 1.3=0A= diff -u -w -r1.3 gtk-sharp.sources=0A= --- sources/gtk-sharp.sources 11 Sep 2002 09:43:17 -0000 1.3=0A= +++ sources/gtk-sharp.sources 9 Oct 2002 05:45:48 -0000=0A= @@ -1,13 +1,13 @@=0A= -atk-1.0.2/atk Atk atk-1.0 =0A= -pango-1.0.3/pango Pango pango-1.0=0A= -gtk+-2.0.5/gdk Gdk gdk-x11-2.0=0A= -gtk+-2.0.5/gdk-pixbuf Gdk gdk_pixbuf-2.0=0A= -gtk+-2.0.5/gtk Gtk gtk-x11-2.0=0A= -libgnome-2.0.1/libgnome Gnome gnome-2=0A= -libgnomecanvas-2.0.1/libgnomecanvas Gnome gnomecanvas-2=0A= -libgnomeui-2.0.1/libgnomeui Gnome gnomeui-2=0A= -gtkhtml/src Gtk gtkhtml-3.0=0A= -libglade-2.0.0/glade Glade glade-2.0=0A= -libart_lgpl-2.3.10 Art art_lgpl=0A= -libgda-0.8.193/libgda Gda gda-2=0A= -libgnomedb-0.8.193/libgnomedb GnomeDb gnomedb-2=0A= +atk-1.0.2/atk Atk GtkSharp.LibraryNames.ATK_LIB=0A= +pango-1.0.3/pango Pango GtkSharp.LibraryNames.PANGO_LIB=0A= +gtk+-2.0.5/gdk Gdk GtkSharp.LibraryNames.GDK_LIB=0A= +gtk+-2.0.5/gdk-pixbuf Gdk GtkSharp.LibraryNames.GDK_PIXBUF_LIB=0A= +gtk+-2.0.5/gtk Gtk GtkSharp.LibraryNames.GTK_LIB=0A= +libgnome-2.0.1/libgnome Gnome GtkSharp.LibraryNames.GNOME_LIB=0A= +libgnomecanvas-2.0.1/libgnomecanvas Gnome = GtkSharp.LibraryNames.GNOME_CANVAS_LIB=0A= +libgnomeui-2.0.1/libgnomeui Gnome GtkSharp.LibraryNames.GNOMEUI_LIB=0A= +gtkhtml/src Gtk GtkSharp.LibraryNames.GTKHTML_LIB=0A= +libglade-2.0.0/glade Glade GtkSharp.LibraryNames.GLADE_LIB=0A= +libart_lgpl-2.3.10 Art GtkSharp.LibraryNames.ART_LIB=0A= +libgda-0.8.193/libgda Gda GtkSharp.LibraryNames.GDA_LIB=0A= +libgnomedb-0.8.193/libgnomedb GnomeDb GtkSharp.LibraryNames.GNOMEDB_LIB=0A= --- /dev/null 2002-10-08 22:47:41.000000000 -0700=0A= +++ api/makefile.win32 2002-10-08 04:05:38.000000000 -0700=0A= @@ -0,0 +1,7 @@=0A= +=0A= +all: generated-stamp=0A= +=0A= +generated-stamp: atk-api.xml gdk-api.xml gdk-symbols.xml gtk-api.xml = gtk-symbols.xml pango-api.xml ../generator/codegen.exe=0A= + ../generator/codegen --generate atk-api.xml gdk-api.xml = gdk-symbols.xml gtk-api.xml gtk-symbols.xml pango-api.xml=0A= + touch generated-stamp=0A= +=0A= --- /dev/null 2002-10-08 22:47:50.000000000 -0700=0A= +++ glib/LibraryNames.cs 2002-10-08 22:37:01.000000000 -0700=0A= @@ -0,0 +1,38 @@=0A= +=0A= +namespace GtkSharp {=0A= + public class LibraryNames {=0A= +#if WIN32=0A= + public const string GTKSHARPGLUE_LIB =3D "gtksharpglue.dll";=0A= + public const string GLIB_LIB =3D "libglib-2.0-0.dll";=0A= + public const string GOBJECT_LIB =3D "libgobject-2.0-0.dll";=0A= + public const string ATK_LIB =3D "libatk-1.0-0.dll";=0A= + public const string PANGO_LIB =3D "libpango-1.0-0.dll";=0A= + public const string GDK_LIB =3D "libgdk-win32-2.0-0.dll";=0A= + public const string GDK_PIXBUF_LIB =3D "libgdk_pixbuf-2.0-0.dll";=0A= + public const string GTK_LIB =3D "libgtk-win32-2.0-0.dll";=0A= + public const string GNOME_LIB =3D "libgnome-2-0.dll";=0A= + public const string GNOMECANVAS_LIB =3D "libgnomecanvas-2-0.dll";=0A= + public const string GNOMEUI_LIB =3D "libgnomeui-2-0.dll";=0A= + public const string GTKHTML_LIB =3D "libgtkhtml-3.0-0.dll";=0A= + public const string GLADE_LIB =3D "libglade-2.0-0.dll";=0A= + public const string GDA_LIB =3D "libggda-2-0.dll";=0A= + public const string GNOMEDB_LIB =3D "libggnomedb-2-0.dll";=0A= +#else=0A= + public const string GTKSHARPGLUE_LIB =3D "gtksharpglue";=0A= + public const string GLIB_LIB =3D "glib-2.0";=0A= + public const string GOBJECT_LIB =3D "gobject-2.0";=0A= + public const string ATK_LIB =3D "atk-1.0";=0A= + public const string PANGO_LIB =3D "pango-1.0";=0A= + public const string GDK_LIB =3D "gdk-x11-2.0";=0A= + public const string GDK_PIXBUF_LIB =3D "gdk-pixbuf-2.0";=0A= + public const string GTK_LIB =3D "gtk-x11-2.0";=0A= + public const string GNOME_LIB =3D "gnome-2";=0A= + public const string GNOMECANVAS_LIB =3D "gnomecanvas-2";=0A= + public const string GNOMEUI_LIB =3D "gnomeui-2";=0A= + public const string GTKHTML_LIB =3D "gtkhtml-3.0";=0A= + public const string GLADE_LIB =3D "glade-2.0";=0A= + public const string GDA_LIB =3D "gda-2";=0A= + public const string GNOMEDB_LIB =3D "gnomedb-2";=0A= +#endif=0A= + }=0A= +}=0A= --- /dev/null 2002-10-08 22:48:00.000000000 -0700=0A= +++ glue/makefile.win32 2002-10-08 22:30:31.000000000 -0700=0A= @@ -0,0 +1,35 @@=0A= +=0A= +GTK_CFLAGS=3D`pkg-config --cflags gtk+-win32-2.0`=0A= +GTK_LIBS=3D`pkg-config --libs gtk+-win32-2.0`=0A= +CC=3Dgcc -b i686-pc-mingw32=0A= +DLLWRAP=3Ddllwrap --mno-cygwin --target i386-mingw32 = --export-all-symbols=0A= +=0A= +GLUE_OBJS =3D \=0A= + adjustment.o \=0A= + dialog.o \=0A= + error.o \=0A= + event.o \=0A= + fileselection.o \=0A= + list.o \=0A= + object.o \=0A= + paned.o \=0A= + slist.o \=0A= + style.o \=0A= + type.o \=0A= + value.o \=0A= + widget.o \=0A= + win32dll.o=0A= +=0A= +all: gtksharpglue.dll=0A= +=0A= +=0A= +%.o: %.c=0A= + $(CC) -c $(CFLAGS) $(GTK_CFLAGS) -o $@ $^ =0A= +=0A= +=0A= +gtksharpglue.dll: $(GLUE_OBJS)=0A= + $(DLLWRAP) --output-lib=3Dlibgtksharpglue.a = --dllname=3Dgtksharpglue.dll --driver-name=3Dgcc = --output-def=3Dgtksharpglue.def $(GLUE_OBJS) $(GTK_LIBS)=0A= +=0A= +=0A= +clean:=0A= + rm -f gtksharpglue.dll *.o libgtksharpglue.a=0A= --- /dev/null 2002-10-08 22:48:09.000000000 -0700=0A= +++ glue/win32dll.c 2002-10-08 22:33:07.000000000 -0700=0A= @@ -0,0 +1,16 @@=0A= +=0A= +#define WIN32_LEAN_AND_MEAN=0A= +#include =0A= +#undef WIN32_LEAN_AND_MEAN=0A= +#include =0A= +=0A= +BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved)=0A= +{=0A= + return TRUE;=0A= +}=0A= +=0A= +=0A= +BOOL APIENTRY DllMainCRTStartup (HINSTANCE hInst, DWORD reason, LPVOID = reserved)=0A= +{=0A= + return TRUE;=0A= +}=0A= ------=_NextPart_000_0019_01C278DB.8B4C2770-- From brianlritchie@hotmail.com Mon Oct 21 13:41:39 2002 From: brianlritchie@hotmail.com (Brian Ritchie) Date: Mon, 21 Oct 2002 08:41:39 -0400 Subject: [Mono-list] ODBC.NET Data Provider Update References: Message-ID: Sorry guys...I missed a couple of files during my CVS commit. I'll have it fixed in a couple of hours. Brian ----- Original Message ----- From: "Brian Ritchie" To: Sent: Sunday, October 20, 2002 3:33 PM Subject: [Mono-list] ODBC.NET Data Provider Update > Work progresses on tricking out the ODBC provider...it isn't production > ready yet, but then what is :) > > The provider is definitely in a quite usuable state. I've been performing > basic testing on Linux (Debian w/ DB2) and Windows (WinXP w/ SQL Server & > Excel db drivers). The mono config file has been updated to handle > auto-switching of odbc32.dll vs. libodbc.so based on platform. > > The following changes have been commited to CVS: > - Fixed TinyInt mapping (Thanks Daniel for finding the bug!) > - Parameter support for all data types (could use further optimization) > - Implemented full error handling support: OdbcException, OdbcError, > OdbcErrorCollection. This includes getting the full error message text back > from the ODBC driver. > - Transaction Isolation Level is supported > - ExecuteScalar is supported > - Support CloseConnection CommandBehavior for ExecuteReader > > Known Issues: > - A number of data types are returned as strings instead of native types > - Following command behaviors aren't supported: KeyInfo, SchemaOnly, > SequentialAccess > - DataAdapter & CommandBuilder still not supported > > > Thanks to all who have been road testing the provider (especially Daniel > Morgan). > > Brian > > > > _________________________________________________________________ > Unlimited Internet access -- and 2 months free! Try MSN. > http://resourcecenter.msn.com/access/plans/2monthsfree.asp > > > _______________________________________________ > Mono-list maillist - Mono-list@ximian.com > http://lists.ximian.com/mailman/listinfo/mono-list > From fjh@cs.mu.oz.au Mon Oct 21 14:04:14 2002 From: fjh@cs.mu.oz.au (Fergus Henderson) Date: Mon, 21 Oct 2002 23:04:14 +1000 Subject: [Mono-list] laus stultitia In-Reply-To: References: Message-ID: <20021021130413.GA8616@ceres.cs.mu.oz.au> On 19-Oct-2002, Erik Poupaert wrote: > > Piers Haken writes: > > >>>> Is bytecode necessary? No, probably not. > >>>> Is binary distribution of executables necessary? No, not technically. > >>>> You can build everything from source, in theory. > >>>> Are they equivalent? Yes, virtually. (bytecode being a binary > >>>> distribution medium for executables targeted at a 'virtual' machine) > > If binary distribution and source distribution are theoretically equivalent, Binary distribution and source distribution are not equivalent. Source distribution means that the user's machine needs to have a fully compatible version of the compiler. This is not feasible for applications programmed in languages whose specification is undergoing development, unless application programmers are rigorous about not using new features, or unless you distribute the compiler along with the application, which in most cases increases the download size prohibitively. (Languages whose specification is *not* undergoing development are usually referred to as "dead languages".) Binary distribution, on the other hand, only requires that the target architecture & ABI remain stable. This is a much less onerous restriction. Programmers can take advantage of the latest and greatest features offered by their compilers, so long as the compiler can somehow map those features down to the stable ABI. In short: if your aim is to distribute programs in a form that is easily executable, then source distribution sucks. I'll very much in favour of open-source software, but it should continue to be distributed in binary form as well as in source form. -- Fergus Henderson | "I have always known that the pursuit The University of Melbourne | of excellence is a lethal habit" WWW: | -- the last words of T. S. Garp. From fjh@cs.mu.oz.au Mon Oct 21 14:08:15 2002 From: fjh@cs.mu.oz.au (Fergus Henderson) Date: Mon, 21 Oct 2002 23:08:15 +1000 Subject: [Mono-list] binary distribution methods In-Reply-To: References: Message-ID: <20021021130815.GB8616@ceres.cs.mu.oz.au> On 19-Oct-2002, Erik Poupaert wrote: > > Sys Admin Magazine > > http://www.samag.com/documents/s=7666/sam0211a/0211a.htm > > About self-contained, zero-dependency applications and their deployment: > > """ > To meet OpenPKG guidelines and standards, a package must be built from > pristine vendor sources in a non-root temporary environment. It must work in > an arbitrary file system location, follow a strict file system layout, and > must be self-contained within its OpenPKG instance. Furthermore, the package > must be independent from external UNIX facilities, install with a reasonable > configuration, and use log file rotations and other such administrative > wonders. > """ > > A Mono-developed application would have a very hard time to qualify. Why? -- Fergus Henderson | "I have always known that the pursuit The University of Melbourne | of excellence is a lethal habit" WWW: | -- the last words of T. S. Garp. From alexl@redhat.com Mon Oct 21 13:57:09 2002 From: alexl@redhat.com (Alexander Larsson) Date: Mon, 21 Oct 2002 08:57:09 -0400 (EDT) Subject: [Mono-list] BigInt implementation Message-ID: This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime@docserver.cac.washington.edu for more info. --279707962-904132616-1035205029=:25817 Content-Type: TEXT/PLAIN; charset=US-ASCII I noted on the mono mailinglist (I read the archives now and then) that you needed a bignum implementation. I wrote a java BigInt class ages ago (1996 to be exact). It probably need some cleaning up and changes for C#, but might be interesting as a basis for something. I have full copyright on this, so I can license it BSD style if you want to use it. -- =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a suicidal gay romance novelist in a wheelchair. She's a beautiful motormouth archaeologist operating on the wrong side of the law. They fight crime! --279707962-904132616-1035205029=:25817 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="BigInt.java" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename="BigInt.java" aW1wb3J0IGphdmEubGFuZy4qOw0KLyogDQoNCiAgVE9ETzoNCiAgIHBvdw0K ICAgc2hpZnQgZnVuY3Rpb25zDQoNCiAgIHRlc3QsIHRlc3QsIHRlc3QuLi4g KHBhcnRpY3VsYXJ5IGRpdikNCiovDQoNCg0KDQpwdWJsaWMgY2xhc3MgQmln SW50IGltcGxlbWVudHMgQ2xvbmVhYmxlIHsNCi8vIFB1YmxpYyBDb25zdHJ1 Y3RvcnMNCiAgcHVibGljIEJpZ0ludChpbnQgeCkgeyANCiAgICBpZiAoeD09 LTB4ODAwMDAwMDApIHsNCiAgICAgIHZhbHVlPSBuZXcgaW50WzJdOw0KICAg ICAgbGVuZ3RoPS0yOw0KICAgICAgdmFsdWVbMV09MTsNCiAgICAgIHZhbHVl WzBdPTA7DQogICAgfSBlbHNlIHsNCiAgICAgIHZhbHVlPSBuZXcgaW50WzFd Ow0KICAgICAgbGVuZ3RoPTE7DQogICAgICBpZiAoeD49MCkgew0KCXZhbHVl WzBdPXg7DQogICAgICB9IGVsc2Ugew0KCXZhbHVlWzBdPS14Ow0KCWxlbmd0 aD0tbGVuZ3RoOw0KICAgICAgfQ0KICAgIH0NCiAgfQ0KDQogIHB1YmxpYyBC aWdJbnQoU3RyaW5nIHMpIHRocm93cyBOdW1iZXJGb3JtYXRFeGNlcHRpb24g ew0KICAgIGJvb2xlYW4gbmVnYXRpdmU9ZmFsc2U7DQogICAgaW50IG0saSxk LHQ7DQogICAgU3RyaW5nIGRzOw0KDQogICAgdHJ5IHsNCiAgICAgIGk9MDsN CiAgICAgIGlmIChzLmNoYXJBdChpKT09Jy0nKSB7DQoJbmVnYXRpdmU9dHJ1 ZTsNCglpKys7DQogICAgICB9DQogICAgICBtPXMubGVuZ3RoKCktaTsNCiAg DQoNCiAgICAgIGxlbmd0aD0xOw0KICAgICAgdmFsdWU9bmV3IGludFttKzFd Ow0KICAgICAgdmFsdWVbMF09MDsNCiAgICAgIHdoaWxlIChtPjApIHsNCglp ZiAobT49OSkgew0KCSAgZHM9cy5zdWJzdHJpbmcoaSxpKzkpOw0KCSAgZD1J bnRlZ2VyLnBhcnNlSW50KGRzKTsNCgkgIGlmIChkPDApDQoJICAgIHRocm93 IG5ldyBOdW1iZXJGb3JtYXRFeGNlcHRpb24oIictJyBpbiBkaWdpdCIpOw0K CSAgdmFsdWVbbGVuZ3RoXT1kb011bHQodmFsdWUsMCxsZW5ndGgsMTAwMDAw MDAwMCx2YWx1ZSwwKTsNCgkgIGlmICh2YWx1ZVtsZW5ndGhdIT0wKQ0KCSAg ICBsZW5ndGgrKzsNCgkgIHZhbHVlW2xlbmd0aF09ZG9BZGQodmFsdWUsMCxs ZW5ndGgsZCx2YWx1ZSwwKTsNCgkgIGlmICh2YWx1ZVtsZW5ndGhdIT0wKQ0K CSAgICBsZW5ndGgrKzsNCgkgIGkrPTk7DQoJICBtLT05Ow0KCX0gZWxzZSB7 DQoJICBkcz1zLnN1YnN0cmluZyhpLGkrbSk7DQoJICBkPUludGVnZXIucGFy c2VJbnQoZHMpOw0KCSAgdD0xOw0KCSAgd2hpbGUgKG0+MCkgew0KCSAgICB0 PXQqMTA7DQoJICAgIG0tLTsNCgkgIH0NCgkgIHZhbHVlW2xlbmd0aF09ZG9N dWx0KHZhbHVlLDAsbGVuZ3RoLHQsdmFsdWUsMCk7DQoJICBpZiAodmFsdWVb bGVuZ3RoXSE9MCkNCgkgICAgbGVuZ3RoKys7DQoJICB2YWx1ZVtsZW5ndGhd PWRvQWRkKHZhbHVlLDAsbGVuZ3RoLGQsdmFsdWUsMCk7DQoJICBpZiAodmFs dWVbbGVuZ3RoXSE9MCkNCgkgICAgbGVuZ3RoKys7DQoJICBicmVhazsNCgl9 DQogICAgICB9DQogICAgICBpZiAobmVnYXRpdmUpIHsNCglsZW5ndGg9LWxl bmd0aDsNCiAgICAgIH0NCiAgICAgIHRyaW0oKTsNCg0KICAgIH0gY2F0Y2gg KFN0cmluZ0luZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24gZSkgew0KICAgICAg dGhyb3cgbmV3IE51bWJlckZvcm1hdEV4Y2VwdGlvbigiaW5kZXggb3V0IG9m IGJvdW5kcyIpOw0KICAgIH0NCiAgfQ0KDQogIHB1YmxpYyBzdGF0aWMgZmlu YWwgQmlnSW50IHJhbmRvbShpbnQgbikgew0KICAgIGphdmEudXRpbC5SYW5k b20gcjsNCiAgICBpbnQgaSxsOw0KICAgIEJpZ0ludCB4Ow0KDQogICAgcj1u ZXcgamF2YS51dGlsLlJhbmRvbSgpOw0KDQoNCiAgICBsPU1hdGguYWJzKHIu bmV4dEludCgpJShuLTEpKSsxOw0KDQogICAgeD1uZXcgQmlnSW50KCk7DQog ICAgeC5sZW5ndGg9bDsNCiAgICB4LnZhbHVlPW5ldyBpbnRbbF07DQogICAg Zm9yIChpPTA7aTxsO2krKykgew0KICAgICAgeC52YWx1ZVtpXT1NYXRoLmFi cyhyLm5leHRJbnQoKSk7DQogICAgfQ0KICAgIGlmICgoci5uZXh0SW50KCkl Mik9PTApDQogICAgICB4Lmxlbmd0aD0teC5sZW5ndGg7DQogICAgeC50cmlt KCk7DQogICAgcmV0dXJuIHg7DQogIH0NCg0KDQovLyBDbGFzcyBNZXRob2Rz DQogIHB1YmxpYyBzdGF0aWMgZmluYWwgQmlnSW50IGdjZChCaWdJbnQgYSxC aWdJbnQgYikgew0KICAgIEJpZ0ludCBjLGQscixxOw0KICAgIGM9QmlnSW50 LmFicyhhKTsNCiAgICBkPUJpZ0ludC5hYnMoYik7DQoNCiAgICB3aGlsZSAo IWQuaXNaZXJvKCkpIHsNCiAgICAgIHI9QmlnSW50LnJlbShjLGQpOw0KICAg ICAgYz1kOw0KICAgICAgZD1yOw0KICAgIH0NCiAgICByZXR1cm4gYzsNCiAg fQ0KDQogIHB1YmxpYyBzdGF0aWMgZmluYWwgQmlnSW50IGdjZChCaWdJbnQg YSxCaWdJbnQgYixCaWdJbnQgcyxCaWdJbnQgdCkgew0KICAgIEJpZ0ludCBj LGQscixxOw0KICAgIEJpZ0ludCBjMSxkMSxjMixkMixyMSxyMjsNCiAgICBj PUJpZ0ludC5hYnMoYSk7DQogICAgZD1CaWdJbnQuYWJzKGIpOw0KICAgIGMx PW5ldyBCaWdJbnQoMSk7ICBkMT1uZXcgQmlnSW50KDApOw0KICAgIGMyPW5l dyBCaWdJbnQoMCk7ICBkMj1uZXcgQmlnSW50KDEpOw0KDQogICAgcT1uZXcg QmlnSW50KCk7DQogICAgcj1uZXcgQmlnSW50KCk7DQoNCiAgICB3aGlsZSAo IWQuaXNaZXJvKCkpIHsNCiAgICAgIEJpZ0ludC5kaXZyZW0oYyxkLHEscik7 DQogICAgICByMT1CaWdJbnQuc3ViKGMxLEJpZ0ludC5tdWx0KHEsZDEpKTsN CiAgICAgIHIyPUJpZ0ludC5zdWIoYzIsQmlnSW50Lm11bHQocSxkMikpOw0K ICAgICAgYy5hc3NpZ24oZCk7IGMxPWQxOyBjMj1kMjsNCiAgICAgIGQuYXNz aWduKHIpOyBkMT1yMTsgZDI9cjI7DQogICAgfQ0KICAgIHMuYXNzaWduKGMx KTsNCiAgICB0LmFzc2lnbihjMik7DQogICAgaWYgKGEuaXNOZWdhdGl2ZSgp KSB7DQogICAgICBzLm5lZygpOw0KICAgIH0NCiAgICBpZiAoYi5pc05lZ2F0 aXZlKCkpIHsNCiAgICAgIHQubmVnKCk7DQogICAgfQ0KICAgIGlmIChjLmlz TmVnYXRpdmUoKSkgew0KICAgICAgdC5uZWcoKTsNCiAgICAgIHMubmVnKCk7 DQogICAgfQ0KDQogICAgcmV0dXJuIGM7DQogIH0NCg0KICBwdWJsaWMgc3Rh dGljIGZpbmFsIEJpZ0ludCBsY20oQmlnSW50IGEsQmlnSW50IGIpIHsNCiAg ICBCaWdJbnQgYyxyOw0KICAgIA0KICAgIGM9QmlnSW50Lm11bHQoYSxiKTsN CiAgICByPWMuZGl2KEJpZ0ludC5nY2QoYSxiKSk7DQogICAgcmV0dXJuIGM7 DQogICAgDQogIH0NCiAgcHVibGljIHN0YXRpYyBmaW5hbCBCaWdJbnQgbWF4 KEJpZ0ludCBhLEJpZ0ludCBiKSB7DQogICAgaWYgKGEuaXNHcmVhdGVyKGIp KSB7DQogICAgICByZXR1cm4gKEJpZ0ludCkgYS5jbG9uZSgpOw0KICAgIH0g ZWxzZSB7DQogICAgICByZXR1cm4gKEJpZ0ludCkgYi5jbG9uZSgpOw0KICAg IH0NCiAgfQ0KICBwdWJsaWMgc3RhdGljIGZpbmFsIEJpZ0ludCBtaW4oQmln SW50IGEsQmlnSW50IGIpIHsNCiAgICBpZiAoYS5pc0dyZWF0ZXIoYikpIHsN CiAgICAgIHJldHVybiAoQmlnSW50KSBiLmNsb25lKCk7DQogICAgfSBlbHNl IHsNCiAgICAgIHJldHVybiAoQmlnSW50KSBhLmNsb25lKCk7DQogICAgfQ0K ICB9DQogIA0KLy8gUHVibGljIEluc3RhbmNlIE1ldGhvZHMNCiAgcHVibGlj IGZpbmFsIHZvaWQgYXNzaWduKEJpZ0ludCB4KSB7DQogICAgdGhpcy5sZW5n dGg9eC5sZW5ndGg7DQogICAgdHJ5IHsNCiAgICAgIHRoaXMudmFsdWU9KGlu dCBbXSl4LnZhbHVlLmNsb25lKCk7DQogICAgfSBjYXRjaCAoVGhyb3dhYmxl IGUpIHsNCiAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiQ2xvbmUgbm90IHN1 cHBvcnRlZCBieSBhcnJheSE/Iik7DQogICAgfQ0KICB9DQoNCiAgcHVibGlj IGZpbmFsIE9iamVjdCBjbG9uZSgpIHsNCiAgICBCaWdJbnQgeDsNCiAgICB4 PW5ldyBCaWdJbnQoKTsNCiAgICB4Lmxlbmd0aD10aGlzLmxlbmd0aDsNCiAg ICB0cnkgew0KICAgICAgeC52YWx1ZT0oaW50IFtdKXRoaXMudmFsdWUuY2xv bmUoKTsNCiAgICB9IGNhdGNoIChUaHJvd2FibGUgZSkgew0KICAgICAgU3lz dGVtLm91dC5wcmludGxuKCJDbG9uZSBub3Qgc3VwcG9ydGVkIGJ5IGFycmF5 IT8iKTsNCiAgICB9DQogICAgcmV0dXJuIChPYmplY3QpIHg7DQogIH0NCg0K ICAvLyBOdW1lcmljYWwNCiAgcHVibGljIHN0YXRpYyBmaW5hbCBCaWdJbnQg YWRkKEJpZ0ludCBhLEJpZ0ludCBiKXsNCiAgICBCaWdJbnQgdG1wOw0KICAg IEJpZ0ludCBjOw0KICAgIGludCBtLG47DQoNCiAgICBpZiAoYS5pc0Fic0xl c3MoYikpIHsNCiAgICAgIHRtcD1iOw0KICAgICAgYj1hOw0KICAgICAgYT10 bXA7DQogICAgfQ0KICAgIC8vIHxBfCA+PSB8QnwNCg0KICAgIG09YS5sZW5n dGg7DQogICAgbj1iLmxlbmd0aDsNCg0KICAgIGM9bmV3IEJpZ0ludCgpOw0K DQogICAgaWYgKG0+MCkgew0KICAgICAgaWYgKG4+MCkgew0KCS8vIEE+MCwg Qj4wDQoJYy5sZW5ndGg9bSsxOw0KCWMudmFsdWU9bmV3IGludFttKzFdOw0K CWMudmFsdWVbbV09ZG9BZGQoYS52YWx1ZSwwLG0sYi52YWx1ZSwwLG4sYy52 YWx1ZSwwKTsNCiAgICAgIH0gZWxzZSB7DQoJLy8gQT4wLCBCPDANCgljLmxl bmd0aD1tOw0KCWMudmFsdWU9bmV3IGludFttXTsNCglkb1N1YihhLnZhbHVl LDAsbSxiLnZhbHVlLDAsLW4sYy52YWx1ZSwwKTsgLy8gTm8gQm9ycm93DQog ICAgICB9DQogICAgfSBlbHNlIHsNCiAgICAgIGlmIChuPjApIHsNCgkvLyBB PDAsIEI+MA0KCWMubGVuZ3RoPW07DQoJYy52YWx1ZT1uZXcgaW50Wy1tXTsN Cglkb1N1YihhLnZhbHVlLDAsLW0sYi52YWx1ZSwwLG4sYy52YWx1ZSwwKTsg Ly8gTm8gQm9ycm93DQogICAgICB9IGVsc2Ugew0KCS8vIEE8MCwgQjwwDQog CWMubGVuZ3RoPS0oLW0rMSk7DQogCWMudmFsdWU9bmV3IGludFstbSsxXTsN CiAJYy52YWx1ZVstbV09ZG9BZGQoYS52YWx1ZSwwLC1tLGIudmFsdWUsMCwt bixjLnZhbHVlLDApOw0KICAgICAgfQ0KICAgIH0NCiAgICBjLnRyaW0oKTsN Cg0KICAgIHJldHVybiBjOw0KICB9DQoNCiAgcHVibGljIGZpbmFsIHZvaWQg YWRkKEJpZ0ludCBiKXsNCiAgICB0aGlzLmFzc2lnbihCaWdJbnQuYWRkKHRo aXMsYikpOw0KICB9DQoNCiAgcHVibGljIGZpbmFsIHZvaWQgYWRkKGludCBi KXsNCiAgICBpbnQgY2Fycnk7DQogICAgaW50IG0saTsNCiAgICBpbnQgW10g dGVtcDsNCg0KICAgIGlmIChiPT0tMjE0NzQ4MzY0OCkgew0KICAgICAgdGhp cy5hZGQobmV3IEJpZ0ludChiKSk7DQogICAgICByZXR1cm47DQogICAgfQ0K DQogICAgbT1NYXRoLmFicyhsZW5ndGgpOw0KDQogICAgaWYgKGI+MCkgew0K ICAgICAgY2Fycnk9ZG9BZGQodmFsdWUsMCxtLGIsdmFsdWUsMCk7DQogICAg ICBpZiAoY2FycnkhPTApIHsNCglpZiAobTx2YWx1ZS5sZW5ndGgpew0KCSAg dmFsdWVbbV09Y2Fycnk7CQ0KCX0gZWxzZSB7DQoJICB0ZW1wPW5ldyBpbnRb bSsxXTsNCgkgIC8vIGZvciAoaT0wO2k8bTtpKyspICB0ZW1wW2ldPXZhbHVl W2ldOw0KCSAgU3lzdGVtLmFycmF5Y29weSh2YWx1ZSwwLHRlbXAsMCxtKTsN CgkgIHRlbXBbbV09Y2Fycnk7DQoJICB2YWx1ZT10ZW1wOw0KCX0NCglpZiAo bGVuZ3RoPDApDQoJICBsZW5ndGgtLTsNCgllbHNlDQoJICBsZW5ndGgrKzsN CiAgICAgIH0NCiAgICB9IGVsc2Ugew0KICAgICAgY2Fycnk9ZG9TdWIodmFs dWUsMCxtLC1iLHZhbHVlLDApOw0KICAgICAgaWYgKGNhcnJ5PT0wKSB7IC8v IEJvcnJvdywgdGhpcyBCaWdJbnQgaXMgdGhlbiA8YiBpZS4gdmVyeSBzbWFs bC4NCgl2YWx1ZVswXT1iLXZhbHVlWzBdOw0KCWxlbmd0aD0tMTsNCiAgICAg IH0NCiAgICB9DQogICAgdHJpbSgpOw0KICB9DQoNCiAgcHVibGljIHN0YXRp YyBmaW5hbCBCaWdJbnQgc3ViKEJpZ0ludCBhLEJpZ0ludCBiKXsNCiAgICBC aWdJbnQgdG1wOw0KICAgIEJpZ0ludCBjOw0KICAgIGJvb2xlYW4gc3dhcHBl ZDsNCiAgICBpbnQgbSxuOw0KDQogICAgc3dhcHBlZD1mYWxzZTsNCiAgICBp ZiAoYS5pc0Fic0xlc3MoYikpIHsNCiAgICAgIHRtcD1iOw0KICAgICAgYj1h Ow0KICAgICAgYT10bXA7DQogICAgICBzd2FwcGVkPXRydWU7DQogICAgfQ0K ICAgIC8vIHxBfCA+PSB8QnwNCg0KDQogICAgbT1hLmxlbmd0aDsNCiAgICBu PWIubGVuZ3RoOw0KDQogICAgYz1uZXcgQmlnSW50KCk7DQoNCiAgICBpZiAo bT4wKSB7DQogICAgICBpZiAobj4wKSB7DQoJLy8gQT4wLCBCPjANCgljLmxl bmd0aD1tOw0KCWMudmFsdWU9bmV3IGludFttXTsNCglkb1N1YihhLnZhbHVl LDAsbSxiLnZhbHVlLDAsbixjLnZhbHVlLDApOyAvLyBObyBCb3Jyb3cNCiAg ICAgIH0gZWxzZSB7DQoJLy8gQT4wLCBCPDANCgljLmxlbmd0aD1tKzE7DQoJ Yy52YWx1ZT1uZXcgaW50W20rMV07DQoJYy52YWx1ZVttXT1kb0FkZChhLnZh bHVlLDAsbSxiLnZhbHVlLDAsLW4sYy52YWx1ZSwwKTsNCiAgICAgIH0NCiAg ICB9IGVsc2Ugew0KICAgICAgaWYgKG4+MCkgew0KCS8vIEE8MCwgQj4wDQog CWMubGVuZ3RoPS0oLW0rMSk7DQogCWMudmFsdWU9bmV3IGludFstbSsxXTsN CiAJYy52YWx1ZVstbV09ZG9BZGQoYS52YWx1ZSwwLC1tLGIudmFsdWUsMCxu LGMudmFsdWUsMCk7DQogICAgICB9IGVsc2Ugew0KCS8vIEE8MCwgQjwwDQoJ Yy5sZW5ndGg9bTsNCgljLnZhbHVlPW5ldyBpbnRbLW1dOw0KCWRvU3ViKGEu dmFsdWUsMCwtbSxiLnZhbHVlLDAsLW4sYy52YWx1ZSwwKTsgLy8gTm8gQm9y cm93DQogICAgICB9DQogICAgfQ0KICAgIGlmIChzd2FwcGVkKSB7DQogICAg ICBjLmxlbmd0aD0tYy5sZW5ndGg7DQogICAgfQ0KDQogICAgYy50cmltKCk7 DQogICAgDQogICAgcmV0dXJuIGM7DQogIH0NCg0KICBwdWJsaWMgZmluYWwg dm9pZCBzdWIoQmlnSW50IGIpIHsNCiAgICB0aGlzLmFzc2lnbihzdWIodGhp cyxiKSk7DQogIH0NCg0KICBwdWJsaWMgZmluYWwgdm9pZCBzdWIoaW50IGIp ew0KICAgIGlmIChiPT0tMjE0NzQ4MzY0OCkgDQogICAgICB0aGlzLnN1Yihu ZXcgQmlnSW50KGIpKTsNCiAgICBlbHNlDQogICAgICB0aGlzLmFkZCgtYik7 DQogIH0NCg0KICBwdWJsaWMgc3RhdGljIGZpbmFsIEJpZ0ludCBtdWx0KEJp Z0ludCBhLEJpZ0ludCBiKSB7DQogICAgQmlnSW50IGM7DQogICAgaW50IGks bSxuOw0KICAgIGludCBqOw0KICAgIGxvbmcgdGVtcCxjYXJyeSxtdWw7DQoN CiAgICBtPU1hdGguYWJzKGEubGVuZ3RoKTsNCiAgICBuPU1hdGguYWJzKGIu bGVuZ3RoKTsNCg0KICAgIGM9bmV3IEJpZ0ludCgpOw0KICAgIGMubGVuZ3Ro PW0rbjsNCiAgICBjLnZhbHVlPSBuZXcgaW50W20rbl07DQoNCiAgICBmb3Ig KGk9MDtpPG07aSsrKSB7DQogICAgICBjLnZhbHVlW2ldPTA7DQogICAgfQ0K DQogICAgZm9yIChpPTA7aTxuO2krKykgew0KICAgICAgbXVsPWIudmFsdWVb aV07DQoNCiAgICAgIGNhcnJ5PTA7DQogICAgICBmb3IgKGo9MDtqPG07aisr KSB7DQoJdGVtcD0gKChsb25nKSBhLnZhbHVlW2pdKSptdWwgKyAoKGxvbmcp Yy52YWx1ZVtqK2ldKSArIGNhcnJ5Ow0KCWMudmFsdWVbaitpXT0oaW50KSAo dGVtcCAmICgoMTw8MzEpLTEpKTsNCgljYXJyeT10ZW1wPj4+MzE7DQogICAg ICB9DQogICAgICANCiAgICAgIGMudmFsdWVbaSttXT0oaW50KSBjYXJyeTsN CiAgICB9DQoNCiAgICAvLyBGaXggc2lnbjoNCiAgICBpZiAoYS5sZW5ndGg8 MCkgew0KICAgICAgYy5sZW5ndGg9LWMubGVuZ3RoOw0KICAgIH0NCiAgICBp ZiAoYi5sZW5ndGg8MCkgew0KICAgICAgYy5sZW5ndGg9LWMubGVuZ3RoOw0K ICAgIH0NCg0KICAgIGMudHJpbSgpOw0KICAgIHJldHVybiBjOw0KICB9DQoN CiAgcHVibGljIGZpbmFsIHZvaWQgbXVsdChCaWdJbnQgYil7DQogICAgdGhp cy5hc3NpZ24oQmlnSW50Lm11bHQodGhpcyxiKSk7DQogIH0NCg0KICBwdWJs aWMgc3RhdGljIGZpbmFsIEJpZ0ludCBtdWx0KEJpZ0ludCBhLGludCBiKXsN CiAgICBCaWdJbnQgYzsNCiAgICBpbnQgaSxqLG07DQoNCiAgICBpZiAoYj09 LTIxNDc0ODM2NDgpIHsNCiAgICAgIHJldHVybiBCaWdJbnQubXVsdChhLG5l dyBCaWdJbnQoYikpOw0KICAgIH0NCg0KICAgIG09TWF0aC5hYnMoYS5sZW5n dGgpOw0KDQogICAgYz1uZXcgQmlnSW50KCk7DQogICAgYy5sZW5ndGg9bSsx Ow0KICAgIGMudmFsdWU9IG5ldyBpbnRbbSsxXTsNCg0KICAgIGMudmFsdWVb bV09ZG9NdWx0KGEudmFsdWUsMCxtLE1hdGguYWJzKGIpLGMudmFsdWUsMCk7 DQoNCiAgICAvLyBGaXggc2lnbjoNCiAgICBpZiAoYS5sZW5ndGg8MCkNCiAg ICAgIGMubGVuZ3RoPS1jLmxlbmd0aDsNCiAgICBpZiAoYjwwKSANCiAgICAg IGMubGVuZ3RoPS1jLmxlbmd0aDsNCg0KICAgIGMudHJpbSgpOw0KICAgIHJl dHVybiBjOw0KICB9DQoNCiAgcHVibGljIGZpbmFsIHZvaWQgbXVsdChpbnQg Yil7DQogICAgaW50IGksaixtOw0KICAgIGludCBjYXJyeTsNCiAgICBpbnQg W10gdGVtcDsNCg0KICAgIGlmIChiPT0tMjE0NzQ4MzY0OCkgew0KICAgICAg dGhpcy5hc3NpZ24oQmlnSW50Lm11bHQodGhpcyxuZXcgQmlnSW50KGIpKSk7 DQogICAgICByZXR1cm47DQogICAgfQ0KDQogICAgbT1NYXRoLmFicyhsZW5n dGgpOw0KICAgIGNhcnJ5PWRvTXVsdCh2YWx1ZSwwLG0sTWF0aC5hYnMoYiks dmFsdWUsMCk7DQoNCiAgICBpZiAoY2FycnkhPTApIHsNCiAgICAgIGlmICht PHZhbHVlLmxlbmd0aCl7DQoJdmFsdWVbbV09Y2Fycnk7CQ0KICAgICAgfSBl bHNlIHsNCgl0ZW1wPW5ldyBpbnRbbSsxXTsNCgkvLyBmb3IgKGk9MDtpPG07 aSsrKSAgdGVtcFtpXT12YWx1ZVtpXTsNCglTeXN0ZW0uYXJyYXljb3B5KHZh bHVlLDAsdGVtcCwwLG0pOw0KCXRlbXBbbV09Y2Fycnk7DQoJdmFsdWU9dGVt cDsNCiAgICAgIH0NCiAgICAgIGlmIChsZW5ndGg8MCkNCglsZW5ndGgtLTsN CiAgICAgIGVsc2UNCglsZW5ndGgrKzsNCiAgICB9DQoNCiAgICAvLyBGaXgg c2lnbjoNCiAgICBpZiAoYjwwKSANCiAgICAgIGxlbmd0aD0tbGVuZ3RoOw0K DQogICAgdHJpbSgpOw0KICB9DQoNCiAgLyoqIERpdmlzaW9uIGFuZCByZW1h aW5kZXIsDQogICAgY2FsY3VsYXRlcyBxICYgciBzbyB0aGF0OiBhPXEqYity LCB8cnw8fGJ8LCBzaWduKHIpPXNpZ24oYSkgDQogICAgKi8NCiAgcHVibGlj IHN0YXRpYyBmaW5hbCBpbnQgZGl2cmVtKEJpZ0ludCBhLGludCBiLEJpZ0lu dCBxT3V0KSANCiAgICAgICAgICAgICAgdGhyb3dzIEFyaXRobWV0aWNFeGNl cHRpb24gew0KICAgIGxvbmcgcmVtOw0KICAgIGludCBtOw0KICAgIGludCBb XSBxdW87DQoNCiAgICBpZiAoYj09MCkNCiAgICAgIHRocm93IG5ldyBBcml0 aG1ldGljRXhjZXB0aW9uKCJCaWdJbnQgZGl2aWRlIGJ5IFplcm8iKTsNCg0K ICAgIGlmIChiPT0tMjE0NzQ4MzY0OCkgew0KICAgICAgLy8gVGhpcyBpcyBh IG5vdCByZWFsbHkgYSBidWcsIHRoZW4gbmVnYXRpdmUgb2YgdGhpcyB2YWx1 ZSAgDQogICAgICAvLyBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgaW4gYW4gaW50 ID0+IHJlbWFpbmRlciBjYW5ub3QgZWl0aGVyLg0KICAgICAgLy8gPT4gVXNl IGxvbmctZGl2IQ0KICAgICAgdGhyb3cgbmV3IEFyaXRobWV0aWNFeGNlcHRp b24oIkRpdmlzaW9uIGJ5IC0yMTQ3NDgzNjQ4Iik7DQogICAgfQ0KDQogICAg bT1NYXRoLmFicyhhLmxlbmd0aCk7IA0KICAgIGlmICgocU91dC52YWx1ZT09 bnVsbCkgfHwgKHFPdXQudmFsdWUubGVuZ3RoPG0pKSB7DQogICAgICBxdW89 bmV3IGludFttXTsNCiAgICB9IGVsc2Ugew0KICAgICAgcXVvPXFPdXQudmFs dWU7DQogICAgfQ0KDQogICAgcmVtPWRvRGl2KGEudmFsdWUsMCxtLE1hdGgu YWJzKGIpLHF1bywwKTsNCg0KICAgIHFPdXQubGVuZ3RoPWEubGVuZ3RoOw0K ICAgIHFPdXQudmFsdWU9cXVvOw0KDQogICAgaWYgKGI8MCkNCiAgICAgIHFP dXQubGVuZ3RoPS1xT3V0Lmxlbmd0aDsNCiAgICANCiAgICBxT3V0LnRyaW0o KTsNCiAgIA0KICAgIGlmIChhLmxlbmd0aD4wKSB7DQogICAgICByZXR1cm4g KGludCkgcmVtOw0KICAgIH0gZWxzZSB7DQogICAgICByZXR1cm4gKGludCkg LXJlbTsNCiAgICB9DQogIH0NCg0KICBwdWJsaWMgZmluYWwgaW50IGRpdnJl bShpbnQgYikgDQogICAgICAgICAgICAgIHRocm93cyBBcml0aG1ldGljRXhj ZXB0aW9uIHsNCiAgICBsb25nIHJlbTsNCiAgICBpbnQgbTsNCg0KICAgIGlm IChiPT0wKQ0KICAgICAgdGhyb3cgbmV3IEFyaXRobWV0aWNFeGNlcHRpb24o IkJpZ0ludCBkaXZpZGUgYnkgWmVybyIpOw0KDQogICAgaWYgKGI9PS0yMTQ3 NDgzNjQ4KSB7DQogICAgICAvLyBUaGlzIGlzIGEgbm90IHJlYWxseSBhIGJ1 ZywgdGhlbiBuZWdhdGl2ZSBvZiB0aGlzIHZhbHVlICANCiAgICAgIC8vIGNh bm5vdCBiZSByZXByZXNlbnRlZCBpbiBhbiBpbnQgPT4gcmVtYWluZGVyIGNh bm5vdCBlaXRoZXIuDQogICAgICAvLyA9PiBVc2UgbG9uZy1kaXYhDQogICAg ICB0aHJvdyBuZXcgQXJpdGhtZXRpY0V4Y2VwdGlvbigiRGl2aXNpb24gYnkg LTIxNDc0ODM2NDgiKTsNCiAgICB9DQoNCiAgICBtPU1hdGguYWJzKGxlbmd0 aCk7IA0KICAgIHJlbT1kb0Rpdih2YWx1ZSwwLG0sTWF0aC5hYnMoYiksdmFs dWUsMCk7DQoNCiAgICBpZiAoYjwwKQ0KICAgICAgbGVuZ3RoPS1sZW5ndGg7 DQogICAgDQogICAgdHJpbSgpOw0KICAgDQogICAgaWYgKGxlbmd0aD4wKSB7 DQogICAgICByZXR1cm4gKGludCkgcmVtOw0KICAgIH0gZWxzZSB7DQogICAg ICByZXR1cm4gKGludCkgLXJlbTsNCiAgICB9DQogIH0NCg0KICAvKiogRGl2 aXNpb24gYW5kIHJlbWFpbmRlciwNCiAgICBjYWxjdWxhdGVzIHEgJiByIHNv IHRoYXQ6IGE9cSpiK3IsIHxyfDx8YnwsIHNpZ24ocik9c2lnbihhKSANCiAg ICANCiAgICBhIGdvb2QgdGVzdC1jYXNlOg0KICAgIDgyNzc4NDc2NzY0MTE2 NTQ5ODUxNDU0OTc3ODY3Nzc1OTk5LzQ5NTMyNTUwNjk3NTIwMzk0NzY2NjQ3 Mjk2MDANCiAgICA9PSAxNjcxMTkzNCwgNDk1MzI1NTA2OTc1MjAzOTQ3NjY2 NDcyOTU5OQ0KICAgIGV4ZXJjaXNlcyBzb21lIHNlbGRvbS11c2VkIHBhcnRz IG9mIHRoZSBjb2RlDQogICAgKi8NCiAgcHVibGljIHN0YXRpYyBmaW5hbCB2 b2lkIGRpdnJlbShCaWdJbnQgYSxCaWdJbnQgYixCaWdJbnQgcU91dCwgQmln SW50IHJPdXQpDQogICAgICAgdGhyb3dzIEFyaXRobWV0aWNFeGNlcHRpb24g ew0KICAgIGludCBbXSB1Ow0KICAgIGludCBbXSB2Ow0KICAgIGludCBbXSBy ZXM7DQogICAgaW50IGksaixtLG47DQogICAgbG9uZyB0ZW1wLHEscixkOw0K DQogICAgaWYgKGIuaXNaZXJvKCkpDQogICAgICB0aHJvdyBuZXcgQXJpdGht ZXRpY0V4Y2VwdGlvbigiQmlnSW50IGRpdmlkZSBieSBaZXJvIik7DQoNCiAg ICBpZiAoYT09Yikgew0KICAgICAgcU91dC5hc3NpZ24obmV3IEJpZ0ludCgx KSk7DQogICAgICByT3V0LmFzc2lnbihuZXcgQmlnSW50KDApKTsNCiAgICAg IHJldHVybjsNCiAgICB9DQoNCiAgICBpZiAoYi5sZW5ndGg9PTEpIHsNCiAg ICAgIGk9ZGl2cmVtKGEsYi52YWx1ZVswXSxxT3V0KTsNCiAgICAgIHJPdXQu YXNzaWduKG5ldyBCaWdJbnQoaSkpOw0KICAgICAgcmV0dXJuOw0KICAgIH0N CiAgICBpZiAoYi5sZW5ndGg9PS0xKSB7DQogICAgICBpPWRpdnJlbShhLC1i LnZhbHVlWzBdLHFPdXQpOw0KICAgICAgck91dC5hc3NpZ24obmV3IEJpZ0lu dChpKSk7DQogICAgICByZXR1cm47DQogICAgfQ0KDQogICAgaWYgKGEuaXNB YnNMZXNzKGIpKSB7IC8qIGEvYj0wIGElYj1hICovDQogICAgICBxT3V0LmFz c2lnbihuZXcgQmlnSW50KDApKTsNCiAgICAgIHJPdXQuYXNzaWduKGEpOw0K ICAgICAgcmV0dXJuOw0KICAgIH0NCg0KICAgIG09TWF0aC5hYnMoYS5sZW5n dGgpOw0KICAgIG49TWF0aC5hYnMoYi5sZW5ndGgpOw0KDQogICAgdSA9IG5l dyBpbnRbbSsxXTsNCiAgICB2ID0gbmV3IGludFtuXTsNCiAgICByZXMgPSBu ZXcgaW50W20tbisxXTsNCiAgICANCiAgICAvKiBDYWxjdWxhdGUgZDogKi8N CiAgICBkPSgxTDw8MzEpLygobG9uZyliLnZhbHVlW24tMV0rMSk7DQogICAg DQogICAgaWYgKGQhPTEpIHsNCiAgICAgIC8qIHU9dSpkICovDQogICAgICB1 W21dPWRvTXVsdChhLnZhbHVlLDAsbSwoaW50KWQsdSwwKTsNCg0KICAgICAg Lyogdj12KmQgKi8NCiAgICAgIGRvTXVsdChiLnZhbHVlLDAsbiwoaW50KWQs diwwKTsgLy8gTmV2ZXIgYW55IGNhcnJ5DQogICAgfSBlbHNlIHsNCiAgICAg IGZvciAoaT0wO2k8bTtpKyspIHsNCgl1W2ldPWEudmFsdWVbaV07DQogICAg ICB9DQogICAgICB1W21dPTA7DQogICAgICBmb3IgKGk9MDtpPG47aSsrKSB7 DQoJdltpXT1iLnZhbHVlW2ldOw0KICAgICAgfQ0KICAgIH0NCg0KICAgIA0K ICAgIC8qIExvb3AgKi8NCiAgICBmb3IgKGo9bTtqPj1uO2otLSkgew0KICAg ICAgLyogZ3Vlc3MgcV46ICovDQoNCiAgICAgIHRlbXA9KCgobG9uZyl1W2pd KTw8MzEpKygobG9uZyl1W2otMV0pOw0KICAgICAgaWYgKHVbal09PXZbbi0x XSkgew0KCXE9KDFMPDwzMSktMTsNCglyPXVbai0xXSt2W24tMV07DQoJU3lz dGVtLm91dC5wcmludGxuKCJHdWVzc2VkIHFePWItMT0iK3EpOw0KICAgICAg fSBlbHNlIHsNCglxPXRlbXAvdltuLTFdOw0KCXI9dGVtcCV2W24tMV07DQog ICAgICB9DQogICAgICANCiAgICAgIHdoaWxlICggKCgobG9uZyl2W24tMl0p KnEpID4gKChyPDwzMSkrdVtqLTJdKSkgew0KCXEtLTsNCglyKz12W24tMV07 DQogICAgICB9DQogICAgICANCiAgICAgIC8qIG11bHRpcGx5IGFuZCBzdWJ0 cmFjdCB1W2ouLmotbl0tcV4qdltuLTEuLjBdOyAqLw0KICAgICAgaWYgKEJp Z0ludC5kb011bHRTdWIodSxqLW4sbisxLHYsMCxuLChpbnQpIHEpPT0wKSB7 DQoJLy8gcSB3YXMgdG8gbGFyZ2UNCglxLS07DQoJLy8gYWRkIDAudltuLTEu LjBdIHRvIHVbai4uai1uXQ0KCWRvQWRkKHUsai1uLG4rMSx2LDAsbix1LGot bik7IC8vIElnbm9yZSBjYXJyeSwgaXQgY2FuY2VscyB0aGUgYm9ycm93DQoJ U3lzdGVtLm91dC5wcmludGxuKCJZZWFoISBUcmllZCBoYXJkIHBhcnQiKTsN CiAgICAgIH0NCiAgICAgIHJlc1tqLW5dPShpbnQpIHE7DQogICAgfQ0KDQog ICAgcU91dC52YWx1ZT1yZXM7DQogICAgcU91dC5sZW5ndGg9bS1uKzE7DQog ICAgaWYgKGEubGVuZ3RoPDApDQogICAgICBxT3V0Lmxlbmd0aD0tcU91dC5s ZW5ndGg7DQogICAgaWYgKGIubGVuZ3RoPDApDQogICAgICBxT3V0Lmxlbmd0 aD0tcU91dC5sZW5ndGg7DQoNCiAgICBxT3V0LnRyaW0oKTsNCg0KICAgIGlm IChhLmxlbmd0aD4wKSB7DQogICAgICByT3V0Lmxlbmd0aD1uOw0KICAgIH0g ZWxzZSB7DQogICAgICByT3V0Lmxlbmd0aD0tbjsNCiAgICB9DQogICAgck91 dC52YWx1ZT1uZXcgaW50W25dOw0KICAgIGlmIChkb0Rpdih1LDAsbiwoaW50 KWQsck91dC52YWx1ZSwwKSE9MCkgew0KICAgICAgU3lzdGVtLm91dC5wcmlu dGxuKCJEaXYgRXJyb3I6IHJlbWFpbmRlciB3YXMgbm90IG11bHRpcGxlIG9m IGQhISIpOw0KICAgIH0NCiAgICByT3V0LnRyaW0oKTsNCiAgfQ0KDQogIHB1 YmxpYyBmaW5hbCBCaWdJbnQgZGl2KEJpZ0ludCBiKSB0aHJvd3MgQXJpdGht ZXRpY0V4Y2VwdGlvbiB7DQogICAgQmlnSW50IHEscjsNCiAgICByPW5ldyBC aWdJbnQoKTsNCiAgICBCaWdJbnQuZGl2cmVtKHRoaXMsYix0aGlzLHIpOw0K ICAgIHJldHVybiByOw0KICB9DQoNCiAgcHVibGljIHN0YXRpYyBmaW5hbCBC aWdJbnQgcmVtKEJpZ0ludCBhLEJpZ0ludCBiKSB0aHJvd3MgQXJpdGhtZXRp Y0V4Y2VwdGlvbnsNCiAgICBCaWdJbnQgcSxyOw0KICAgIHE9bmV3IEJpZ0lu dCgpOw0KICAgIHI9bmV3IEJpZ0ludCgpOw0KICAgIEJpZ0ludC5kaXZyZW0o YSxiLHEscik7DQogICAgcmV0dXJuIHI7DQogIH0NCg0KICBwdWJsaWMgZmlu YWwgQmlnSW50IHBvdyhCaWdJbnQgYikgdGhyb3dzIEFyaXRobWV0aWNFeGNl cHRpb24gew0KICAgIC8vIE5vdCBJbXBsZW1lbnRlZA0KICAgIHJldHVybiBu ZXcgQmlnSW50KCk7DQogIH0NCg0KICBwdWJsaWMgc3RhdGljIGZpbmFsIEJp Z0ludCBhYnMoQmlnSW50IGEpIHsNCiAgICBCaWdJbnQgeDsNCiAgICB4PShC aWdJbnQpIGEuY2xvbmUoKTsNCiAgICBpZiAoeC5sZW5ndGg8MCkNCiAgICAg IHgubGVuZ3RoPS14Lmxlbmd0aDsNCiAgICByZXR1cm4geDsNCiAgfQ0KDQog IHB1YmxpYyBmaW5hbCB2b2lkIGFicygpIHsNCiAgICBpZiAobGVuZ3RoPDAp DQogICAgICBsZW5ndGg9LWxlbmd0aDsNCiAgfQ0KDQogIHB1YmxpYyBzdGF0 aWMgZmluYWwgQmlnSW50IG5lZyhCaWdJbnQgYSkgew0KICAgIEJpZ0ludCB4 Ow0KICAgIHg9KEJpZ0ludCkgYS5jbG9uZSgpOw0KICAgIHgubGVuZ3RoPS14 Lmxlbmd0aDsNCiAgICByZXR1cm4geDsNCiAgfQ0KDQogIHB1YmxpYyBmaW5h bCB2b2lkIG5lZygpIHsNCiAgICBsZW5ndGg9LWxlbmd0aDsNCiAgfQ0KDQog IHB1YmxpYyBzdGF0aWMgZmluYWwgQmlnSW50IHNpZ24oQmlnSW50IGEpIHsN CiAgICBpZiAoYS5sZW5ndGg+MCkNCiAgICAgIHJldHVybiBuZXcgQmlnSW50 KDEpOw0KICAgIGVsc2UNCiAgICAgIHJldHVybiBuZXcgQmlnSW50KC0xKTsN CiAgfQ0KDQogIHB1YmxpYyBmaW5hbCBTdHJpbmcgdG9TdHJpbmcoKSB7DQog ICAgaW50IGksaixzdGFydCxsZW47DQogICAgY2hhciBbXSBidWZmZXI7DQog ICAgY2hhciB0ZW1wOw0KICAgIEJpZ0ludCByZXN0Ow0KICAgIGludCBkaWdp dHM7DQogICAgYm9vbGVhbiBmaW5pc2hlZDsNCg0KICAgIGlmIChpc1plcm8o KSkgew0KICAgICAgcmV0dXJuICIwIjsNCiAgICB9DQogICAgDQogICAgYnVm ZmVyPSBuZXcgY2hhclsxMCpNYXRoLmFicyhsZW5ndGgpKzFdOw0KDQogICAg aT0wOw0KDQogICAgaWYgKGxlbmd0aDwwKSB7DQogICAgICBidWZmZXJbaSsr XT0nLSc7DQogICAgfQ0KICAgIHN0YXJ0PWk7DQoNCiAgICByZXN0PShCaWdJ bnQpIHRoaXMuY2xvbmUoKTsNCiAgICByZXN0LmFicygpOw0KICAgIGRvIHsN CiAgICAgIGRpZ2l0cz1CaWdJbnQuZGl2cmVtKHJlc3QsMTAwMDAwMDAwMCxy ZXN0KTsNCiAgICAgIGZpbmlzaGVkPXJlc3QuaXNaZXJvKCk7DQogICAgICBp ZiAoZmluaXNoZWQpIHsNCgl3aGlsZSAoZGlnaXRzIT0wKSB7DQoJICBidWZm ZXJbaSsrXT0oY2hhcikgKCcwJytkaWdpdHMlMTApOw0KCSAgZGlnaXRzLz0x MDsNCgl9DQogICAgICB9IGVsc2Ugew0KCWZvciAoaj0wO2o8OTtqKyspIHsN CgkgIGJ1ZmZlcltpKytdPShjaGFyKSAoJzAnK2RpZ2l0cyUxMCk7DQoJICBk aWdpdHMvPTEwOw0KCX0NCiAgICAgIH0NCiAgICB9IHdoaWxlKCFmaW5pc2hl ZCk7DQogICAgbGVuPWktc3RhcnQ7DQogICAgZm9yIChpPTA7aTwobGVuLzIp O2krKykgew0KICAgICAgdGVtcD1idWZmZXJbc3RhcnQraV07DQogICAgICBi dWZmZXJbc3RhcnQraV09YnVmZmVyW3N0YXJ0K2xlbi0xLWldOw0KICAgICAg YnVmZmVyW3N0YXJ0K2xlbi0xLWldPXRlbXA7DQogICAgfQ0KICAgIHJldHVy biBuZXcgU3RyaW5nKGJ1ZmZlciwwLHN0YXJ0K2xlbik7DQogIH0NCg0KICBw dWJsaWMgZmluYWwgU3RyaW5nIHRvSGV4U3RyaW5nKCkgew0KICAgIGludCBp LGxlbjsNCg0KICAgIFN0cmluZ0J1ZmZlciByZXM7DQogICAgcmVzID0gbmV3 IFN0cmluZ0J1ZmZlcigpOw0KDQogICAgbGVuPU1hdGguYWJzKGxlbmd0aCk7 DQogICAgaWYgKGxlbmd0aDwwKSANCiAgICAgIHJlcy5hcHBlbmQoJy0nKTsN Cg0KICAgIGZvciAoaT1sZW4tMTtpPj0wO2ktLSkgew0KICAgICAgcmVzLmFw cGVuZCgiMHgiK0ludGVnZXIudG9TdHJpbmcodmFsdWVbaV0sMTYpKTsNCiAg ICAgIGlmIChpPjApIA0KCXJlcy5hcHBlbmQoJywnKTsNCiAgICB9DQogICAg cmV0dXJuIHJlcy50b1N0cmluZygpOw0KICB9DQoNCiAgLy8gQm9vbGVhbg0K ICBwdWJsaWMgZmluYWwgYm9vbGVhbiBpc1plcm8oKSB7DQogICAgaWYgKGxl bmd0aCE9MSkNCiAgICAgIHJldHVybiBmYWxzZTsNCiAgICByZXR1cm4gKHZh bHVlWzBdPT0wKTsNCiAgfQ0KICBwdWJsaWMgZmluYWwgYm9vbGVhbiBpc09u ZSgpIHsNCiAgICBpZiAobGVuZ3RoIT0xKQ0KICAgICAgcmV0dXJuIGZhbHNl Ow0KICAgIHJldHVybiAodmFsdWVbMF09PTEpOw0KICB9DQogIHB1YmxpYyBm aW5hbCBib29sZWFuIGlzUG9zaXRpdmUoKSB7DQogICAgcmV0dXJuIChsZW5n dGg+MCk7DQogIH0NCiAgcHVibGljIGZpbmFsIGJvb2xlYW4gaXNOZWdhdGl2 ZSgpIHsNCiAgICByZXR1cm4gKGxlbmd0aDwwKTsNCiAgfQ0KICBwdWJsaWMg ZmluYWwgYm9vbGVhbiBpc0xlc3MoQmlnSW50IGIpIHsNCiAgICByZXR1cm4g IWlzR3JlYXRlck9yRXF1YWwoYik7DQogIH0NCiAgcHVibGljIGZpbmFsIGJv b2xlYW4gaXNMZXNzT3JFcXVhbChCaWdJbnQgYikgew0KICAgIHJldHVybiAh aXNHcmVhdGVyKGIpOw0KICB9DQogIHB1YmxpYyBmaW5hbCBib29sZWFuIGlz R3JlYXRlcihCaWdJbnQgYikgew0KICAgIGludCBpOw0KICAgIGludCBtLG47 DQogICAgbT10aGlzLmxlbmd0aDsNCiAgICBuPWIubGVuZ3RoOw0KDQogICAg aWYgKChtPDApICYmIChuPDApKSB7DQogICAgICBpZiAobT5uKQ0KCXJldHVy biBmYWxzZTsNCiAgICAgIGlmIChtPG4pDQoJcmV0dXJuIHRydWU7DQogICAg ICAvLyBtPT1uLCBuZWdhdGl2ZQ0KDQogICAgICBpPW0tMTsNCiAgICAgIHdo aWxlICgoaT4wKSAmJiAodGhpcy52YWx1ZVtpXT09Yi52YWx1ZVtpXSkpIA0K CWktLTsNCiAgICAgIHJldHVybiAodGhpcy52YWx1ZVtpXTxiLnZhbHVlW2ld KTsNCg0KICAgIH0gZWxzZSB7DQogICAgICBpZiAobT5uKQ0KCXJldHVybiB0 cnVlOw0KICAgICAgaWYgKG08bikNCglyZXR1cm4gZmFsc2U7DQogICAgICAv LyBtPT1uLCBwb3NpdGl2ZQ0KICAgICAgDQogICAgICBpPW0tMTsNCiAgICAg IHdoaWxlICgoaT4wKSAmJiAodGhpcy52YWx1ZVtpXT09Yi52YWx1ZVtpXSkp IA0KCWktLTsNCiAgICAgIHJldHVybiAodGhpcy52YWx1ZVtpXT5iLnZhbHVl W2ldKTsNCiAgICB9DQogIH0NCg0KICBwdWJsaWMgZmluYWwgYm9vbGVhbiBp c0dyZWF0ZXJPckVxdWFsKEJpZ0ludCBiKSB7DQogICAgaW50IGk7DQogICAg aW50IG0sbjsNCiAgICBtPXRoaXMubGVuZ3RoOw0KICAgIG49Yi5sZW5ndGg7 DQoNCiAgICBpZiAoKG08MCkgJiYgKG48MCkpIHsNCiAgICAgIGlmIChtPm4p DQoJcmV0dXJuIGZhbHNlOw0KICAgICAgaWYgKG08bikNCglyZXR1cm4gdHJ1 ZTsNCiAgICAgIC8vIG09PW4sIG5lZ2F0aXZlDQoNCiAgICAgIGk9bS0xOw0K ICAgICAgd2hpbGUgKChpPjApICYmICh0aGlzLnZhbHVlW2ldPT1iLnZhbHVl W2ldKSkgDQoJaS0tOw0KICAgICAgcmV0dXJuICh0aGlzLnZhbHVlW2ldPD1i LnZhbHVlW2ldKTsNCg0KICAgIH0gZWxzZSB7DQogICAgICBpZiAobT5uKQ0K CXJldHVybiB0cnVlOw0KICAgICAgaWYgKG08bikNCglyZXR1cm4gZmFsc2U7 DQogICAgICAvLyBtPT1uLCBwb3NpdGl2ZQ0KICAgICAgDQogICAgICBpPW0t MTsNCiAgICAgIHdoaWxlICgoaT4wKSAmJiAodGhpcy52YWx1ZVtpXT09Yi52 YWx1ZVtpXSkpIA0KCWktLTsNCiAgICAgIHJldHVybiAodGhpcy52YWx1ZVtp XT49Yi52YWx1ZVtpXSk7DQogICAgfQ0KICB9DQogIHB1YmxpYyBmaW5hbCBi b29sZWFuIGlzQWJzTGVzcyhCaWdJbnQgYikgew0KICAgIHJldHVybiAhaXNB YnNHcmVhdGVyT3JFcXVhbChiKTsNCiAgfQ0KICBwdWJsaWMgZmluYWwgYm9v bGVhbiBpc0Fic0xlc3NPckVxdWFsKEJpZ0ludCBiKSB7DQogICAgcmV0dXJu ICFpc0Fic0dyZWF0ZXIoYik7DQogIH0NCiAgcHVibGljIGZpbmFsIGJvb2xl YW4gaXNBYnNHcmVhdGVyKEJpZ0ludCBiKSB7DQogICAgaW50IGk7DQogICAg aW50IG0sbjsNCiAgICBtPU1hdGguYWJzKHRoaXMubGVuZ3RoKTsNCiAgICBu PU1hdGguYWJzKGIubGVuZ3RoKTsNCg0KICAgIGlmIChtPm4pDQogICAgICBy ZXR1cm4gdHJ1ZTsNCiAgICBpZiAobTxuKQ0KICAgICAgcmV0dXJuIGZhbHNl Ow0KICAgIC8vIG09PW4NCg0KICAgIGk9bS0xOw0KICAgIHdoaWxlICgoaT4w KSAmJiAodGhpcy52YWx1ZVtpXT09Yi52YWx1ZVtpXSkpIA0KICAgICAgaS0t Ow0KICAgIHJldHVybiAodGhpcy52YWx1ZVtpXT5iLnZhbHVlW2ldKTsNCiAg fQ0KDQogIHB1YmxpYyBmaW5hbCBib29sZWFuIGlzQWJzR3JlYXRlck9yRXF1 YWwoQmlnSW50IGIpIHsNCiAgICBpbnQgaTsNCiAgICBpbnQgbSxuOw0KICAg IG09TWF0aC5hYnModGhpcy5sZW5ndGgpOw0KICAgIG49TWF0aC5hYnMoYi5s ZW5ndGgpOw0KDQogICAgaWYgKG0+bikNCiAgICAgIHJldHVybiB0cnVlOw0K ICAgIGlmIChtPG4pDQogICAgICByZXR1cm4gZmFsc2U7DQogICAgLy8gbT09 bg0KDQogICAgaT1tLTE7DQogICAgd2hpbGUgKChpPjApICYmICh0aGlzLnZh bHVlW2ldPT1iLnZhbHVlW2ldKSkgDQogICAgICBpLS07DQogICAgcmV0dXJu ICh0aGlzLnZhbHVlW2ldPj1iLnZhbHVlW2ldKTsNCiAgfQ0KDQogIHB1Ymxp YyBmaW5hbCBib29sZWFuIGlzRXF1YWwoQmlnSW50IGIpIHsNCiAgICBpbnQg bSxuLGk7DQogICAgbT10aGlzLmxlbmd0aDsNCiAgICBuPWIubGVuZ3RoOw0K DQogICAgaWYgKG0hPW4pDQogICAgICByZXR1cm4gZmFsc2U7DQoNCiAgICBt PU1hdGguYWJzKG0pOw0KICAgDQogICAgZm9yIChpPW0tMTtpPj0wO2ktLSkg ew0KICAgICAgaWYgKHRoaXMudmFsdWVbaV0hPWIudmFsdWVbaV0pDQoJcmV0 dXJuIGZhbHNlOw0KICAgIH0NCiAgICByZXR1cm4gdHJ1ZTsNCiAgfQ0KDQov LyBQcml2YXRlIENvbnN0cnVjdG9ycw0KICBwcml2YXRlIEJpZ0ludCgpIHsN CiAgICAvLyBFbXB0eSBjb25zdHJ1Y3Rvci4NCiAgfQ0KLy8gUHJpdmF0ZSBD bGFzcyBmdW5jdGlvbnMNCiAgcHJpdmF0ZSBmaW5hbCBzdGF0aWMgaW50IGRv QWRkKGludCBbXSBhLGludCBhc3RhcnQsaW50IGFsZW4sDQoJICAgICAgICAg ICAgICAgICAgICBpbnQgW10gYixpbnQgYnN0YXJ0LGludCBibGVuLA0KCQkJ ICAgIGludCBbXSBjLGludCBjc3RhcnQpIHsNCiAgICAvLyBhZGRzIG51bWJl cnMsIGFsZW4+PWJsZW4uIHJldHVybnMgY2FycnkNCiAgICAvLyBjIG11c3Qg aGF2ZSBzcGFjZSBmb3IgYWxlbiBkaWdpdHMuDQogICAgLy8gTm90ZTogaXRz IG9rIGZvciBhIGFuZCBjIHRvIGJlIGVxdWFsIGlmZiBjc3RhcnQ8PWFzdGFy dA0KICAgIGludCBpOw0KICAgIGxvbmcgY2FycnksdGVtcDsNCg0KICAgIGNh cnJ5PTA7DQogICAgZm9yIChpPTA7aTxibGVuO2krKykgew0KICAgICAgdGVt cD0oKGxvbmcpYVtpK2FzdGFydF0pKygobG9uZyliW2krYnN0YXJ0XSkrY2Fy cnk7DQogICAgICBjW2krY3N0YXJ0XT0oaW50KSAodGVtcCAmICgoMTw8MzEp LTEpKTsNCiAgICAgIGNhcnJ5PXRlbXA+PjMxOw0KICAgIH0NCiAgICBmb3Ig KDtpPGFsZW47aSsrKSB7DQogICAgICB0ZW1wPSgobG9uZylhW2krYXN0YXJ0 XSkrY2Fycnk7DQogICAgICBjW2krY3N0YXJ0XT0oaW50KSAodGVtcCAmICgo MTw8MzEpLTEpKTsNCiAgICAgIGNhcnJ5PXRlbXA+PjMxOw0KICAgIH0NCiAg ICByZXR1cm4gKGludCkgY2Fycnk7DQogIH0NCg0KICBwcml2YXRlIGZpbmFs IHN0YXRpYyBpbnQgZG9BZGQoaW50IFtdIGEsaW50IGFzdGFydCxpbnQgYWxl bixpbnQgYiwNCgkJCSAgICBpbnQgW10gYyxpbnQgY3N0YXJ0KSB7DQogICAg Ly8gYWRkcyBudW1iZXJzLiByZXR1cm5zIGNhcnJ5DQogICAgLy8gYyBtdXN0 IGhhdmUgc3BhY2UgZm9yIGFsZW4gZGlnaXRzLg0KICAgIC8vIE5vdGU6IGl0 cyBvayBmb3IgYSBhbmQgYyB0byBiZSBlcXVhbCBpZmYgY3N0YXJ0PD1hc3Rh cnQNCiAgICBpbnQgaTsNCiAgICBsb25nIGNhcnJ5LHRlbXA7DQoNCiAgICB0 ZW1wPSgobG9uZylhW2FzdGFydF0pKyhsb25nKWI7DQogICAgY1tjc3RhcnRd PShpbnQpICh0ZW1wICYgKCgxPDwzMSktMSkpOw0KICAgIGNhcnJ5PXRlbXA+ PjMxOw0KICAgIGZvciAoaT0xO2k8YWxlbjtpKyspIHsNCiAgICAgIHRlbXA9 KChsb25nKWFbaSthc3RhcnRdKStjYXJyeTsNCiAgICAgIGNbaStjc3RhcnRd PShpbnQpICh0ZW1wICYgKCgxPDwzMSktMSkpOw0KICAgICAgY2Fycnk9dGVt cD4+MzE7DQogICAgfQ0KICAgIHJldHVybiAoaW50KSBjYXJyeTsNCiAgfQ0K DQogIHByaXZhdGUgZmluYWwgc3RhdGljIGludCBkb1N1YihpbnQgW10gYSxp bnQgYXN0YXJ0LGludCBhbGVuLA0KCSAgICAgICAgICAgICAgICAgICAgaW50 IFtdIGIsaW50IGJzdGFydCxpbnQgYmxlbiwNCgkJCSAgICBpbnQgW10gYyxp bnQgY3N0YXJ0KSB7DQogICAgLy8gc3VidHJhY3RzIG51bWJlcnMsIGFsZW4+ PWJsZW4uDQogICAgLy8gcmV0dXJucyBib3Jyb3cuICgxPXBvc2l0aXZlIHJl c3VsdCwgMD1uZWdhdGl2ZSwoYyBpcyAyLWNvbXBsZW1lbnQpDQogICAgLy8g YyBtdXN0IGhhdmUgc3BhY2UgZm9yIGFsZW4gZGlnaXRzLg0KICAgIC8vIE5v dGU6IGl0cyBvayBmb3IgYSBhbmQgYyB0byBiZSBlcXVhbCBpZmYgY3N0YXJ0 PD1hc3RhcnQNCiAgICANCiAgICBpbnQgaTsNCiAgICBsb25nIGJvcnJvdyx0 ZW1wOw0KDQogICAgYm9ycm93PTE7DQogICAgZm9yIChpPTA7aTxibGVuO2kr Kykgew0KICAgICAgdGVtcD0oKGxvbmcpYVtpK2FzdGFydF0pLSgobG9uZyli W2krYnN0YXJ0XSkrYm9ycm93KygxTDw8MzEpLTE7DQogICAgICBjW2krY3N0 YXJ0XT0oaW50KSAodGVtcCAmICgoMTw8MzEpLTEpKTsNCiAgICAgIGJvcnJv dz10ZW1wPj4zMTsNCiAgICB9DQogICAgZm9yICg7aTxhbGVuO2krKykgew0K ICAgICAgdGVtcD1hW2krYXN0YXJ0XStib3Jyb3crKDFMPDwzMSktMTsNCiAg ICAgIGNbaStjc3RhcnRdPShpbnQpICh0ZW1wICYgKCgxPDwzMSktMSkpOw0K ICAgICAgYm9ycm93PXRlbXA+PjMxOw0KICAgIH0NCg0KICAgIHJldHVybiAo aW50KSBib3Jyb3c7DQogIH0NCg0KICBwcml2YXRlIGZpbmFsIHN0YXRpYyBp bnQgZG9TdWIoaW50IFtdIGEsaW50IGFzdGFydCxpbnQgYWxlbixpbnQgYiwN CgkJCSAgICBpbnQgW10gYyxpbnQgY3N0YXJ0KSB7DQogICAgLy8gYWRkcyBu dW1iZXJzLiByZXR1cm5zIGJvcnJvdyAoMD1ib3Jyb3csMT1ubyBib3Jyb3cp DQogICAgLy8gYyBtdXN0IGhhdmUgc3BhY2UgZm9yIGFsZW4gZGlnaXRzLg0K ICAgIC8vIE5vdGU6IGl0cyBvayBmb3IgYSBhbmQgYyB0byBiZSBlcXVhbCBp ZmYgY3N0YXJ0PD1hc3RhcnQNCiAgICBpbnQgaTsNCiAgICBsb25nIGJvcnJv dyx0ZW1wOw0KDQogICAgdGVtcD0oKGxvbmcpYVthc3RhcnRdKS0oKGxvbmcp YikrMSsoMUw8PDMxKS0xOw0KICAgIGNbY3N0YXJ0XT0oaW50KSAodGVtcCAm ICgoMTw8MzEpLTEpKTsNCiAgICBib3Jyb3c9dGVtcD4+MzE7DQogICAgZm9y IChpPTE7aTxhbGVuO2krKykgew0KICAgICAgdGVtcD0oKGxvbmcpYVtpK2Fz dGFydF0pK2JvcnJvdysoMUw8PDMxKS0xOw0KICAgICAgY1tpK2NzdGFydF09 KGludCkgKHRlbXAgJiAoKDE8PDMxKS0xKSk7DQogICAgICBib3Jyb3c9dGVt cD4+MzE7DQogICAgfQ0KICAgIHJldHVybiAoaW50KSBib3Jyb3c7DQogIH0N Cg0KICBwcml2YXRlIGZpbmFsIHN0YXRpYyBpbnQgZG9NdWx0KGludCBbXSBh LGludCBhc3RhcnQsaW50IGFsZW4saW50IGIsDQoJCQkJICBpbnQgW10gYyxp bnQgY3N0YXJ0KSB7DQogICAgLy8gQz1BKmIsIGI+MCwgbWF5IG92ZXJsYXAg aWZmIGNzdGFydDw9YXN0YXJ0DQogICAgLy8gYyBtdXN0IGhhdmUgc3BhY2Ug Zm9yIGFsZW4gZGlnaXRzDQogICAgLy8gY2FycnkgaXMgcmV0dXJuZWQNCiAg ICBpbnQgaTsNCiAgICBsb25nIHRlbXAsY2Fycnk7DQogICAgbG9uZyBkOw0K DQogICAgZD1iOw0KDQogICAgY2Fycnk9MDsNCiAgICBmb3IgKGk9MDtpPGFs ZW47aSsrKSB7DQogICAgICB0ZW1wPSAoKGxvbmcpIGFbaSthc3RhcnRdKSpk ICsgY2Fycnk7DQogICAgICBjW2krY3N0YXJ0XT0oaW50KSAodGVtcCAmICgo MUw8PDMxKS0xKSk7DQogICAgICBjYXJyeT10ZW1wPj4+MzE7DQogICAgfQ0K ICAgIHJldHVybiAoaW50KSBjYXJyeTsNCiAgfQ0KDQogIHByaXZhdGUgZmlu YWwgc3RhdGljIGludCBkb0RpdihpbnQgW10gYSxpbnQgYXN0YXJ0LGludCBh bGVuLGludCBiLA0KCQkJCSBpbnQgW10gYyxpbnQgY3N0YXJ0KSB7DQogICAg Ly8gQz1BL2IsIGI+MCwgbWF5IG92ZXJsYXAgaWZmIGNzdGFydD49YXN0YXJ0 DQogICAgLy8gYyBtdXN0IGhhdmUgc3BhY2UgZm9yIGFsZW4gZGlnaXRzDQog ICAgLy8gcmVtYWluZGVyIGlzIHJldHVybmVkDQogICAgaW50IGk7DQogICAg bG9uZyB0ZW1wLGNhcnJ5Ow0KICAgIGxvbmcgZDsNCg0KICAgIGQ9YjsNCg0K ICAgIGNhcnJ5PTA7DQogICAgZm9yIChpPWFsZW4tMTtpPj0wO2ktLSkgew0K ICAgICAgdGVtcD0gKGNhcnJ5PDwzMSkgKyAoKGxvbmcpIGFbaSthc3RhcnRd KTsNCiAgICAgIGNbaStjc3RhcnRdPShpbnQpICh0ZW1wL2QpOw0KICAgICAg Y2Fycnk9dGVtcCVkOw0KICAgIH0NCiAgICByZXR1cm4gKGludCkgY2Fycnk7 DQogIH0NCg0KICBwcml2YXRlIGZpbmFsIHN0YXRpYyBpbnQgZG9NdWx0QWRk KGludCBbXSBhLGludCBhc3RhcnQsaW50IGFsZW4saW50IGIsDQoJCQkJICAg ICBpbnQgW10gYyxpbnQgY3N0YXJ0KSB7DQogICAgLy8gQz1DK0EqYiwgPz9t YXkgb3ZlcmxhcCBpZmYgY3N0YXJ0Pj1hc3RhcnQ/Pw0KICAgIC8vIGMgbXVz dCBoYXZlIHNwYWNlIGZvciBhbGVuIGRpZ2l0cw0KICAgIC8vIGNhcnJ5IGlz IHJldHVybmVkDQogICAgaW50IGk7DQogICAgbG9uZyB0ZW1wLGNhcnJ5LG07 DQoNCiAgICBtPWI7DQoNCiAgICBjYXJyeT0wOw0KICAgIGZvciAoaT0wO2k8 YWxlbjtpKyspIHsNCiAgICAgIHRlbXA9ICgobG9uZykgYVtpK2FzdGFydF0p Km0gKyAoKGxvbmcpY1tpK2NzdGFydF0pICsgY2Fycnk7DQogICAgICBjW2kr Y3N0YXJ0XT0oaW50KSAodGVtcCAmICgoMTw8MzEpLTEpKTsNCiAgICAgIGNh cnJ5PXRlbXA+Pj4zMTsNCiAgICB9DQoNCiAgICByZXR1cm4gKGludCkgY2Fy cnk7DQogIH0NCg0KICBwcml2YXRlIGZpbmFsIHN0YXRpYyBpbnQgZG9NdWx0 U3ViKGludCBbXSBhLGludCBhc3RhcnQsaW50IGFsZW4sDQoJCQkJICAgICBp bnQgW10gYixpbnQgYnN0YXJ0LGludCBibGVuLA0KCQkJCSAgICAgaW50IGMp IHsNCiAgICAvLyBBPUEtQipjLCBibGVuPT1hbGVuLTENCiAgICAvLyBib3Jy b3cgaXMgcmV0dXJuZWQsIGlmIHJlc3VsdCBuZWdhdGl2ZSBpdCdzIGluIDIt Y29tcGxlbWVudCBmb3JtDQogICAgaW50IGk7DQogICAgbG9uZyB0ZW1wLGNh cnJ5LGJvcnJvdzsNCg0KICAgIGNhcnJ5PTA7DQogICAgYm9ycm93PTE7DQog ICAgZm9yIChpPTA7aTxibGVuO2krKykgew0KICAgICAgdGVtcD0oKGxvbmcp Yltic3RhcnQraV0pKmMrY2Fycnk7DQogICAgICBjYXJyeT10ZW1wPj4+MzE7 DQoNCiAgICAgIHRlbXA9IGFbYXN0YXJ0K2ldLSh0ZW1wICYgKCgxTDw8MzEp LTEpKStib3Jyb3crKCgxTDw8MzEpLTEpOw0KICAgICAgYVthc3RhcnQraV09 KGludCkgKHRlbXAgJiAoKDFMPDwzMSktMSkpOw0KICAgICAgYm9ycm93PXRl bXA+PjMxOw0KICAgIH0NCiAgICBpZiAoYWxlbj5ibGVuKSB7DQogICAgICB0 ZW1wPSBhW2FzdGFydCthbGVuLTFdLWNhcnJ5K2JvcnJvdysoKDFMPDwzMSkt MSk7DQogICAgICBhW2FzdGFydCthbGVuLTFdPShpbnQpICh0ZW1wICYgKCgx PDwzMSktMSkpOw0KICAgICAgYm9ycm93PXRlbXA+PjMxOw0KICAgIH0NCg0K ICAgIHJldHVybiAoaW50KSBib3Jyb3c7DQogIH0NCg0KLy8gUHJpdmF0ZSBN ZW1iZXIgZnVuY3Rpb25zDQogIHByaXZhdGUgZmluYWwgdm9pZCB0cmltKCkg ew0KICAgIGludCBuLGk7DQogICAgbj1NYXRoLmFicyh0aGlzLmxlbmd0aCk7 DQogICAgaT1uLTE7DQogICAgd2hpbGUgKChpPjApICYmICh2YWx1ZVtpXT09 MCkpIHsNCiAgICAgIG4tLTsNCiAgICAgIGktLTsNCiAgICB9DQogICAgaWYg KChuPT0xKSAmJiAodmFsdWVbMF09PTApKSB7DQogICAgICB0aGlzLmxlbmd0 aD0xOyAvLyBaZXJvIGlzIGFsd2F5cyBwb3NpdGl2ZSENCiAgICB9IGVsc2Ug ew0KICAgICAgaWYgKHRoaXMubGVuZ3RoPDApIA0KCXRoaXMubGVuZ3RoPS1u Ow0KICAgICAgZWxzZQ0KCXRoaXMubGVuZ3RoPW47DQogICAgfQ0KICB9DQoN Ci8vIFByaXZhdGUgRGF0YSBNZW1iZXJzDQogIHByaXZhdGUgaW50IGxlbmd0 aDsgLy8gYWxzbyBzaWduIG9mIG51bWJlcg0KICBwcml2YXRlIGludCBbXSB2 YWx1ZTsgLy8gTm8gVHJhaWxpbmcgWmVyb3Mgd2hlbiBzdGFydGluZyBhdCB8 bGVuZ3RofC0xDQogfQ0K --279707962-904132616-1035205029=:25817-- From alexl@redhat.com Mon Oct 21 13:57:09 2002 From: alexl@redhat.com (Alexander Larsson) Date: Mon, 21 Oct 2002 08:57:09 -0400 (EDT) Subject: [Mono-list] BigInt implementation Message-ID: This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime@docserver.cac.washington.edu for more info. --279707962-904132616-1035205029=:25817 Content-Type: TEXT/PLAIN; charset=US-ASCII I noted on the mono mailinglist (I read the archives now and then) that you needed a bignum implementation. I wrote a java BigInt class ages ago (1996 to be exact). It probably need some cleaning up and changes for C#, but might be interesting as a basis for something. I have full copyright on this, so I can license it BSD style if you want to use it. -- =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a suicidal gay romance novelist in a wheelchair. She's a beautiful motormouth archaeologist operating on the wrong side of the law. They fight crime! --279707962-904132616-1035205029=:25817 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="BigInt.java" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename="BigInt.java" aW1wb3J0IGphdmEubGFuZy4qOw0KLyogDQoNCiAgVE9ETzoNCiAgIHBvdw0K ICAgc2hpZnQgZnVuY3Rpb25zDQoNCiAgIHRlc3QsIHRlc3QsIHRlc3QuLi4g KHBhcnRpY3VsYXJ5IGRpdikNCiovDQoNCg0KDQpwdWJsaWMgY2xhc3MgQmln SW50IGltcGxlbWVudHMgQ2xvbmVhYmxlIHsNCi8vIFB1YmxpYyBDb25zdHJ1 Y3RvcnMNCiAgcHVibGljIEJpZ0ludChpbnQgeCkgeyANCiAgICBpZiAoeD09 LTB4ODAwMDAwMDApIHsNCiAgICAgIHZhbHVlPSBuZXcgaW50WzJdOw0KICAg ICAgbGVuZ3RoPS0yOw0KICAgICAgdmFsdWVbMV09MTsNCiAgICAgIHZhbHVl WzBdPTA7DQogICAgfSBlbHNlIHsNCiAgICAgIHZhbHVlPSBuZXcgaW50WzFd Ow0KICAgICAgbGVuZ3RoPTE7DQogICAgICBpZiAoeD49MCkgew0KCXZhbHVl WzBdPXg7DQogICAgICB9IGVsc2Ugew0KCXZhbHVlWzBdPS14Ow0KCWxlbmd0 aD0tbGVuZ3RoOw0KICAgICAgfQ0KICAgIH0NCiAgfQ0KDQogIHB1YmxpYyBC aWdJbnQoU3RyaW5nIHMpIHRocm93cyBOdW1iZXJGb3JtYXRFeGNlcHRpb24g ew0KICAgIGJvb2xlYW4gbmVnYXRpdmU9ZmFsc2U7DQogICAgaW50IG0saSxk LHQ7DQogICAgU3RyaW5nIGRzOw0KDQogICAgdHJ5IHsNCiAgICAgIGk9MDsN CiAgICAgIGlmIChzLmNoYXJBdChpKT09Jy0nKSB7DQoJbmVnYXRpdmU9dHJ1 ZTsNCglpKys7DQogICAgICB9DQogICAgICBtPXMubGVuZ3RoKCktaTsNCiAg DQoNCiAgICAgIGxlbmd0aD0xOw0KICAgICAgdmFsdWU9bmV3IGludFttKzFd Ow0KICAgICAgdmFsdWVbMF09MDsNCiAgICAgIHdoaWxlIChtPjApIHsNCglp ZiAobT49OSkgew0KCSAgZHM9cy5zdWJzdHJpbmcoaSxpKzkpOw0KCSAgZD1J bnRlZ2VyLnBhcnNlSW50KGRzKTsNCgkgIGlmIChkPDApDQoJICAgIHRocm93 IG5ldyBOdW1iZXJGb3JtYXRFeGNlcHRpb24oIictJyBpbiBkaWdpdCIpOw0K CSAgdmFsdWVbbGVuZ3RoXT1kb011bHQodmFsdWUsMCxsZW5ndGgsMTAwMDAw MDAwMCx2YWx1ZSwwKTsNCgkgIGlmICh2YWx1ZVtsZW5ndGhdIT0wKQ0KCSAg ICBsZW5ndGgrKzsNCgkgIHZhbHVlW2xlbmd0aF09ZG9BZGQodmFsdWUsMCxs ZW5ndGgsZCx2YWx1ZSwwKTsNCgkgIGlmICh2YWx1ZVtsZW5ndGhdIT0wKQ0K CSAgICBsZW5ndGgrKzsNCgkgIGkrPTk7DQoJICBtLT05Ow0KCX0gZWxzZSB7 DQoJICBkcz1zLnN1YnN0cmluZyhpLGkrbSk7DQoJICBkPUludGVnZXIucGFy c2VJbnQoZHMpOw0KCSAgdD0xOw0KCSAgd2hpbGUgKG0+MCkgew0KCSAgICB0 PXQqMTA7DQoJICAgIG0tLTsNCgkgIH0NCgkgIHZhbHVlW2xlbmd0aF09ZG9N dWx0KHZhbHVlLDAsbGVuZ3RoLHQsdmFsdWUsMCk7DQoJICBpZiAodmFsdWVb bGVuZ3RoXSE9MCkNCgkgICAgbGVuZ3RoKys7DQoJICB2YWx1ZVtsZW5ndGhd PWRvQWRkKHZhbHVlLDAsbGVuZ3RoLGQsdmFsdWUsMCk7DQoJICBpZiAodmFs dWVbbGVuZ3RoXSE9MCkNCgkgICAgbGVuZ3RoKys7DQoJICBicmVhazsNCgl9 DQogICAgICB9DQogICAgICBpZiAobmVnYXRpdmUpIHsNCglsZW5ndGg9LWxl bmd0aDsNCiAgICAgIH0NCiAgICAgIHRyaW0oKTsNCg0KICAgIH0gY2F0Y2gg KFN0cmluZ0luZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24gZSkgew0KICAgICAg dGhyb3cgbmV3IE51bWJlckZvcm1hdEV4Y2VwdGlvbigiaW5kZXggb3V0IG9m IGJvdW5kcyIpOw0KICAgIH0NCiAgfQ0KDQogIHB1YmxpYyBzdGF0aWMgZmlu YWwgQmlnSW50IHJhbmRvbShpbnQgbikgew0KICAgIGphdmEudXRpbC5SYW5k b20gcjsNCiAgICBpbnQgaSxsOw0KICAgIEJpZ0ludCB4Ow0KDQogICAgcj1u ZXcgamF2YS51dGlsLlJhbmRvbSgpOw0KDQoNCiAgICBsPU1hdGguYWJzKHIu bmV4dEludCgpJShuLTEpKSsxOw0KDQogICAgeD1uZXcgQmlnSW50KCk7DQog ICAgeC5sZW5ndGg9bDsNCiAgICB4LnZhbHVlPW5ldyBpbnRbbF07DQogICAg Zm9yIChpPTA7aTxsO2krKykgew0KICAgICAgeC52YWx1ZVtpXT1NYXRoLmFi cyhyLm5leHRJbnQoKSk7DQogICAgfQ0KICAgIGlmICgoci5uZXh0SW50KCkl Mik9PTApDQogICAgICB4Lmxlbmd0aD0teC5sZW5ndGg7DQogICAgeC50cmlt KCk7DQogICAgcmV0dXJuIHg7DQogIH0NCg0KDQovLyBDbGFzcyBNZXRob2Rz DQogIHB1YmxpYyBzdGF0aWMgZmluYWwgQmlnSW50IGdjZChCaWdJbnQgYSxC aWdJbnQgYikgew0KICAgIEJpZ0ludCBjLGQscixxOw0KICAgIGM9QmlnSW50 LmFicyhhKTsNCiAgICBkPUJpZ0ludC5hYnMoYik7DQoNCiAgICB3aGlsZSAo IWQuaXNaZXJvKCkpIHsNCiAgICAgIHI9QmlnSW50LnJlbShjLGQpOw0KICAg ICAgYz1kOw0KICAgICAgZD1yOw0KICAgIH0NCiAgICByZXR1cm4gYzsNCiAg fQ0KDQogIHB1YmxpYyBzdGF0aWMgZmluYWwgQmlnSW50IGdjZChCaWdJbnQg YSxCaWdJbnQgYixCaWdJbnQgcyxCaWdJbnQgdCkgew0KICAgIEJpZ0ludCBj LGQscixxOw0KICAgIEJpZ0ludCBjMSxkMSxjMixkMixyMSxyMjsNCiAgICBj PUJpZ0ludC5hYnMoYSk7DQogICAgZD1CaWdJbnQuYWJzKGIpOw0KICAgIGMx PW5ldyBCaWdJbnQoMSk7ICBkMT1uZXcgQmlnSW50KDApOw0KICAgIGMyPW5l dyBCaWdJbnQoMCk7ICBkMj1uZXcgQmlnSW50KDEpOw0KDQogICAgcT1uZXcg QmlnSW50KCk7DQogICAgcj1uZXcgQmlnSW50KCk7DQoNCiAgICB3aGlsZSAo IWQuaXNaZXJvKCkpIHsNCiAgICAgIEJpZ0ludC5kaXZyZW0oYyxkLHEscik7 DQogICAgICByMT1CaWdJbnQuc3ViKGMxLEJpZ0ludC5tdWx0KHEsZDEpKTsN CiAgICAgIHIyPUJpZ0ludC5zdWIoYzIsQmlnSW50Lm11bHQocSxkMikpOw0K ICAgICAgYy5hc3NpZ24oZCk7IGMxPWQxOyBjMj1kMjsNCiAgICAgIGQuYXNz aWduKHIpOyBkMT1yMTsgZDI9cjI7DQogICAgfQ0KICAgIHMuYXNzaWduKGMx KTsNCiAgICB0LmFzc2lnbihjMik7DQogICAgaWYgKGEuaXNOZWdhdGl2ZSgp KSB7DQogICAgICBzLm5lZygpOw0KICAgIH0NCiAgICBpZiAoYi5pc05lZ2F0 aXZlKCkpIHsNCiAgICAgIHQubmVnKCk7DQogICAgfQ0KICAgIGlmIChjLmlz TmVnYXRpdmUoKSkgew0KICAgICAgdC5uZWcoKTsNCiAgICAgIHMubmVnKCk7 DQogICAgfQ0KDQogICAgcmV0dXJuIGM7DQogIH0NCg0KICBwdWJsaWMgc3Rh dGljIGZpbmFsIEJpZ0ludCBsY20oQmlnSW50IGEsQmlnSW50IGIpIHsNCiAg ICBCaWdJbnQgYyxyOw0KICAgIA0KICAgIGM9QmlnSW50Lm11bHQoYSxiKTsN CiAgICByPWMuZGl2KEJpZ0ludC5nY2QoYSxiKSk7DQogICAgcmV0dXJuIGM7 DQogICAgDQogIH0NCiAgcHVibGljIHN0YXRpYyBmaW5hbCBCaWdJbnQgbWF4 KEJpZ0ludCBhLEJpZ0ludCBiKSB7DQogICAgaWYgKGEuaXNHcmVhdGVyKGIp KSB7DQogICAgICByZXR1cm4gKEJpZ0ludCkgYS5jbG9uZSgpOw0KICAgIH0g ZWxzZSB7DQogICAgICByZXR1cm4gKEJpZ0ludCkgYi5jbG9uZSgpOw0KICAg IH0NCiAgfQ0KICBwdWJsaWMgc3RhdGljIGZpbmFsIEJpZ0ludCBtaW4oQmln SW50IGEsQmlnSW50IGIpIHsNCiAgICBpZiAoYS5pc0dyZWF0ZXIoYikpIHsN CiAgICAgIHJldHVybiAoQmlnSW50KSBiLmNsb25lKCk7DQogICAgfSBlbHNl IHsNCiAgICAgIHJldHVybiAoQmlnSW50KSBhLmNsb25lKCk7DQogICAgfQ0K ICB9DQogIA0KLy8gUHVibGljIEluc3RhbmNlIE1ldGhvZHMNCiAgcHVibGlj IGZpbmFsIHZvaWQgYXNzaWduKEJpZ0ludCB4KSB7DQogICAgdGhpcy5sZW5n dGg9eC5sZW5ndGg7DQogICAgdHJ5IHsNCiAgICAgIHRoaXMudmFsdWU9KGlu dCBbXSl4LnZhbHVlLmNsb25lKCk7DQogICAgfSBjYXRjaCAoVGhyb3dhYmxl IGUpIHsNCiAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiQ2xvbmUgbm90IHN1 cHBvcnRlZCBieSBhcnJheSE/Iik7DQogICAgfQ0KICB9DQoNCiAgcHVibGlj IGZpbmFsIE9iamVjdCBjbG9uZSgpIHsNCiAgICBCaWdJbnQgeDsNCiAgICB4 PW5ldyBCaWdJbnQoKTsNCiAgICB4Lmxlbmd0aD10aGlzLmxlbmd0aDsNCiAg ICB0cnkgew0KICAgICAgeC52YWx1ZT0oaW50IFtdKXRoaXMudmFsdWUuY2xv bmUoKTsNCiAgICB9IGNhdGNoIChUaHJvd2FibGUgZSkgew0KICAgICAgU3lz dGVtLm91dC5wcmludGxuKCJDbG9uZSBub3Qgc3VwcG9ydGVkIGJ5IGFycmF5 IT8iKTsNCiAgICB9DQogICAgcmV0dXJuIChPYmplY3QpIHg7DQogIH0NCg0K ICAvLyBOdW1lcmljYWwNCiAgcHVibGljIHN0YXRpYyBmaW5hbCBCaWdJbnQg YWRkKEJpZ0ludCBhLEJpZ0ludCBiKXsNCiAgICBCaWdJbnQgdG1wOw0KICAg IEJpZ0ludCBjOw0KICAgIGludCBtLG47DQoNCiAgICBpZiAoYS5pc0Fic0xl c3MoYikpIHsNCiAgICAgIHRtcD1iOw0KICAgICAgYj1hOw0KICAgICAgYT10 bXA7DQogICAgfQ0KICAgIC8vIHxBfCA+PSB8QnwNCg0KICAgIG09YS5sZW5n dGg7DQogICAgbj1iLmxlbmd0aDsNCg0KICAgIGM9bmV3IEJpZ0ludCgpOw0K DQogICAgaWYgKG0+MCkgew0KICAgICAgaWYgKG4+MCkgew0KCS8vIEE+MCwg Qj4wDQoJYy5sZW5ndGg9bSsxOw0KCWMudmFsdWU9bmV3IGludFttKzFdOw0K CWMudmFsdWVbbV09ZG9BZGQoYS52YWx1ZSwwLG0sYi52YWx1ZSwwLG4sYy52 YWx1ZSwwKTsNCiAgICAgIH0gZWxzZSB7DQoJLy8gQT4wLCBCPDANCgljLmxl bmd0aD1tOw0KCWMudmFsdWU9bmV3IGludFttXTsNCglkb1N1YihhLnZhbHVl LDAsbSxiLnZhbHVlLDAsLW4sYy52YWx1ZSwwKTsgLy8gTm8gQm9ycm93DQog ICAgICB9DQogICAgfSBlbHNlIHsNCiAgICAgIGlmIChuPjApIHsNCgkvLyBB PDAsIEI+MA0KCWMubGVuZ3RoPW07DQoJYy52YWx1ZT1uZXcgaW50Wy1tXTsN Cglkb1N1YihhLnZhbHVlLDAsLW0sYi52YWx1ZSwwLG4sYy52YWx1ZSwwKTsg Ly8gTm8gQm9ycm93DQogICAgICB9IGVsc2Ugew0KCS8vIEE8MCwgQjwwDQog CWMubGVuZ3RoPS0oLW0rMSk7DQogCWMudmFsdWU9bmV3IGludFstbSsxXTsN CiAJYy52YWx1ZVstbV09ZG9BZGQoYS52YWx1ZSwwLC1tLGIudmFsdWUsMCwt bixjLnZhbHVlLDApOw0KICAgICAgfQ0KICAgIH0NCiAgICBjLnRyaW0oKTsN Cg0KICAgIHJldHVybiBjOw0KICB9DQoNCiAgcHVibGljIGZpbmFsIHZvaWQg YWRkKEJpZ0ludCBiKXsNCiAgICB0aGlzLmFzc2lnbihCaWdJbnQuYWRkKHRo aXMsYikpOw0KICB9DQoNCiAgcHVibGljIGZpbmFsIHZvaWQgYWRkKGludCBi KXsNCiAgICBpbnQgY2Fycnk7DQogICAgaW50IG0saTsNCiAgICBpbnQgW10g dGVtcDsNCg0KICAgIGlmIChiPT0tMjE0NzQ4MzY0OCkgew0KICAgICAgdGhp cy5hZGQobmV3IEJpZ0ludChiKSk7DQogICAgICByZXR1cm47DQogICAgfQ0K DQogICAgbT1NYXRoLmFicyhsZW5ndGgpOw0KDQogICAgaWYgKGI+MCkgew0K ICAgICAgY2Fycnk9ZG9BZGQodmFsdWUsMCxtLGIsdmFsdWUsMCk7DQogICAg ICBpZiAoY2FycnkhPTApIHsNCglpZiAobTx2YWx1ZS5sZW5ndGgpew0KCSAg dmFsdWVbbV09Y2Fycnk7CQ0KCX0gZWxzZSB7DQoJICB0ZW1wPW5ldyBpbnRb bSsxXTsNCgkgIC8vIGZvciAoaT0wO2k8bTtpKyspICB0ZW1wW2ldPXZhbHVl W2ldOw0KCSAgU3lzdGVtLmFycmF5Y29weSh2YWx1ZSwwLHRlbXAsMCxtKTsN CgkgIHRlbXBbbV09Y2Fycnk7DQoJICB2YWx1ZT10ZW1wOw0KCX0NCglpZiAo bGVuZ3RoPDApDQoJICBsZW5ndGgtLTsNCgllbHNlDQoJICBsZW5ndGgrKzsN CiAgICAgIH0NCiAgICB9IGVsc2Ugew0KICAgICAgY2Fycnk9ZG9TdWIodmFs dWUsMCxtLC1iLHZhbHVlLDApOw0KICAgICAgaWYgKGNhcnJ5PT0wKSB7IC8v IEJvcnJvdywgdGhpcyBCaWdJbnQgaXMgdGhlbiA8YiBpZS4gdmVyeSBzbWFs bC4NCgl2YWx1ZVswXT1iLXZhbHVlWzBdOw0KCWxlbmd0aD0tMTsNCiAgICAg IH0NCiAgICB9DQogICAgdHJpbSgpOw0KICB9DQoNCiAgcHVibGljIHN0YXRp YyBmaW5hbCBCaWdJbnQgc3ViKEJpZ0ludCBhLEJpZ0ludCBiKXsNCiAgICBC aWdJbnQgdG1wOw0KICAgIEJpZ0ludCBjOw0KICAgIGJvb2xlYW4gc3dhcHBl ZDsNCiAgICBpbnQgbSxuOw0KDQogICAgc3dhcHBlZD1mYWxzZTsNCiAgICBp ZiAoYS5pc0Fic0xlc3MoYikpIHsNCiAgICAgIHRtcD1iOw0KICAgICAgYj1h Ow0KICAgICAgYT10bXA7DQogICAgICBzd2FwcGVkPXRydWU7DQogICAgfQ0K ICAgIC8vIHxBfCA+PSB8QnwNCg0KDQogICAgbT1hLmxlbmd0aDsNCiAgICBu PWIubGVuZ3RoOw0KDQogICAgYz1uZXcgQmlnSW50KCk7DQoNCiAgICBpZiAo bT4wKSB7DQogICAgICBpZiAobj4wKSB7DQoJLy8gQT4wLCBCPjANCgljLmxl bmd0aD1tOw0KCWMudmFsdWU9bmV3IGludFttXTsNCglkb1N1YihhLnZhbHVl LDAsbSxiLnZhbHVlLDAsbixjLnZhbHVlLDApOyAvLyBObyBCb3Jyb3cNCiAg ICAgIH0gZWxzZSB7DQoJLy8gQT4wLCBCPDANCgljLmxlbmd0aD1tKzE7DQoJ Yy52YWx1ZT1uZXcgaW50W20rMV07DQoJYy52YWx1ZVttXT1kb0FkZChhLnZh bHVlLDAsbSxiLnZhbHVlLDAsLW4sYy52YWx1ZSwwKTsNCiAgICAgIH0NCiAg ICB9IGVsc2Ugew0KICAgICAgaWYgKG4+MCkgew0KCS8vIEE8MCwgQj4wDQog CWMubGVuZ3RoPS0oLW0rMSk7DQogCWMudmFsdWU9bmV3IGludFstbSsxXTsN CiAJYy52YWx1ZVstbV09ZG9BZGQoYS52YWx1ZSwwLC1tLGIudmFsdWUsMCxu LGMudmFsdWUsMCk7DQogICAgICB9IGVsc2Ugew0KCS8vIEE8MCwgQjwwDQoJ Yy5sZW5ndGg9bTsNCgljLnZhbHVlPW5ldyBpbnRbLW1dOw0KCWRvU3ViKGEu dmFsdWUsMCwtbSxiLnZhbHVlLDAsLW4sYy52YWx1ZSwwKTsgLy8gTm8gQm9y cm93DQogICAgICB9DQogICAgfQ0KICAgIGlmIChzd2FwcGVkKSB7DQogICAg ICBjLmxlbmd0aD0tYy5sZW5ndGg7DQogICAgfQ0KDQogICAgYy50cmltKCk7 DQogICAgDQogICAgcmV0dXJuIGM7DQogIH0NCg0KICBwdWJsaWMgZmluYWwg dm9pZCBzdWIoQmlnSW50IGIpIHsNCiAgICB0aGlzLmFzc2lnbihzdWIodGhp cyxiKSk7DQogIH0NCg0KICBwdWJsaWMgZmluYWwgdm9pZCBzdWIoaW50IGIp ew0KICAgIGlmIChiPT0tMjE0NzQ4MzY0OCkgDQogICAgICB0aGlzLnN1Yihu ZXcgQmlnSW50KGIpKTsNCiAgICBlbHNlDQogICAgICB0aGlzLmFkZCgtYik7 DQogIH0NCg0KICBwdWJsaWMgc3RhdGljIGZpbmFsIEJpZ0ludCBtdWx0KEJp Z0ludCBhLEJpZ0ludCBiKSB7DQogICAgQmlnSW50IGM7DQogICAgaW50IGks bSxuOw0KICAgIGludCBqOw0KICAgIGxvbmcgdGVtcCxjYXJyeSxtdWw7DQoN CiAgICBtPU1hdGguYWJzKGEubGVuZ3RoKTsNCiAgICBuPU1hdGguYWJzKGIu bGVuZ3RoKTsNCg0KICAgIGM9bmV3IEJpZ0ludCgpOw0KICAgIGMubGVuZ3Ro PW0rbjsNCiAgICBjLnZhbHVlPSBuZXcgaW50W20rbl07DQoNCiAgICBmb3Ig KGk9MDtpPG07aSsrKSB7DQogICAgICBjLnZhbHVlW2ldPTA7DQogICAgfQ0K DQogICAgZm9yIChpPTA7aTxuO2krKykgew0KICAgICAgbXVsPWIudmFsdWVb aV07DQoNCiAgICAgIGNhcnJ5PTA7DQogICAgICBmb3IgKGo9MDtqPG07aisr KSB7DQoJdGVtcD0gKChsb25nKSBhLnZhbHVlW2pdKSptdWwgKyAoKGxvbmcp Yy52YWx1ZVtqK2ldKSArIGNhcnJ5Ow0KCWMudmFsdWVbaitpXT0oaW50KSAo dGVtcCAmICgoMTw8MzEpLTEpKTsNCgljYXJyeT10ZW1wPj4+MzE7DQogICAg ICB9DQogICAgICANCiAgICAgIGMudmFsdWVbaSttXT0oaW50KSBjYXJyeTsN CiAgICB9DQoNCiAgICAvLyBGaXggc2lnbjoNCiAgICBpZiAoYS5sZW5ndGg8 MCkgew0KICAgICAgYy5sZW5ndGg9LWMubGVuZ3RoOw0KICAgIH0NCiAgICBp ZiAoYi5sZW5ndGg8MCkgew0KICAgICAgYy5sZW5ndGg9LWMubGVuZ3RoOw0K ICAgIH0NCg0KICAgIGMudHJpbSgpOw0KICAgIHJldHVybiBjOw0KICB9DQoN CiAgcHVibGljIGZpbmFsIHZvaWQgbXVsdChCaWdJbnQgYil7DQogICAgdGhp cy5hc3NpZ24oQmlnSW50Lm11bHQodGhpcyxiKSk7DQogIH0NCg0KICBwdWJs aWMgc3RhdGljIGZpbmFsIEJpZ0ludCBtdWx0KEJpZ0ludCBhLGludCBiKXsN CiAgICBCaWdJbnQgYzsNCiAgICBpbnQgaSxqLG07DQoNCiAgICBpZiAoYj09 LTIxNDc0ODM2NDgpIHsNCiAgICAgIHJldHVybiBCaWdJbnQubXVsdChhLG5l dyBCaWdJbnQoYikpOw0KICAgIH0NCg0KICAgIG09TWF0aC5hYnMoYS5sZW5n dGgpOw0KDQogICAgYz1uZXcgQmlnSW50KCk7DQogICAgYy5sZW5ndGg9bSsx Ow0KICAgIGMudmFsdWU9IG5ldyBpbnRbbSsxXTsNCg0KICAgIGMudmFsdWVb bV09ZG9NdWx0KGEudmFsdWUsMCxtLE1hdGguYWJzKGIpLGMudmFsdWUsMCk7 DQoNCiAgICAvLyBGaXggc2lnbjoNCiAgICBpZiAoYS5sZW5ndGg8MCkNCiAg ICAgIGMubGVuZ3RoPS1jLmxlbmd0aDsNCiAgICBpZiAoYjwwKSANCiAgICAg IGMubGVuZ3RoPS1jLmxlbmd0aDsNCg0KICAgIGMudHJpbSgpOw0KICAgIHJl dHVybiBjOw0KICB9DQoNCiAgcHVibGljIGZpbmFsIHZvaWQgbXVsdChpbnQg Yil7DQogICAgaW50IGksaixtOw0KICAgIGludCBjYXJyeTsNCiAgICBpbnQg W10gdGVtcDsNCg0KICAgIGlmIChiPT0tMjE0NzQ4MzY0OCkgew0KICAgICAg dGhpcy5hc3NpZ24oQmlnSW50Lm11bHQodGhpcyxuZXcgQmlnSW50KGIpKSk7 DQogICAgICByZXR1cm47DQogICAgfQ0KDQogICAgbT1NYXRoLmFicyhsZW5n dGgpOw0KICAgIGNhcnJ5PWRvTXVsdCh2YWx1ZSwwLG0sTWF0aC5hYnMoYiks dmFsdWUsMCk7DQoNCiAgICBpZiAoY2FycnkhPTApIHsNCiAgICAgIGlmICht PHZhbHVlLmxlbmd0aCl7DQoJdmFsdWVbbV09Y2Fycnk7CQ0KICAgICAgfSBl bHNlIHsNCgl0ZW1wPW5ldyBpbnRbbSsxXTsNCgkvLyBmb3IgKGk9MDtpPG07 aSsrKSAgdGVtcFtpXT12YWx1ZVtpXTsNCglTeXN0ZW0uYXJyYXljb3B5KHZh bHVlLDAsdGVtcCwwLG0pOw0KCXRlbXBbbV09Y2Fycnk7DQoJdmFsdWU9dGVt cDsNCiAgICAgIH0NCiAgICAgIGlmIChsZW5ndGg8MCkNCglsZW5ndGgtLTsN CiAgICAgIGVsc2UNCglsZW5ndGgrKzsNCiAgICB9DQoNCiAgICAvLyBGaXgg c2lnbjoNCiAgICBpZiAoYjwwKSANCiAgICAgIGxlbmd0aD0tbGVuZ3RoOw0K DQogICAgdHJpbSgpOw0KICB9DQoNCiAgLyoqIERpdmlzaW9uIGFuZCByZW1h aW5kZXIsDQogICAgY2FsY3VsYXRlcyBxICYgciBzbyB0aGF0OiBhPXEqYity LCB8cnw8fGJ8LCBzaWduKHIpPXNpZ24oYSkgDQogICAgKi8NCiAgcHVibGlj IHN0YXRpYyBmaW5hbCBpbnQgZGl2cmVtKEJpZ0ludCBhLGludCBiLEJpZ0lu dCBxT3V0KSANCiAgICAgICAgICAgICAgdGhyb3dzIEFyaXRobWV0aWNFeGNl cHRpb24gew0KICAgIGxvbmcgcmVtOw0KICAgIGludCBtOw0KICAgIGludCBb XSBxdW87DQoNCiAgICBpZiAoYj09MCkNCiAgICAgIHRocm93IG5ldyBBcml0 aG1ldGljRXhjZXB0aW9uKCJCaWdJbnQgZGl2aWRlIGJ5IFplcm8iKTsNCg0K ICAgIGlmIChiPT0tMjE0NzQ4MzY0OCkgew0KICAgICAgLy8gVGhpcyBpcyBh IG5vdCByZWFsbHkgYSBidWcsIHRoZW4gbmVnYXRpdmUgb2YgdGhpcyB2YWx1 ZSAgDQogICAgICAvLyBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgaW4gYW4gaW50 ID0+IHJlbWFpbmRlciBjYW5ub3QgZWl0aGVyLg0KICAgICAgLy8gPT4gVXNl IGxvbmctZGl2IQ0KICAgICAgdGhyb3cgbmV3IEFyaXRobWV0aWNFeGNlcHRp b24oIkRpdmlzaW9uIGJ5IC0yMTQ3NDgzNjQ4Iik7DQogICAgfQ0KDQogICAg bT1NYXRoLmFicyhhLmxlbmd0aCk7IA0KICAgIGlmICgocU91dC52YWx1ZT09 bnVsbCkgfHwgKHFPdXQudmFsdWUubGVuZ3RoPG0pKSB7DQogICAgICBxdW89 bmV3IGludFttXTsNCiAgICB9IGVsc2Ugew0KICAgICAgcXVvPXFPdXQudmFs dWU7DQogICAgfQ0KDQogICAgcmVtPWRvRGl2KGEudmFsdWUsMCxtLE1hdGgu YWJzKGIpLHF1bywwKTsNCg0KICAgIHFPdXQubGVuZ3RoPWEubGVuZ3RoOw0K ICAgIHFPdXQudmFsdWU9cXVvOw0KDQogICAgaWYgKGI8MCkNCiAgICAgIHFP dXQubGVuZ3RoPS1xT3V0Lmxlbmd0aDsNCiAgICANCiAgICBxT3V0LnRyaW0o KTsNCiAgIA0KICAgIGlmIChhLmxlbmd0aD4wKSB7DQogICAgICByZXR1cm4g KGludCkgcmVtOw0KICAgIH0gZWxzZSB7DQogICAgICByZXR1cm4gKGludCkg LXJlbTsNCiAgICB9DQogIH0NCg0KICBwdWJsaWMgZmluYWwgaW50IGRpdnJl bShpbnQgYikgDQogICAgICAgICAgICAgIHRocm93cyBBcml0aG1ldGljRXhj ZXB0aW9uIHsNCiAgICBsb25nIHJlbTsNCiAgICBpbnQgbTsNCg0KICAgIGlm IChiPT0wKQ0KICAgICAgdGhyb3cgbmV3IEFyaXRobWV0aWNFeGNlcHRpb24o IkJpZ0ludCBkaXZpZGUgYnkgWmVybyIpOw0KDQogICAgaWYgKGI9PS0yMTQ3 NDgzNjQ4KSB7DQogICAgICAvLyBUaGlzIGlzIGEgbm90IHJlYWxseSBhIGJ1 ZywgdGhlbiBuZWdhdGl2ZSBvZiB0aGlzIHZhbHVlICANCiAgICAgIC8vIGNh bm5vdCBiZSByZXByZXNlbnRlZCBpbiBhbiBpbnQgPT4gcmVtYWluZGVyIGNh bm5vdCBlaXRoZXIuDQogICAgICAvLyA9PiBVc2UgbG9uZy1kaXYhDQogICAg ICB0aHJvdyBuZXcgQXJpdGhtZXRpY0V4Y2VwdGlvbigiRGl2aXNpb24gYnkg LTIxNDc0ODM2NDgiKTsNCiAgICB9DQoNCiAgICBtPU1hdGguYWJzKGxlbmd0 aCk7IA0KICAgIHJlbT1kb0Rpdih2YWx1ZSwwLG0sTWF0aC5hYnMoYiksdmFs dWUsMCk7DQoNCiAgICBpZiAoYjwwKQ0KICAgICAgbGVuZ3RoPS1sZW5ndGg7 DQogICAgDQogICAgdHJpbSgpOw0KICAgDQogICAgaWYgKGxlbmd0aD4wKSB7 DQogICAgICByZXR1cm4gKGludCkgcmVtOw0KICAgIH0gZWxzZSB7DQogICAg ICByZXR1cm4gKGludCkgLXJlbTsNCiAgICB9DQogIH0NCg0KICAvKiogRGl2 aXNpb24gYW5kIHJlbWFpbmRlciwNCiAgICBjYWxjdWxhdGVzIHEgJiByIHNv IHRoYXQ6IGE9cSpiK3IsIHxyfDx8YnwsIHNpZ24ocik9c2lnbihhKSANCiAg ICANCiAgICBhIGdvb2QgdGVzdC1jYXNlOg0KICAgIDgyNzc4NDc2NzY0MTE2 NTQ5ODUxNDU0OTc3ODY3Nzc1OTk5LzQ5NTMyNTUwNjk3NTIwMzk0NzY2NjQ3 Mjk2MDANCiAgICA9PSAxNjcxMTkzNCwgNDk1MzI1NTA2OTc1MjAzOTQ3NjY2 NDcyOTU5OQ0KICAgIGV4ZXJjaXNlcyBzb21lIHNlbGRvbS11c2VkIHBhcnRz IG9mIHRoZSBjb2RlDQogICAgKi8NCiAgcHVibGljIHN0YXRpYyBmaW5hbCB2 b2lkIGRpdnJlbShCaWdJbnQgYSxCaWdJbnQgYixCaWdJbnQgcU91dCwgQmln SW50IHJPdXQpDQogICAgICAgdGhyb3dzIEFyaXRobWV0aWNFeGNlcHRpb24g ew0KICAgIGludCBbXSB1Ow0KICAgIGludCBbXSB2Ow0KICAgIGludCBbXSBy ZXM7DQogICAgaW50IGksaixtLG47DQogICAgbG9uZyB0ZW1wLHEscixkOw0K DQogICAgaWYgKGIuaXNaZXJvKCkpDQogICAgICB0aHJvdyBuZXcgQXJpdGht ZXRpY0V4Y2VwdGlvbigiQmlnSW50IGRpdmlkZSBieSBaZXJvIik7DQoNCiAg ICBpZiAoYT09Yikgew0KICAgICAgcU91dC5hc3NpZ24obmV3IEJpZ0ludCgx KSk7DQogICAgICByT3V0LmFzc2lnbihuZXcgQmlnSW50KDApKTsNCiAgICAg IHJldHVybjsNCiAgICB9DQoNCiAgICBpZiAoYi5sZW5ndGg9PTEpIHsNCiAg ICAgIGk9ZGl2cmVtKGEsYi52YWx1ZVswXSxxT3V0KTsNCiAgICAgIHJPdXQu YXNzaWduKG5ldyBCaWdJbnQoaSkpOw0KICAgICAgcmV0dXJuOw0KICAgIH0N CiAgICBpZiAoYi5sZW5ndGg9PS0xKSB7DQogICAgICBpPWRpdnJlbShhLC1i LnZhbHVlWzBdLHFPdXQpOw0KICAgICAgck91dC5hc3NpZ24obmV3IEJpZ0lu dChpKSk7DQogICAgICByZXR1cm47DQogICAgfQ0KDQogICAgaWYgKGEuaXNB YnNMZXNzKGIpKSB7IC8qIGEvYj0wIGElYj1hICovDQogICAgICBxT3V0LmFz c2lnbihuZXcgQmlnSW50KDApKTsNCiAgICAgIHJPdXQuYXNzaWduKGEpOw0K ICAgICAgcmV0dXJuOw0KICAgIH0NCg0KICAgIG09TWF0aC5hYnMoYS5sZW5n dGgpOw0KICAgIG49TWF0aC5hYnMoYi5sZW5ndGgpOw0KDQogICAgdSA9IG5l dyBpbnRbbSsxXTsNCiAgICB2ID0gbmV3IGludFtuXTsNCiAgICByZXMgPSBu ZXcgaW50W20tbisxXTsNCiAgICANCiAgICAvKiBDYWxjdWxhdGUgZDogKi8N CiAgICBkPSgxTDw8MzEpLygobG9uZyliLnZhbHVlW24tMV0rMSk7DQogICAg DQogICAgaWYgKGQhPTEpIHsNCiAgICAgIC8qIHU9dSpkICovDQogICAgICB1 W21dPWRvTXVsdChhLnZhbHVlLDAsbSwoaW50KWQsdSwwKTsNCg0KICAgICAg Lyogdj12KmQgKi8NCiAgICAgIGRvTXVsdChiLnZhbHVlLDAsbiwoaW50KWQs diwwKTsgLy8gTmV2ZXIgYW55IGNhcnJ5DQogICAgfSBlbHNlIHsNCiAgICAg IGZvciAoaT0wO2k8bTtpKyspIHsNCgl1W2ldPWEudmFsdWVbaV07DQogICAg ICB9DQogICAgICB1W21dPTA7DQogICAgICBmb3IgKGk9MDtpPG47aSsrKSB7 DQoJdltpXT1iLnZhbHVlW2ldOw0KICAgICAgfQ0KICAgIH0NCg0KICAgIA0K ICAgIC8qIExvb3AgKi8NCiAgICBmb3IgKGo9bTtqPj1uO2otLSkgew0KICAg ICAgLyogZ3Vlc3MgcV46ICovDQoNCiAgICAgIHRlbXA9KCgobG9uZyl1W2pd KTw8MzEpKygobG9uZyl1W2otMV0pOw0KICAgICAgaWYgKHVbal09PXZbbi0x XSkgew0KCXE9KDFMPDwzMSktMTsNCglyPXVbai0xXSt2W24tMV07DQoJU3lz dGVtLm91dC5wcmludGxuKCJHdWVzc2VkIHFePWItMT0iK3EpOw0KICAgICAg fSBlbHNlIHsNCglxPXRlbXAvdltuLTFdOw0KCXI9dGVtcCV2W24tMV07DQog ICAgICB9DQogICAgICANCiAgICAgIHdoaWxlICggKCgobG9uZyl2W24tMl0p KnEpID4gKChyPDwzMSkrdVtqLTJdKSkgew0KCXEtLTsNCglyKz12W24tMV07 DQogICAgICB9DQogICAgICANCiAgICAgIC8qIG11bHRpcGx5IGFuZCBzdWJ0 cmFjdCB1W2ouLmotbl0tcV4qdltuLTEuLjBdOyAqLw0KICAgICAgaWYgKEJp Z0ludC5kb011bHRTdWIodSxqLW4sbisxLHYsMCxuLChpbnQpIHEpPT0wKSB7 DQoJLy8gcSB3YXMgdG8gbGFyZ2UNCglxLS07DQoJLy8gYWRkIDAudltuLTEu LjBdIHRvIHVbai4uai1uXQ0KCWRvQWRkKHUsai1uLG4rMSx2LDAsbix1LGot bik7IC8vIElnbm9yZSBjYXJyeSwgaXQgY2FuY2VscyB0aGUgYm9ycm93DQoJ U3lzdGVtLm91dC5wcmludGxuKCJZZWFoISBUcmllZCBoYXJkIHBhcnQiKTsN CiAgICAgIH0NCiAgICAgIHJlc1tqLW5dPShpbnQpIHE7DQogICAgfQ0KDQog ICAgcU91dC52YWx1ZT1yZXM7DQogICAgcU91dC5sZW5ndGg9bS1uKzE7DQog ICAgaWYgKGEubGVuZ3RoPDApDQogICAgICBxT3V0Lmxlbmd0aD0tcU91dC5s ZW5ndGg7DQogICAgaWYgKGIubGVuZ3RoPDApDQogICAgICBxT3V0Lmxlbmd0 aD0tcU91dC5sZW5ndGg7DQoNCiAgICBxT3V0LnRyaW0oKTsNCg0KICAgIGlm IChhLmxlbmd0aD4wKSB7DQogICAgICByT3V0Lmxlbmd0aD1uOw0KICAgIH0g ZWxzZSB7DQogICAgICByT3V0Lmxlbmd0aD0tbjsNCiAgICB9DQogICAgck91 dC52YWx1ZT1uZXcgaW50W25dOw0KICAgIGlmIChkb0Rpdih1LDAsbiwoaW50 KWQsck91dC52YWx1ZSwwKSE9MCkgew0KICAgICAgU3lzdGVtLm91dC5wcmlu dGxuKCJEaXYgRXJyb3I6IHJlbWFpbmRlciB3YXMgbm90IG11bHRpcGxlIG9m IGQhISIpOw0KICAgIH0NCiAgICByT3V0LnRyaW0oKTsNCiAgfQ0KDQogIHB1 YmxpYyBmaW5hbCBCaWdJbnQgZGl2KEJpZ0ludCBiKSB0aHJvd3MgQXJpdGht ZXRpY0V4Y2VwdGlvbiB7DQogICAgQmlnSW50IHEscjsNCiAgICByPW5ldyBC aWdJbnQoKTsNCiAgICBCaWdJbnQuZGl2cmVtKHRoaXMsYix0aGlzLHIpOw0K ICAgIHJldHVybiByOw0KICB9DQoNCiAgcHVibGljIHN0YXRpYyBmaW5hbCBC aWdJbnQgcmVtKEJpZ0ludCBhLEJpZ0ludCBiKSB0aHJvd3MgQXJpdGhtZXRp Y0V4Y2VwdGlvbnsNCiAgICBCaWdJbnQgcSxyOw0KICAgIHE9bmV3IEJpZ0lu dCgpOw0KICAgIHI9bmV3IEJpZ0ludCgpOw0KICAgIEJpZ0ludC5kaXZyZW0o YSxiLHEscik7DQogICAgcmV0dXJuIHI7DQogIH0NCg0KICBwdWJsaWMgZmlu YWwgQmlnSW50IHBvdyhCaWdJbnQgYikgdGhyb3dzIEFyaXRobWV0aWNFeGNl cHRpb24gew0KICAgIC8vIE5vdCBJbXBsZW1lbnRlZA0KICAgIHJldHVybiBu ZXcgQmlnSW50KCk7DQogIH0NCg0KICBwdWJsaWMgc3RhdGljIGZpbmFsIEJp Z0ludCBhYnMoQmlnSW50IGEpIHsNCiAgICBCaWdJbnQgeDsNCiAgICB4PShC aWdJbnQpIGEuY2xvbmUoKTsNCiAgICBpZiAoeC5sZW5ndGg8MCkNCiAgICAg IHgubGVuZ3RoPS14Lmxlbmd0aDsNCiAgICByZXR1cm4geDsNCiAgfQ0KDQog IHB1YmxpYyBmaW5hbCB2b2lkIGFicygpIHsNCiAgICBpZiAobGVuZ3RoPDAp DQogICAgICBsZW5ndGg9LWxlbmd0aDsNCiAgfQ0KDQogIHB1YmxpYyBzdGF0 aWMgZmluYWwgQmlnSW50IG5lZyhCaWdJbnQgYSkgew0KICAgIEJpZ0ludCB4 Ow0KICAgIHg9KEJpZ0ludCkgYS5jbG9uZSgpOw0KICAgIHgubGVuZ3RoPS14 Lmxlbmd0aDsNCiAgICByZXR1cm4geDsNCiAgfQ0KDQogIHB1YmxpYyBmaW5h bCB2b2lkIG5lZygpIHsNCiAgICBsZW5ndGg9LWxlbmd0aDsNCiAgfQ0KDQog IHB1YmxpYyBzdGF0aWMgZmluYWwgQmlnSW50IHNpZ24oQmlnSW50IGEpIHsN CiAgICBpZiAoYS5sZW5ndGg+MCkNCiAgICAgIHJldHVybiBuZXcgQmlnSW50 KDEpOw0KICAgIGVsc2UNCiAgICAgIHJldHVybiBuZXcgQmlnSW50KC0xKTsN CiAgfQ0KDQogIHB1YmxpYyBmaW5hbCBTdHJpbmcgdG9TdHJpbmcoKSB7DQog ICAgaW50IGksaixzdGFydCxsZW47DQogICAgY2hhciBbXSBidWZmZXI7DQog ICAgY2hhciB0ZW1wOw0KICAgIEJpZ0ludCByZXN0Ow0KICAgIGludCBkaWdp dHM7DQogICAgYm9vbGVhbiBmaW5pc2hlZDsNCg0KICAgIGlmIChpc1plcm8o KSkgew0KICAgICAgcmV0dXJuICIwIjsNCiAgICB9DQogICAgDQogICAgYnVm ZmVyPSBuZXcgY2hhclsxMCpNYXRoLmFicyhsZW5ndGgpKzFdOw0KDQogICAg aT0wOw0KDQogICAgaWYgKGxlbmd0aDwwKSB7DQogICAgICBidWZmZXJbaSsr XT0nLSc7DQogICAgfQ0KICAgIHN0YXJ0PWk7DQoNCiAgICByZXN0PShCaWdJ bnQpIHRoaXMuY2xvbmUoKTsNCiAgICByZXN0LmFicygpOw0KICAgIGRvIHsN CiAgICAgIGRpZ2l0cz1CaWdJbnQuZGl2cmVtKHJlc3QsMTAwMDAwMDAwMCxy ZXN0KTsNCiAgICAgIGZpbmlzaGVkPXJlc3QuaXNaZXJvKCk7DQogICAgICBp ZiAoZmluaXNoZWQpIHsNCgl3aGlsZSAoZGlnaXRzIT0wKSB7DQoJICBidWZm ZXJbaSsrXT0oY2hhcikgKCcwJytkaWdpdHMlMTApOw0KCSAgZGlnaXRzLz0x MDsNCgl9DQogICAgICB9IGVsc2Ugew0KCWZvciAoaj0wO2o8OTtqKyspIHsN CgkgIGJ1ZmZlcltpKytdPShjaGFyKSAoJzAnK2RpZ2l0cyUxMCk7DQoJICBk aWdpdHMvPTEwOw0KCX0NCiAgICAgIH0NCiAgICB9IHdoaWxlKCFmaW5pc2hl ZCk7DQogICAgbGVuPWktc3RhcnQ7DQogICAgZm9yIChpPTA7aTwobGVuLzIp O2krKykgew0KICAgICAgdGVtcD1idWZmZXJbc3RhcnQraV07DQogICAgICBi dWZmZXJbc3RhcnQraV09YnVmZmVyW3N0YXJ0K2xlbi0xLWldOw0KICAgICAg YnVmZmVyW3N0YXJ0K2xlbi0xLWldPXRlbXA7DQogICAgfQ0KICAgIHJldHVy biBuZXcgU3RyaW5nKGJ1ZmZlciwwLHN0YXJ0K2xlbik7DQogIH0NCg0KICBw dWJsaWMgZmluYWwgU3RyaW5nIHRvSGV4U3RyaW5nKCkgew0KICAgIGludCBp LGxlbjsNCg0KICAgIFN0cmluZ0J1ZmZlciByZXM7DQogICAgcmVzID0gbmV3 IFN0cmluZ0J1ZmZlcigpOw0KDQogICAgbGVuPU1hdGguYWJzKGxlbmd0aCk7 DQogICAgaWYgKGxlbmd0aDwwKSANCiAgICAgIHJlcy5hcHBlbmQoJy0nKTsN Cg0KICAgIGZvciAoaT1sZW4tMTtpPj0wO2ktLSkgew0KICAgICAgcmVzLmFw cGVuZCgiMHgiK0ludGVnZXIudG9TdHJpbmcodmFsdWVbaV0sMTYpKTsNCiAg ICAgIGlmIChpPjApIA0KCXJlcy5hcHBlbmQoJywnKTsNCiAgICB9DQogICAg cmV0dXJuIHJlcy50b1N0cmluZygpOw0KICB9DQoNCiAgLy8gQm9vbGVhbg0K ICBwdWJsaWMgZmluYWwgYm9vbGVhbiBpc1plcm8oKSB7DQogICAgaWYgKGxl bmd0aCE9MSkNCiAgICAgIHJldHVybiBmYWxzZTsNCiAgICByZXR1cm4gKHZh bHVlWzBdPT0wKTsNCiAgfQ0KICBwdWJsaWMgZmluYWwgYm9vbGVhbiBpc09u ZSgpIHsNCiAgICBpZiAobGVuZ3RoIT0xKQ0KICAgICAgcmV0dXJuIGZhbHNl Ow0KICAgIHJldHVybiAodmFsdWVbMF09PTEpOw0KICB9DQogIHB1YmxpYyBm aW5hbCBib29sZWFuIGlzUG9zaXRpdmUoKSB7DQogICAgcmV0dXJuIChsZW5n dGg+MCk7DQogIH0NCiAgcHVibGljIGZpbmFsIGJvb2xlYW4gaXNOZWdhdGl2 ZSgpIHsNCiAgICByZXR1cm4gKGxlbmd0aDwwKTsNCiAgfQ0KICBwdWJsaWMg ZmluYWwgYm9vbGVhbiBpc0xlc3MoQmlnSW50IGIpIHsNCiAgICByZXR1cm4g IWlzR3JlYXRlck9yRXF1YWwoYik7DQogIH0NCiAgcHVibGljIGZpbmFsIGJv b2xlYW4gaXNMZXNzT3JFcXVhbChCaWdJbnQgYikgew0KICAgIHJldHVybiAh aXNHcmVhdGVyKGIpOw0KICB9DQogIHB1YmxpYyBmaW5hbCBib29sZWFuIGlz R3JlYXRlcihCaWdJbnQgYikgew0KICAgIGludCBpOw0KICAgIGludCBtLG47 DQogICAgbT10aGlzLmxlbmd0aDsNCiAgICBuPWIubGVuZ3RoOw0KDQogICAg aWYgKChtPDApICYmIChuPDApKSB7DQogICAgICBpZiAobT5uKQ0KCXJldHVy biBmYWxzZTsNCiAgICAgIGlmIChtPG4pDQoJcmV0dXJuIHRydWU7DQogICAg ICAvLyBtPT1uLCBuZWdhdGl2ZQ0KDQogICAgICBpPW0tMTsNCiAgICAgIHdo aWxlICgoaT4wKSAmJiAodGhpcy52YWx1ZVtpXT09Yi52YWx1ZVtpXSkpIA0K CWktLTsNCiAgICAgIHJldHVybiAodGhpcy52YWx1ZVtpXTxiLnZhbHVlW2ld KTsNCg0KICAgIH0gZWxzZSB7DQogICAgICBpZiAobT5uKQ0KCXJldHVybiB0 cnVlOw0KICAgICAgaWYgKG08bikNCglyZXR1cm4gZmFsc2U7DQogICAgICAv LyBtPT1uLCBwb3NpdGl2ZQ0KICAgICAgDQogICAgICBpPW0tMTsNCiAgICAg IHdoaWxlICgoaT4wKSAmJiAodGhpcy52YWx1ZVtpXT09Yi52YWx1ZVtpXSkp IA0KCWktLTsNCiAgICAgIHJldHVybiAodGhpcy52YWx1ZVtpXT5iLnZhbHVl W2ldKTsNCiAgICB9DQogIH0NCg0KICBwdWJsaWMgZmluYWwgYm9vbGVhbiBp c0dyZWF0ZXJPckVxdWFsKEJpZ0ludCBiKSB7DQogICAgaW50IGk7DQogICAg aW50IG0sbjsNCiAgICBtPXRoaXMubGVuZ3RoOw0KICAgIG49Yi5sZW5ndGg7 DQoNCiAgICBpZiAoKG08MCkgJiYgKG48MCkpIHsNCiAgICAgIGlmIChtPm4p DQoJcmV0dXJuIGZhbHNlOw0KICAgICAgaWYgKG08bikNCglyZXR1cm4gdHJ1 ZTsNCiAgICAgIC8vIG09PW4sIG5lZ2F0aXZlDQoNCiAgICAgIGk9bS0xOw0K ICAgICAgd2hpbGUgKChpPjApICYmICh0aGlzLnZhbHVlW2ldPT1iLnZhbHVl W2ldKSkgDQoJaS0tOw0KICAgICAgcmV0dXJuICh0aGlzLnZhbHVlW2ldPD1i LnZhbHVlW2ldKTsNCg0KICAgIH0gZWxzZSB7DQogICAgICBpZiAobT5uKQ0K CXJldHVybiB0cnVlOw0KICAgICAgaWYgKG08bikNCglyZXR1cm4gZmFsc2U7 DQogICAgICAvLyBtPT1uLCBwb3NpdGl2ZQ0KICAgICAgDQogICAgICBpPW0t MTsNCiAgICAgIHdoaWxlICgoaT4wKSAmJiAodGhpcy52YWx1ZVtpXT09Yi52 YWx1ZVtpXSkpIA0KCWktLTsNCiAgICAgIHJldHVybiAodGhpcy52YWx1ZVtp XT49Yi52YWx1ZVtpXSk7DQogICAgfQ0KICB9DQogIHB1YmxpYyBmaW5hbCBi b29sZWFuIGlzQWJzTGVzcyhCaWdJbnQgYikgew0KICAgIHJldHVybiAhaXNB YnNHcmVhdGVyT3JFcXVhbChiKTsNCiAgfQ0KICBwdWJsaWMgZmluYWwgYm9v bGVhbiBpc0Fic0xlc3NPckVxdWFsKEJpZ0ludCBiKSB7DQogICAgcmV0dXJu ICFpc0Fic0dyZWF0ZXIoYik7DQogIH0NCiAgcHVibGljIGZpbmFsIGJvb2xl YW4gaXNBYnNHcmVhdGVyKEJpZ0ludCBiKSB7DQogICAgaW50IGk7DQogICAg aW50IG0sbjsNCiAgICBtPU1hdGguYWJzKHRoaXMubGVuZ3RoKTsNCiAgICBu PU1hdGguYWJzKGIubGVuZ3RoKTsNCg0KICAgIGlmIChtPm4pDQogICAgICBy ZXR1cm4gdHJ1ZTsNCiAgICBpZiAobTxuKQ0KICAgICAgcmV0dXJuIGZhbHNl Ow0KICAgIC8vIG09PW4NCg0KICAgIGk9bS0xOw0KICAgIHdoaWxlICgoaT4w KSAmJiAodGhpcy52YWx1ZVtpXT09Yi52YWx1ZVtpXSkpIA0KICAgICAgaS0t Ow0KICAgIHJldHVybiAodGhpcy52YWx1ZVtpXT5iLnZhbHVlW2ldKTsNCiAg fQ0KDQogIHB1YmxpYyBmaW5hbCBib29sZWFuIGlzQWJzR3JlYXRlck9yRXF1 YWwoQmlnSW50IGIpIHsNCiAgICBpbnQgaTsNCiAgICBpbnQgbSxuOw0KICAg IG09TWF0aC5hYnModGhpcy5sZW5ndGgpOw0KICAgIG49TWF0aC5hYnMoYi5s ZW5ndGgpOw0KDQogICAgaWYgKG0+bikNCiAgICAgIHJldHVybiB0cnVlOw0K ICAgIGlmIChtPG4pDQogICAgICByZXR1cm4gZmFsc2U7DQogICAgLy8gbT09 bg0KDQogICAgaT1tLTE7DQogICAgd2hpbGUgKChpPjApICYmICh0aGlzLnZh bHVlW2ldPT1iLnZhbHVlW2ldKSkgDQogICAgICBpLS07DQogICAgcmV0dXJu ICh0aGlzLnZhbHVlW2ldPj1iLnZhbHVlW2ldKTsNCiAgfQ0KDQogIHB1Ymxp YyBmaW5hbCBib29sZWFuIGlzRXF1YWwoQmlnSW50IGIpIHsNCiAgICBpbnQg bSxuLGk7DQogICAgbT10aGlzLmxlbmd0aDsNCiAgICBuPWIubGVuZ3RoOw0K DQogICAgaWYgKG0hPW4pDQogICAgICByZXR1cm4gZmFsc2U7DQoNCiAgICBt PU1hdGguYWJzKG0pOw0KICAgDQogICAgZm9yIChpPW0tMTtpPj0wO2ktLSkg ew0KICAgICAgaWYgKHRoaXMudmFsdWVbaV0hPWIudmFsdWVbaV0pDQoJcmV0 dXJuIGZhbHNlOw0KICAgIH0NCiAgICByZXR1cm4gdHJ1ZTsNCiAgfQ0KDQov LyBQcml2YXRlIENvbnN0cnVjdG9ycw0KICBwcml2YXRlIEJpZ0ludCgpIHsN CiAgICAvLyBFbXB0eSBjb25zdHJ1Y3Rvci4NCiAgfQ0KLy8gUHJpdmF0ZSBD bGFzcyBmdW5jdGlvbnMNCiAgcHJpdmF0ZSBmaW5hbCBzdGF0aWMgaW50IGRv QWRkKGludCBbXSBhLGludCBhc3RhcnQsaW50IGFsZW4sDQoJICAgICAgICAg ICAgICAgICAgICBpbnQgW10gYixpbnQgYnN0YXJ0LGludCBibGVuLA0KCQkJ ICAgIGludCBbXSBjLGludCBjc3RhcnQpIHsNCiAgICAvLyBhZGRzIG51bWJl cnMsIGFsZW4+PWJsZW4uIHJldHVybnMgY2FycnkNCiAgICAvLyBjIG11c3Qg aGF2ZSBzcGFjZSBmb3IgYWxlbiBkaWdpdHMuDQogICAgLy8gTm90ZTogaXRz IG9rIGZvciBhIGFuZCBjIHRvIGJlIGVxdWFsIGlmZiBjc3RhcnQ8PWFzdGFy dA0KICAgIGludCBpOw0KICAgIGxvbmcgY2FycnksdGVtcDsNCg0KICAgIGNh cnJ5PTA7DQogICAgZm9yIChpPTA7aTxibGVuO2krKykgew0KICAgICAgdGVt cD0oKGxvbmcpYVtpK2FzdGFydF0pKygobG9uZyliW2krYnN0YXJ0XSkrY2Fy cnk7DQogICAgICBjW2krY3N0YXJ0XT0oaW50KSAodGVtcCAmICgoMTw8MzEp LTEpKTsNCiAgICAgIGNhcnJ5PXRlbXA+PjMxOw0KICAgIH0NCiAgICBmb3Ig KDtpPGFsZW47aSsrKSB7DQogICAgICB0ZW1wPSgobG9uZylhW2krYXN0YXJ0 XSkrY2Fycnk7DQogICAgICBjW2krY3N0YXJ0XT0oaW50KSAodGVtcCAmICgo MTw8MzEpLTEpKTsNCiAgICAgIGNhcnJ5PXRlbXA+PjMxOw0KICAgIH0NCiAg ICByZXR1cm4gKGludCkgY2Fycnk7DQogIH0NCg0KICBwcml2YXRlIGZpbmFs IHN0YXRpYyBpbnQgZG9BZGQoaW50IFtdIGEsaW50IGFzdGFydCxpbnQgYWxl bixpbnQgYiwNCgkJCSAgICBpbnQgW10gYyxpbnQgY3N0YXJ0KSB7DQogICAg Ly8gYWRkcyBudW1iZXJzLiByZXR1cm5zIGNhcnJ5DQogICAgLy8gYyBtdXN0 IGhhdmUgc3BhY2UgZm9yIGFsZW4gZGlnaXRzLg0KICAgIC8vIE5vdGU6IGl0 cyBvayBmb3IgYSBhbmQgYyB0byBiZSBlcXVhbCBpZmYgY3N0YXJ0PD1hc3Rh cnQNCiAgICBpbnQgaTsNCiAgICBsb25nIGNhcnJ5LHRlbXA7DQoNCiAgICB0 ZW1wPSgobG9uZylhW2FzdGFydF0pKyhsb25nKWI7DQogICAgY1tjc3RhcnRd PShpbnQpICh0ZW1wICYgKCgxPDwzMSktMSkpOw0KICAgIGNhcnJ5PXRlbXA+ PjMxOw0KICAgIGZvciAoaT0xO2k8YWxlbjtpKyspIHsNCiAgICAgIHRlbXA9 KChsb25nKWFbaSthc3RhcnRdKStjYXJyeTsNCiAgICAgIGNbaStjc3RhcnRd PShpbnQpICh0ZW1wICYgKCgxPDwzMSktMSkpOw0KICAgICAgY2Fycnk9dGVt cD4+MzE7DQogICAgfQ0KICAgIHJldHVybiAoaW50KSBjYXJyeTsNCiAgfQ0K DQogIHByaXZhdGUgZmluYWwgc3RhdGljIGludCBkb1N1YihpbnQgW10gYSxp bnQgYXN0YXJ0LGludCBhbGVuLA0KCSAgICAgICAgICAgICAgICAgICAgaW50 IFtdIGIsaW50IGJzdGFydCxpbnQgYmxlbiwNCgkJCSAgICBpbnQgW10gYyxp bnQgY3N0YXJ0KSB7DQogICAgLy8gc3VidHJhY3RzIG51bWJlcnMsIGFsZW4+ PWJsZW4uDQogICAgLy8gcmV0dXJucyBib3Jyb3cuICgxPXBvc2l0aXZlIHJl c3VsdCwgMD1uZWdhdGl2ZSwoYyBpcyAyLWNvbXBsZW1lbnQpDQogICAgLy8g YyBtdXN0IGhhdmUgc3BhY2UgZm9yIGFsZW4gZGlnaXRzLg0KICAgIC8vIE5v dGU6IGl0cyBvayBmb3IgYSBhbmQgYyB0byBiZSBlcXVhbCBpZmYgY3N0YXJ0 PD1hc3RhcnQNCiAgICANCiAgICBpbnQgaTsNCiAgICBsb25nIGJvcnJvdyx0 ZW1wOw0KDQogICAgYm9ycm93PTE7DQogICAgZm9yIChpPTA7aTxibGVuO2kr Kykgew0KICAgICAgdGVtcD0oKGxvbmcpYVtpK2FzdGFydF0pLSgobG9uZyli W2krYnN0YXJ0XSkrYm9ycm93KygxTDw8MzEpLTE7DQogICAgICBjW2krY3N0 YXJ0XT0oaW50KSAodGVtcCAmICgoMTw8MzEpLTEpKTsNCiAgICAgIGJvcnJv dz10ZW1wPj4zMTsNCiAgICB9DQogICAgZm9yICg7aTxhbGVuO2krKykgew0K ICAgICAgdGVtcD1hW2krYXN0YXJ0XStib3Jyb3crKDFMPDwzMSktMTsNCiAg ICAgIGNbaStjc3RhcnRdPShpbnQpICh0ZW1wICYgKCgxPDwzMSktMSkpOw0K ICAgICAgYm9ycm93PXRlbXA+PjMxOw0KICAgIH0NCg0KICAgIHJldHVybiAo aW50KSBib3Jyb3c7DQogIH0NCg0KICBwcml2YXRlIGZpbmFsIHN0YXRpYyBp bnQgZG9TdWIoaW50IFtdIGEsaW50IGFzdGFydCxpbnQgYWxlbixpbnQgYiwN CgkJCSAgICBpbnQgW10gYyxpbnQgY3N0YXJ0KSB7DQogICAgLy8gYWRkcyBu dW1iZXJzLiByZXR1cm5zIGJvcnJvdyAoMD1ib3Jyb3csMT1ubyBib3Jyb3cp DQogICAgLy8gYyBtdXN0IGhhdmUgc3BhY2UgZm9yIGFsZW4gZGlnaXRzLg0K ICAgIC8vIE5vdGU6IGl0cyBvayBmb3IgYSBhbmQgYyB0byBiZSBlcXVhbCBp ZmYgY3N0YXJ0PD1hc3RhcnQNCiAgICBpbnQgaTsNCiAgICBsb25nIGJvcnJv dyx0ZW1wOw0KDQogICAgdGVtcD0oKGxvbmcpYVthc3RhcnRdKS0oKGxvbmcp YikrMSsoMUw8PDMxKS0xOw0KICAgIGNbY3N0YXJ0XT0oaW50KSAodGVtcCAm ICgoMTw8MzEpLTEpKTsNCiAgICBib3Jyb3c9dGVtcD4+MzE7DQogICAgZm9y IChpPTE7aTxhbGVuO2krKykgew0KICAgICAgdGVtcD0oKGxvbmcpYVtpK2Fz dGFydF0pK2JvcnJvdysoMUw8PDMxKS0xOw0KICAgICAgY1tpK2NzdGFydF09 KGludCkgKHRlbXAgJiAoKDE8PDMxKS0xKSk7DQogICAgICBib3Jyb3c9dGVt cD4+MzE7DQogICAgfQ0KICAgIHJldHVybiAoaW50KSBib3Jyb3c7DQogIH0N Cg0KICBwcml2YXRlIGZpbmFsIHN0YXRpYyBpbnQgZG9NdWx0KGludCBbXSBh LGludCBhc3RhcnQsaW50IGFsZW4saW50IGIsDQoJCQkJICBpbnQgW10gYyxp bnQgY3N0YXJ0KSB7DQogICAgLy8gQz1BKmIsIGI+MCwgbWF5IG92ZXJsYXAg aWZmIGNzdGFydDw9YXN0YXJ0DQogICAgLy8gYyBtdXN0IGhhdmUgc3BhY2Ug Zm9yIGFsZW4gZGlnaXRzDQogICAgLy8gY2FycnkgaXMgcmV0dXJuZWQNCiAg ICBpbnQgaTsNCiAgICBsb25nIHRlbXAsY2Fycnk7DQogICAgbG9uZyBkOw0K DQogICAgZD1iOw0KDQogICAgY2Fycnk9MDsNCiAgICBmb3IgKGk9MDtpPGFs ZW47aSsrKSB7DQogICAgICB0ZW1wPSAoKGxvbmcpIGFbaSthc3RhcnRdKSpk ICsgY2Fycnk7DQogICAgICBjW2krY3N0YXJ0XT0oaW50KSAodGVtcCAmICgo MUw8PDMxKS0xKSk7DQogICAgICBjYXJyeT10ZW1wPj4+MzE7DQogICAgfQ0K ICAgIHJldHVybiAoaW50KSBjYXJyeTsNCiAgfQ0KDQogIHByaXZhdGUgZmlu YWwgc3RhdGljIGludCBkb0RpdihpbnQgW10gYSxpbnQgYXN0YXJ0LGludCBh bGVuLGludCBiLA0KCQkJCSBpbnQgW10gYyxpbnQgY3N0YXJ0KSB7DQogICAg Ly8gQz1BL2IsIGI+MCwgbWF5IG92ZXJsYXAgaWZmIGNzdGFydD49YXN0YXJ0 DQogICAgLy8gYyBtdXN0IGhhdmUgc3BhY2UgZm9yIGFsZW4gZGlnaXRzDQog ICAgLy8gcmVtYWluZGVyIGlzIHJldHVybmVkDQogICAgaW50IGk7DQogICAg bG9uZyB0ZW1wLGNhcnJ5Ow0KICAgIGxvbmcgZDsNCg0KICAgIGQ9YjsNCg0K ICAgIGNhcnJ5PTA7DQogICAgZm9yIChpPWFsZW4tMTtpPj0wO2ktLSkgew0K ICAgICAgdGVtcD0gKGNhcnJ5PDwzMSkgKyAoKGxvbmcpIGFbaSthc3RhcnRd KTsNCiAgICAgIGNbaStjc3RhcnRdPShpbnQpICh0ZW1wL2QpOw0KICAgICAg Y2Fycnk9dGVtcCVkOw0KICAgIH0NCiAgICByZXR1cm4gKGludCkgY2Fycnk7 DQogIH0NCg0KICBwcml2YXRlIGZpbmFsIHN0YXRpYyBpbnQgZG9NdWx0QWRk KGludCBbXSBhLGludCBhc3RhcnQsaW50IGFsZW4saW50IGIsDQoJCQkJICAg ICBpbnQgW10gYyxpbnQgY3N0YXJ0KSB7DQogICAgLy8gQz1DK0EqYiwgPz9t YXkgb3ZlcmxhcCBpZmYgY3N0YXJ0Pj1hc3RhcnQ/Pw0KICAgIC8vIGMgbXVz dCBoYXZlIHNwYWNlIGZvciBhbGVuIGRpZ2l0cw0KICAgIC8vIGNhcnJ5IGlz IHJldHVybmVkDQogICAgaW50IGk7DQogICAgbG9uZyB0ZW1wLGNhcnJ5LG07 DQoNCiAgICBtPWI7DQoNCiAgICBjYXJyeT0wOw0KICAgIGZvciAoaT0wO2k8 YWxlbjtpKyspIHsNCiAgICAgIHRlbXA9ICgobG9uZykgYVtpK2FzdGFydF0p Km0gKyAoKGxvbmcpY1tpK2NzdGFydF0pICsgY2Fycnk7DQogICAgICBjW2kr Y3N0YXJ0XT0oaW50KSAodGVtcCAmICgoMTw8MzEpLTEpKTsNCiAgICAgIGNh cnJ5PXRlbXA+Pj4zMTsNCiAgICB9DQoNCiAgICByZXR1cm4gKGludCkgY2Fy cnk7DQogIH0NCg0KICBwcml2YXRlIGZpbmFsIHN0YXRpYyBpbnQgZG9NdWx0 U3ViKGludCBbXSBhLGludCBhc3RhcnQsaW50IGFsZW4sDQoJCQkJICAgICBp bnQgW10gYixpbnQgYnN0YXJ0LGludCBibGVuLA0KCQkJCSAgICAgaW50IGMp IHsNCiAgICAvLyBBPUEtQipjLCBibGVuPT1hbGVuLTENCiAgICAvLyBib3Jy b3cgaXMgcmV0dXJuZWQsIGlmIHJlc3VsdCBuZWdhdGl2ZSBpdCdzIGluIDIt Y29tcGxlbWVudCBmb3JtDQogICAgaW50IGk7DQogICAgbG9uZyB0ZW1wLGNh cnJ5LGJvcnJvdzsNCg0KICAgIGNhcnJ5PTA7DQogICAgYm9ycm93PTE7DQog ICAgZm9yIChpPTA7aTxibGVuO2krKykgew0KICAgICAgdGVtcD0oKGxvbmcp Yltic3RhcnQraV0pKmMrY2Fycnk7DQogICAgICBjYXJyeT10ZW1wPj4+MzE7 DQoNCiAgICAgIHRlbXA9IGFbYXN0YXJ0K2ldLSh0ZW1wICYgKCgxTDw8MzEp LTEpKStib3Jyb3crKCgxTDw8MzEpLTEpOw0KICAgICAgYVthc3RhcnQraV09 KGludCkgKHRlbXAgJiAoKDFMPDwzMSktMSkpOw0KICAgICAgYm9ycm93PXRl bXA+PjMxOw0KICAgIH0NCiAgICBpZiAoYWxlbj5ibGVuKSB7DQogICAgICB0 ZW1wPSBhW2FzdGFydCthbGVuLTFdLWNhcnJ5K2JvcnJvdysoKDFMPDwzMSkt MSk7DQogICAgICBhW2FzdGFydCthbGVuLTFdPShpbnQpICh0ZW1wICYgKCgx PDwzMSktMSkpOw0KICAgICAgYm9ycm93PXRlbXA+PjMxOw0KICAgIH0NCg0K ICAgIHJldHVybiAoaW50KSBib3Jyb3c7DQogIH0NCg0KLy8gUHJpdmF0ZSBN ZW1iZXIgZnVuY3Rpb25zDQogIHByaXZhdGUgZmluYWwgdm9pZCB0cmltKCkg ew0KICAgIGludCBuLGk7DQogICAgbj1NYXRoLmFicyh0aGlzLmxlbmd0aCk7 DQogICAgaT1uLTE7DQogICAgd2hpbGUgKChpPjApICYmICh2YWx1ZVtpXT09 MCkpIHsNCiAgICAgIG4tLTsNCiAgICAgIGktLTsNCiAgICB9DQogICAgaWYg KChuPT0xKSAmJiAodmFsdWVbMF09PTApKSB7DQogICAgICB0aGlzLmxlbmd0 aD0xOyAvLyBaZXJvIGlzIGFsd2F5cyBwb3NpdGl2ZSENCiAgICB9IGVsc2Ug ew0KICAgICAgaWYgKHRoaXMubGVuZ3RoPDApIA0KCXRoaXMubGVuZ3RoPS1u Ow0KICAgICAgZWxzZQ0KCXRoaXMubGVuZ3RoPW47DQogICAgfQ0KICB9DQoN Ci8vIFByaXZhdGUgRGF0YSBNZW1iZXJzDQogIHByaXZhdGUgaW50IGxlbmd0 aDsgLy8gYWxzbyBzaWduIG9mIG51bWJlcg0KICBwcml2YXRlIGludCBbXSB2 YWx1ZTsgLy8gTm8gVHJhaWxpbmcgWmVyb3Mgd2hlbiBzdGFydGluZyBhdCB8 bGVuZ3RofC0xDQogfQ0K --279707962-904132616-1035205029=:25817-- From rodrigo@ximian.com Mon Oct 21 16:18:12 2002 From: rodrigo@ximian.com (Rodrigo Moya) Date: 21 Oct 2002 17:18:12 +0200 Subject: [Mono-list] ODBC.NET Data Provider Update In-Reply-To: References: Message-ID: <1035213406.10151.16.camel@localhost> On Sun, 2002-10-20 at 21:33, Brian Ritchie wrote: > Work progresses on tricking out the ODBC provider...it isn't production > ready yet, but then what is :) > > The provider is definitely in a quite usuable state. I've been performing > basic testing on Linux (Debian w/ DB2) and Windows (WinXP w/ SQL Server & > Excel db drivers). The mono config file has been updated to handle > auto-switching of odbc32.dll vs. libodbc.so based on platform. > cool, this is great news! Good work Brian, and thanks for doing it. cheers -- Rodrigo Moya From timte878@student.liu.se Mon Oct 21 16:23:49 2002 From: timte878@student.liu.se (=?iso-8859-1?Q?Tim_Terleg=E5rd?=) Date: Mon, 21 Oct 2002 17:23:49 +0200 Subject: [Mono-list] portable SQL Message-ID: Coding SQL for multiple vendors is not that cool. One have to write every SQL statement twice or more. If one all of a sudden wants to support another rdbms vendor, one will have some work to do. So portable SQL would be nice... My understanding is that ADO.NET doesn't provide any facility for portable SQL, is that correct? Are there any plans for Mono to provide som sort of object oriented api one could use that builds native SQL statements? -- Tim From miguel@ximian.com Mon Oct 21 16:50:02 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 21 Oct 2002 11:50:02 -0400 Subject: [Mono-list] implementation of System.Xml.XmlElement.InnerXml In-Reply-To: <20021020155045.D711.GINGA@kit.hi-ho.ne.jp> References: <20021020155045.D711.GINGA@kit.hi-ho.ne.jp> Message-ID: <1035215401.14578.1273.camel@erandi.boston.ximian.com> Hello! > I wrote System.Xml.XmlElement.InnerXml() code and some tests. Thanks a lot! > note: In those codes, I created two 'internal protected' method > in 'XmlNode.cs' file. I wonder if they are breaking any rules... I do not believe it is breaking any rules. > I also fixed the cause of many failures of the testcases. > It was because of the return value of 'XmlTextReader.ReadContent()'. Thanks, appreciated! Duncan got the code into CVS last night. Miguel From miguel@ximian.com Mon Oct 21 17:05:14 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 21 Oct 2002 12:05:14 -0400 Subject: [Mono-list] IMPORTANT: DO NOT OPEN W32.Elkern removal tools In-Reply-To: References: Message-ID: <1035216314.14578.1279.camel@erandi.boston.ximian.com> Hello, > Dudes, I don't think it was me. Doesn't this virus impersonate the sender? > I've been framed! Yes, most likely it did. Miguel From miguel@ximian.com Mon Oct 21 17:08:04 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 21 Oct 2002 12:08:04 -0400 Subject: [Mono-list] Re: Request For Assistance with Windows.Forms In-Reply-To: <1035193647.305471@tigri.napoli.consorzio-cini.it> References: <1035061615.4986.51.camel@pooh.hundredacrewood> <1035174966.14577.1257.camel@erandi.boston.ximian.com> <1035193647.305471@tigri.napoli.consorzio-cini.it> Message-ID: <1035216483.14577.1283.camel@erandi.boston.ximian.com> Hello, > Under each ot them, we have distinct .sln files. > Now, the idea is to implement a common runtime (System.Windows.Forms, > System.Windows.Forms.Design, and System.Resources dir) and then bindings to > Gtk and WINELib, or the directories are just supposed to be used for storing > class "interfaces" to pick, copy in Gtk and WINELib dir and then fill-in the > methods? It is mostly historic reasons. In the old days, we were hoping that we could make things toolkit-independent, but that turned out to not be possible if we wanted a complete binding. The Gtk directory is a relic. The only one supported is the WineLib directory. The Window.Forms directory holds code that was originally supposed to be "shared" across implementations. Miguel From brianlritchie@hotmail.com Mon Oct 21 17:46:11 2002 From: brianlritchie@hotmail.com (Brian Ritchie) Date: Mon, 21 Oct 2002 12:46:11 -0400 Subject: [Mono-list] ODBC.NET Data Provider Update Message-ID: The missing OdbcError.cs, OdbcException.cs, and OdbcErrorCollection.cs are now in CVS. > >Sorry guys...I missed a couple of files during my CVS commit. I'll have it >fixed in a couple of hours. > >Brian > _________________________________________________________________ Internet access plans that fit your lifestyle -- join MSN. http://resourcecenter.msn.com/access/plans/default.asp From fjh@cs.mu.oz.au Mon Oct 21 20:12:30 2002 From: fjh@cs.mu.oz.au (Fergus Henderson) Date: Tue, 22 Oct 2002 05:12:30 +1000 Subject: [Mono-list] Interrupting the garbage collector In-Reply-To: <200210211128.g9LBSSm26855@trna.ximian.com> References: <200210211128.g9LBSSm26855@trna.ximian.com> Message-ID: <20021021191230.GA20603@ceres.cs.mu.oz.au> On 21-Oct-2002, Holger Arnold wrote: > Hello, > a short question relating to the garbage collector: Assume that we have a > managed application using n threads T_1, ..., T_n. Let thread T_i trigger a > garbage collection. Which of the following assumptions are correct? > > (1) All threads except T_i are stopped and the garbage collection runs in > thread T_i. For Posix threads, this one is correct. (However, if you use -DPARALLEL_MARK when building the Boehm collector, then it will do parts of the garbage collection in parallel using multiple threads.) I don't know off-hand how Mono maps CLR threads to Posix threads, though I'd guess it's most likely one-to-one. -- Fergus Henderson | "I have always known that the pursuit The University of Melbourne | of excellence is a lethal habit" WWW: | -- the last words of T. S. Garp. From ginga@kit.hi-ho.ne.jp Mon Oct 21 21:09:46 2002 From: ginga@kit.hi-ho.ne.jp (ginga(A.E.)) Date: Tue, 22 Oct 2002 05:09:46 +0900 Subject: [Mono-list] Re: implementation of System.Xml.XmlElement.InnerXml In-Reply-To: <1035174069.28456.17.camel@localhost.localdomain> References: <1035099033.28456.9.camel@localhost.localdomain> <1035174069.28456.17.camel@localhost.localdomain> Message-ID: <20021022050303.63D8.GINGA@kit.hi-ho.ne.jp> Hello Duncan. Dou-itashimashite. Thank you for your advice, I'll keep in mind for the next time. > This is the fastest turnaround time > I've ever seen (from initial e-mail to mailing list to the patch > submission), this is really awesome. Maybe it is because of the jet lag of the mail :) It is a kind of easy hack, reuse of the existing code, and regardless of lightweightness (it constructs an XmlTextReader object for *each* call of InnerXml setter). Please beware of any suspicious behaviors around it ;-) Thanks. -- Atsushi From ccesario@isic.com.br Mon Oct 21 21:10:46 2002 From: ccesario@isic.com.br (Carlos Cesario) Date: Mon, 21 Oct 2002 18:10:46 -0200 Subject: [Mono-list] Gtk# error Message-ID: <3DB45F46.2090101@isic.com.br> Hi.. I'm trying to compile GTK# but the following error is showing: ---------------- . . . mcs --unsafe -o glade-viewer.exe -L ../glib -L ../pango -L ../atk -L ../gdk -L ../gtk -L ../glade -r glib-sharp.dll -r pango-sharp.dll -r atk-sharp.dll -r gdk-sharp.dll -r gtk-sharp.dll -r glade-sharp.dll -r System.Drawing GladeViewer.cs GladeViewer.cs(24) error CS0246: Cannot find type `Program' Compilation failed: 1 error(s), 0 warnings make[1]: *** [glade-viewer.exe] Error 1 make[1]: Leaving directory `/usr/src/mono/gtk-sharp/sample' make: *** [binding] Error 1 [root@tec14ccesario gtk-sharp]# ---------------------------- I have the packages glade / glade-common / libglade / libglade-dev installed in my Debian SID anybody knows how to fix it? Greets Carlos Cesario From ginga@kit.hi-ho.ne.jp Mon Oct 21 21:12:37 2002 From: ginga@kit.hi-ho.ne.jp (ginga(A.E.)) Date: Tue, 22 Oct 2002 05:12:37 +0900 Subject: [Mono-list] Re: a small XmlTextReader.ReadContent() modification In-Reply-To: References: <20021020051102.C79F.GINGA@kit.hi-ho.ne.jp> Message-ID: <20021022050952.63DB.GINGA@kit.hi-ho.ne.jp> Oops... I thought this message was failed to be sent, and this modification was already applied within the previous patch ('InnerXml' setter), so please ignore this patch;-) Thanks. -- A.Enomoto From joe@ximian.com Mon Oct 21 21:17:51 2002 From: joe@ximian.com (Joe Shaw) Date: 21 Oct 2002 16:17:51 -0400 Subject: [Mono-list] Gtk# error In-Reply-To: <3DB45F46.2090101@isic.com.br> References: <3DB45F46.2090101@isic.com.br> Message-ID: <1035231471.19585.3.camel@caedes> On Mon, 2002-10-21 at 16:10, Carlos Cesario wrote: > Hi.. > > I'm trying to compile GTK# but the following error is showing: > ---------------- > mcs --unsafe -o glade-viewer.exe -L ../glib -L ../pango -L ../atk -L > ../gdk -L ../gtk -L ../glade -r glib-sharp.dll -r pango-sharp.dll -r > atk-sharp.dll -r gdk-sharp.dll -r gtk-sharp.dll -r glade-sharp.dll -r > System.Drawing GladeViewer.cs > GladeViewer.cs(24) error CS0246: Cannot find type `Program' > ---------------------------- > > I have the packages glade / glade-common / libglade / libglade-dev > installed in my Debian SID > > anybody knows how to fix it? Looks like it's trying to build something that requires the GNOME assemblies to be built. File a bug. To workaround it, remove the glade-viewer sample from the makefile or rebuild gtk# with the gnome stuff enabled. (this will likely require you to install a bunch of the dev packages from gnome 2) Joe From ccesario@isic.com.br Mon Oct 21 22:00:25 2002 From: ccesario@isic.com.br (Carlos Cesario) Date: Mon, 21 Oct 2002 19:00:25 -0200 Subject: [Mono-list] Gtk# error References: <3DB45F46.2090101@isic.com.br> <1035231471.19585.3.camel@caedes> Message-ID: <3DB46AE9.1090709@isic.com.br> Joe, What packages do I need to install in order to compile sucessfully? thanks Carlos Cesario Joe Shaw wrote: >On Mon, 2002-10-21 at 16:10, Carlos Cesario wrote: > > >>Hi.. >> >>I'm trying to compile GTK# but the following error is showing: >>---------------- >>mcs --unsafe -o glade-viewer.exe -L ../glib -L ../pango -L ../atk -L >>../gdk -L ../gtk -L ../glade -r glib-sharp.dll -r pango-sharp.dll -r >>atk-sharp.dll -r gdk-sharp.dll -r gtk-sharp.dll -r glade-sharp.dll -r >>System.Drawing GladeViewer.cs >>GladeViewer.cs(24) error CS0246: Cannot find type `Program' >>---------------------------- >> >>I have the packages glade / glade-common / libglade / libglade-dev >>installed in my Debian SID >> >>anybody knows how to fix it? >> >> > >Looks like it's trying to build something that requires the GNOME >assemblies to be built. File a bug. > >To workaround it, remove the glade-viewer sample from the makefile or >rebuild gtk# with the gnome stuff enabled. (this will likely require >you to install a bunch of the dev packages from gnome 2) > >Joe > >_______________________________________________ >Mono-list maillist - Mono-list@ximian.com >http://lists.ximian.com/mailman/listinfo/mono-list > > > > From ccesario@isic.com.br Mon Oct 21 22:08:01 2002 From: ccesario@isic.com.br (Carlos Cesario) Date: Mon, 21 Oct 2002 19:08:01 -0200 Subject: [Mono-list] Gtk# error References: <3DB45F46.2090101@isic.com.br> <1035231471.19585.3.camel@caedes> <3DB469CA.5000808@isic.com.br> <1035234000.19538.9.camel@caedes> Message-ID: <3DB46CB1.1000900@isic.com.br> Joe. I'm have this packs installeds.... but is ocurred the error :( Carlos Cesario Joe Shaw wrote: >On Mon, 2002-10-21 at 16:55, Carlos Cesario wrote: > > >>What packages do I need to install in order to compile sucessfully? >> >> > >I don't know, I haven't used Debian in years, and certainly not since >GNOME 2 was released. I sort of remember them being something like >"libgnome-dev" "libgnomeui-dev" and such. Maybe it was >"libgnome32-dev", though. Something like that; do an apt-cache search >for it. > >Joe > > > > From Jperry@1800contacts.com Tue Oct 22 00:58:14 2002 From: Jperry@1800contacts.com (Joshua Perry) Date: Mon, 21 Oct 2002 17:58:14 -0600 Subject: [Mono-list] Building Mono! Please HELP... Message-ID: <39E429CE4B853C41B14FF7961B36BC0406E8A5@EX-MAILSTORE.CTAC.1800contacts.com> OK I am at my wits end trying to build mono. I have automake, pkg-config, the boehm GC and everything that I know of installed on my RH8.0 system. I have tried to build by hand, with the mono-build.sh, and using autogen.sh. I have tried with source checked out from AnonCVS, from a nightly snapshot(20-10-2002) and with the release tarball for 0.16. autogen.sh both manually and from mono-build.sh looks like this: Running libtoolize... You should update your `aclocal.m4' by running aclocal. Running aclocal ... Running autoheader... WARNING: Using auxiliary files such as `acconfig.h', `config.h.bot' WARNING: and `config.h.top', to define templates for `config.h.in' WARNING: is deprecated and discouraged. WARNING: Using the third argument of `AC_DEFINE' and WARNING: `AC_DEFINE_UNQUOTED' allows to define a template without WARNING: `acconfig.h': WARNING: AC_DEFINE([NEED_MAIN], 1, WARNING: [Define if a function `main' is needed.]) WARNING: More sophisticated templates can also be produced, see the WARNING: documentation. autoheader: `config.h.in' is unchanged Running automake --gnu ... mono/arch/Makefile.am: installing `./depcomp' configure.in:498: CFLAGS was already defined in condition TRUE, which implies condition PLATFORM_WIN32_TRUE # The mingw math.h has "extern inline" functions that dont appear in libs, so # optimisation is required to actually inline them CFLAGS (User, where = configure.in:498) += { TRUE => @CFLAGS@ } automake: mono/jit/Makefile.am: object `win32-exception.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `codegen-x86.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `emit-x86.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `regset.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `debug.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `debug-stabs.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `debug-dwarf2.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `jit.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `trampoline.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `exception.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `linear-scan.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `helpers.$(OBJEXT)' created both with libtool and without configure.in:498: CFLAGS was already defined in condition TRUE, which implies condition PLATFORM_WIN32_TRUE # The mingw math.h has "extern inline" functions that dont appear in libs, so # optimisation is required to actually inline them CFLAGS (User, where = configure.in:498) += { TRUE => @CFLAGS@ } automake: mono/jit/Makefile.am: object `win32-exception.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `codegen-x86.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `emit-x86.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `regset.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `debug.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `debug-stabs.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `debug-dwarf2.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `jit.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `trampoline.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `exception.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `linear-scan.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `helpers.$(OBJEXT)' created both with libtool and without **Error**: automake failed. I am not super experienced using automake and autoconf or building large systems on linux. I am really excited to start helping with System.Windows.Forms, but I need to get mono to build fist! :) ANY help would be appreciated! Joshua Perry 1-800 CONTACTS, INC. Information Systems Developer (801)924-9828 From pokey@linuxmail.org Tue Oct 22 01:24:48 2002 From: pokey@linuxmail.org (Pokey the Penguin) Date: 22 Oct 2002 01:24:48 +0100 Subject: [Mono-list] Building Mono! Please HELP... In-Reply-To: <39E429CE4B853C41B14FF7961B36BC0406E8A5@EX-MAILSTORE.CTAC.1800contacts.com> References: <39E429CE4B853C41B14FF7961B36BC0406E8A5@EX-MAILSTORE.CTAC.1800contacts.com> Message-ID: <1035246289.9774.11.camel@star> --=-Sz37eDD/gCmKT8vpu9Qz Content-Type: text/plain Content-Transfer-Encoding: 7bit Mono has not yet been updated to work with the more recent automake provided with RedHat 8.0 and Debian unstable. The provided patch should work around the problem for now. -- .---. | o_o | | \_/ | // \ \ penguins (| mono | ) do it best /'\_ _/`\ \___)==(___/ --=-Sz37eDD/gCmKT8vpu9Qz Content-Disposition: attachment; filename=autogen.patch Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; name=autogen.patch; charset=ISO-8859-1 --- ../mono.orig/autogen.sh 2001-11-09 16:39:49.000000000 +0000 +++ autogen.sh 2002-10-22 01:22:46.000000000 +0100 @@ -104,7 +104,7 @@ =20 echo "Running automake --gnu $am_opt ..." automake --add-missing --gnu $am_opt || - { echo "**Error**: automake failed."; exit 1; } + { echo "**Error**: automake failed."; } echo "Running autoconf ..." autoconf || { echo "**Error**: autoconf failed."; exit 1; } =20 --=-Sz37eDD/gCmKT8vpu9Qz-- From rodrigo@ximian.com Tue Oct 22 01:35:50 2002 From: rodrigo@ximian.com (Rodrigo Moya) Date: 22 Oct 2002 02:35:50 +0200 Subject: [Mono-list] portable SQL In-Reply-To: References: Message-ID: <1035246949.18396.15.camel@localhost> On Mon, 2002-10-21 at 17:23, Tim Terlegård wrote: > Coding SQL for multiple vendors is not that cool. One have > to write every SQL statement twice or more. If one all of a > sudden wants to support another rdbms vendor, one will have > some work to do. So portable SQL would be nice... > > My understanding is that ADO.NET doesn't provide any > facility for portable SQL, is that correct? Are there any plans > for Mono to provide som sort of object oriented api one could > use that builds native SQL statements? > libgda (http://www.gnome-db.org) already tries to hide SQL as much as possible, and as there are C# bindings for it as part of the GTK# project, I guess that's one way you've got. Another possibility would be to add extra classes in Mono.Data to hide the SQL differences. There are no plans for this so far, but of course, we're open to any discussion/contribution. cheers -- Rodrigo Moya From Sebastien Pouliot Tue Oct 22 02:26:31 2002 From: Sebastien Pouliot (Sebastien Pouliot) Date: Mon, 21 Oct 2002 21:26:31 -0400 Subject: [Mono-list] Firebird MS .Net Data Provider Message-ID: <008201c2796a$0d115850$0301a8c0@einstein> I just saw this today (at job). It would be cool if it (too) was compatible with Mono (which is quickly becoming the most db connected environment I know!). Firebird Project Development News 16-October-2002 The first release (Alpha) of the new Firebird MS .Net Data Provider module is now available for download. The new data provider/driver is written in C# and provides a high-performance native implementation of the GDS32/API functions. This means that .Net developers will be able to access Firebird databases without the need of Firebird client install. In support of the new module, a new mailing list "firebird-net-provider" has been created. Please use this list for any questions that you may have about the provider. This provider has been made available by Carlos Guzmán Álvarez (aka "Carlos G.A."), who has also made a number of contributions to the OdbcJdbc code. http://firebird.sourceforge.net/index.php Cheers! Sebastien Pouliot Security Architect, Motus Technologies, http://www.motus.com/ work: spouliot@motus.com home: spouliot@videotron.ca From miguel@ximian.com Tue Oct 22 02:24:25 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 21 Oct 2002 21:24:25 -0400 Subject: [Mono-list] Help needed with XSLT transformations (documentation browser) In-Reply-To: <1035169819.23351.50.camel@emma> References: <1034302508.14577.313.camel@erandi.boston.ximian.com> <1035113332.19384.95.camel@emma> <1035141790.19385.106.camel@emma> <1035169819.23351.50.camel@emma> Message-ID: <1035249864.14578.1337.camel@erandi.boston.ximian.com> Hello! > http://www.rinspin.com/~bronson/mono/statidoc-0.11/ > > I didn't manage to get the member lists working this weekend (DRAT!). I > probably won't have time to work on them again much until Thursday. > They should be pretty cool. I hope they're worth the wait. Thanks a lot! We will keep an eye on the progress ;-) Miguel From jonpryor@vt.edu Tue Oct 22 04:08:59 2002 From: jonpryor@vt.edu (Jonathan Pryor) Date: 21 Oct 2002 23:08:59 -0400 Subject: [Mono-list] Building Mono! Please HELP... In-Reply-To: <39E429CE4B853C41B14FF7961B36BC0406E8A5@EX-MAILSTORE.CTAC.1800contacts.com> References: <39E429CE4B853C41B14FF7961B36BC0406E8A5@EX-MAILSTORE.CTAC.1800contacts.com> Message-ID: <1035256140.10343.296.camel@melchior.magi> You wouldn't happen to be running on Red Hat 8.0, would you? I'm seeing the same errors as well. I haven't taken the time to figure out why it's failing, though. I'd be interested in knowing the answer to this as well. - Jon On Mon, 2002-10-21 at 19:58, Joshua Perry wrote: > OK I am at my wits end trying to build mono. I have automake, > pkg-config, the boehm GC and everything that I know of installed on my > RH8.0 system. I have tried to build by hand, with the mono-build.sh, > and using autogen.sh. I have tried with source checked out from > AnonCVS, from a nightly snapshot(20-10-2002) and with the release > tarball for 0.16. > > autogen.sh both manually and from mono-build.sh looks like this: > > > > Running libtoolize... > You should update your `aclocal.m4' by running aclocal. > Running aclocal ... > Running autoheader... > WARNING: Using auxiliary files such as `acconfig.h', `config.h.bot' > WARNING: and `config.h.top', to define templates for `config.h.in' > WARNING: is deprecated and discouraged. > > WARNING: Using the third argument of `AC_DEFINE' and > WARNING: `AC_DEFINE_UNQUOTED' allows to define a template without > WARNING: `acconfig.h': > > WARNING: AC_DEFINE([NEED_MAIN], 1, > WARNING: [Define if a function `main' is needed.]) > > WARNING: More sophisticated templates can also be produced, see the > WARNING: documentation. > autoheader: `config.h.in' is unchanged > Running automake --gnu ... > mono/arch/Makefile.am: installing `./depcomp' > configure.in:498: CFLAGS was already defined in condition TRUE, which > implies condition PLATFORM_WIN32_TRUE > # The mingw math.h has "extern inline" functions that dont appear in > libs, so > # optimisation is required to actually inline them > CFLAGS (User, where = configure.in:498) += > { > TRUE => @CFLAGS@ > } > automake: mono/jit/Makefile.am: object `win32-exception.$(OBJEXT)' > created both > with libtool and without > automake: mono/jit/Makefile.am: object `codegen-x86.$(OBJEXT)' created > both with libtool and without > automake: mono/jit/Makefile.am: object `emit-x86.$(OBJEXT)' created both > with libtool and without > automake: mono/jit/Makefile.am: object `regset.$(OBJEXT)' created both > with libtool and without > automake: mono/jit/Makefile.am: object `debug.$(OBJEXT)' created both > with libtool and without > automake: mono/jit/Makefile.am: object `debug-stabs.$(OBJEXT)' created > both with libtool and without > automake: mono/jit/Makefile.am: object `debug-dwarf2.$(OBJEXT)' created > both with libtool and without > automake: mono/jit/Makefile.am: object `jit.$(OBJEXT)' created both with > libtool and without > automake: mono/jit/Makefile.am: object `trampoline.$(OBJEXT)' created > both with > libtool and without > automake: mono/jit/Makefile.am: object `exception.$(OBJEXT)' created > both with libtool and without > automake: mono/jit/Makefile.am: object `linear-scan.$(OBJEXT)' created > both with libtool and without > automake: mono/jit/Makefile.am: object `helpers.$(OBJEXT)' created both > with libtool and without > configure.in:498: CFLAGS was already defined in condition TRUE, which > implies condition PLATFORM_WIN32_TRUE > # The mingw math.h has "extern inline" functions that dont appear in > libs, so > # optimisation is required to actually inline them > CFLAGS (User, where = configure.in:498) += > { > TRUE => @CFLAGS@ > } > automake: mono/jit/Makefile.am: object `win32-exception.$(OBJEXT)' > created both > with libtool and without > automake: mono/jit/Makefile.am: object `codegen-x86.$(OBJEXT)' created > both with libtool and without > automake: mono/jit/Makefile.am: object `emit-x86.$(OBJEXT)' created both > with libtool and without > automake: mono/jit/Makefile.am: object `regset.$(OBJEXT)' created both > with libtool and without > automake: mono/jit/Makefile.am: object `debug.$(OBJEXT)' created both > with libtool and without > automake: mono/jit/Makefile.am: object `debug-stabs.$(OBJEXT)' created > both with libtool and without > automake: mono/jit/Makefile.am: object `debug-dwarf2.$(OBJEXT)' created > both with libtool and without > automake: mono/jit/Makefile.am: object `jit.$(OBJEXT)' created both with > libtool and without > automake: mono/jit/Makefile.am: object `trampoline.$(OBJEXT)' created > both with > libtool and without > automake: mono/jit/Makefile.am: object `exception.$(OBJEXT)' created > both with libtool and without > automake: mono/jit/Makefile.am: object `linear-scan.$(OBJEXT)' created > both with libtool and without > automake: mono/jit/Makefile.am: object `helpers.$(OBJEXT)' created both > with libtool and without > **Error**: automake failed. > > > > I am not super experienced using automake and autoconf or building large > systems on linux. > > I am really excited to start helping with System.Windows.Forms, but I > need to get mono to build fist! :) > > ANY help would be appreciated! > > Joshua Perry > 1-800 CONTACTS, INC. > Information Systems Developer > (801)924-9828 > > _______________________________________________ > Mono-list maillist - Mono-list@ximian.com > http://lists.ximian.com/mailman/listinfo/mono-list From jowenn@kde.org Mon Oct 21 17:16:00 2002 From: jowenn@kde.org (Joseph Wenninger) Date: 21 Oct 2002 18:16:00 +0200 Subject: [Mono-list] compile problem with corelib Message-ID: <1035216961.1382.4.camel@jowennmobile> --=-Idjkkbr2aKfkIUTrXeHj Content-Type: text/plain Content-Transfer-Encoding: 7bit Hi I had a compile problem with the crypto stuff in the corelib. A file contained ^M special characters. (I assume they are windows carriage returns). After I've removed them it compiles fine. I'm attaching the modified file. It would be nice, if someone with CVS access could put it in. Kind regards Joseph Wenninger --=-Idjkkbr2aKfkIUTrXeHj Content-Disposition: attachment; filename=RC2CryptoServiceProvider.cs Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; name=RC2CryptoServiceProvider.cs; charset=ISO-8859-15 // // System.Security.Cryptography.RC2CryptoServiceProvider.cs // // Authors: // Andrew Birkett (andy@nobugs.org) // Sebastien Pouliot (spouliot@motus.com) // // Portions (C) 2002 Motus Technologies Inc. (http://www.motus.com) // =20 using System; namespace System.Security.Cryptography { // References: // a. IETF RFC2286: A Description of the RC2(r) Encryption Algorithm // http://www.ietf.org/rfc/rfc2268.txt public sealed class RC2CryptoServiceProvider : RC2 { public RC2CryptoServiceProvider() { } public override ICryptoTransform CreateDecryptor(byte[] rgbKey, byte[] rgb= IV) { Key =3D rgbKey; IV =3D rgbIV; return new RC2Transform (this, false); } public override ICryptoTransform CreateEncryptor(byte[] rgbKey, byte[] rgb= IV) { Key =3D rgbKey; IV =3D rgbIV; return new RC2Transform (this, true); } [MonoTODO] public override void GenerateIV() { IVValue =3D new byte[BlockSizeValue / 8]; for (int i=3D0; i < IVValue.Length; i++) IVValue[i] =3D 0; } [MonoTODO] public override void GenerateKey() { KeyValue =3D new byte[KeySizeValue / 8]; for (int i=3D0; i < KeyValue.Length; i++) KeyValue[i] =3D 0; } } internal class RC2Transform : SymmetricTransform { public RC2Transform (RC2 rc2Algo, bool encryption) : base (rc2Algo, encry= ption, rc2Algo.IV) { R =3D new UInt32 [4]; KeySetup (rc2Algo.Key, rc2Algo.EffectiveKeySize); } private void KeySetup (byte[] key, int t1)=20 { =09 // Expand key into a byte array, then convert to word // array since we always access the key in 16bit chunks. byte[] L =3D new byte [128]; =09 int t =3D key.Length; int t8 =3D ((t1 + 7) >> 3); // divide by 8 int tm =3D 255 % (2 << (8 + t1 - 8*t8 - 1)); =09 Array.Copy (key, 0, L, 0, t); =09 for (int i=3Dt; i < 128; i++)=20 L [i] =3D (byte) (pitable [(L [i-1] + L [i-t]) & 0xff]); =09 L [128-t8] =3D pitable [L [128-t8] & tm]; =09 for (int i=3D127-t8; i >=3D 0; i--)=20 L [i] =3D pitable [L [i+1] ^ L [i+t8]]; =09 K =3D new UInt32 [64]; int pos =3D 0; for (int i=3D0; i < 64; i++)=20 K [i] =3D (UInt32) (L [pos++] + L [pos++] * 256); } protected override void ECB (byte[] input, byte[] output)=20 { // unrolled loop, eliminated mul R [0] =3D (UInt32) (input [0] + (input [1] << 8)); R [1] =3D (UInt32) (input [2] + (input [3] << 8)); R [2] =3D (UInt32) (input [4] + (input [5] << 8)); R [3] =3D (UInt32) (input [6] + (input [7] << 8)); =09 if (encrypt) { j =3D 0; Mix(); Mix(); Mix(); Mix(); Mix(); Mash(); Mix(); Mix(); Mix(); Mix(); Mix(); Mix(); Mash(); Mix(); Mix(); Mix(); Mix(); Mix(); }=20 else { j =3D 63; RMix(); RMix(); RMix(); RMix(); RMix(); RMash(); RMix(); RMix(); RMix(); RMix(); RMix(); RMix(); RMash(); RMix(); RMix(); RMix(); RMix(); RMix(); } // unrolled loop output[0] =3D (byte) (R [0] & 0xff); output[1] =3D (byte) ((R [0] >> 8) & 0xff); output[2] =3D (byte) (R [1] & 0xff); output[3] =3D (byte) ((R [1] >> 8) & 0xff); output[4] =3D (byte) (R [2] & 0xff); output[5] =3D (byte) ((R [2] >> 8) & 0xff); output[6] =3D (byte) (R [3] & 0xff); output[7] =3D (byte) ((R [3] >> 8) & 0xff); } static public byte[] pitable =3D { 0xd9, 0x78, 0xf9, 0xc4, 0x19, 0xdd, 0xb5, 0xed,=20 0x28, 0xe9, 0xfd, 0x79, 0x4a, 0xa0, 0xd8, 0x9d, 0xc6, 0x7e, 0x37, 0x83, 0x2b, 0x76, 0x53, 0x8e,=20 0x62, 0x4c, 0x64, 0x88, 0x44, 0x8b, 0xfb, 0xa2, 0x17, 0x9a, 0x59, 0xf5, 0x87, 0xb3, 0x4f, 0x13,=20 0x61, 0x45, 0x6d, 0x8d, 0x09, 0x81, 0x7d, 0x32, 0xbd, 0x8f, 0x40, 0xeb, 0x86, 0xb7, 0x7b, 0x0b,=20 0xf0, 0x95, 0x21, 0x22, 0x5c, 0x6b, 0x4e, 0x82, 0x54, 0xd6, 0x65, 0x93, 0xce, 0x60, 0xb2, 0x1c,=20 0x73, 0x56, 0xc0, 0x14, 0xa7, 0x8c, 0xf1, 0xdc, 0x12, 0x75, 0xca, 0x1f, 0x3b, 0xbe, 0xe4, 0xd1,=20 0x42, 0x3d, 0xd4, 0x30, 0xa3, 0x3c, 0xb6, 0x26, 0x6f, 0xbf, 0x0e, 0xda, 0x46, 0x69, 0x07, 0x57,=20 0x27, 0xf2, 0x1d, 0x9b, 0xbc, 0x94, 0x43, 0x03, 0xf8, 0x11, 0xc7, 0xf6, 0x90, 0xef, 0x3e, 0xe7,=20 0x06, 0xc3, 0xd5, 0x2f, 0xc8, 0x66, 0x1e, 0xd7, 0x08, 0xe8, 0xea, 0xde, 0x80, 0x52, 0xee, 0xf7,=20 0x84, 0xaa, 0x72, 0xac, 0x35, 0x4d, 0x6a, 0x2a, 0x96, 0x1a, 0xd2, 0x71, 0x5a, 0x15, 0x49, 0x74,=20 0x4b, 0x9f, 0xd0, 0x5e, 0x04, 0x18, 0xa4, 0xec, 0xc2, 0xe0, 0x41, 0x6e, 0x0f, 0x51, 0xcb, 0xcc,=20 0x24, 0x91, 0xaf, 0x50, 0xa1, 0xf4, 0x70, 0x39, 0x99, 0x7c, 0x3a, 0x85, 0x23, 0xb8, 0xb4, 0x7a,=20 0xfc, 0x02, 0x36, 0x5b, 0x25, 0x55, 0x97, 0x31, 0x2d, 0x5d, 0xfa, 0x98, 0xe3, 0x8a, 0x92, 0xae,=20 0x05, 0xdf, 0x29, 0x10, 0x67, 0x6c, 0xba, 0xc9, 0xd3, 0x00, 0xe6, 0xcf, 0xe1, 0x9e, 0xa8, 0x2c,=20 0x63, 0x16, 0x01, 0x3f, 0x58, 0xe2, 0x89, 0xa9, 0x0d, 0x38, 0x34, 0x1b, 0xab, 0x33, 0xff, 0xb0,=20 0xbb, 0x48, 0x0c, 0x5f, 0xb9, 0xb1, 0xcd, 0x2e, 0xc5, 0xf3, 0xdb, 0x47, 0xe5, 0xa5, 0x9c, 0x77,=20 0x0a, 0xa6, 0x20, 0x68, 0xfe, 0x7f, 0xc1, 0xad }; =09 // The expanded key (in bottom 16 bits of each word) public UInt32[] K; =09 // The state (again in bottom 16 bits, although we only // clear the top 16 bits if needed) private UInt32[] R; =09 // Key indexer private int j; =09 private void Mix()=20 { R[0] +=3D K[j] + (R[3] & R[2]) + ((~R[3]) & R[1]); R[0] =3D (R[0] << 1) | (R[0]>>15 & 0x1); =09 R[1] +=3D K[j+1] + (R[0] & R[3]) + ((~R[0]) & R[2]); R[1] =3D (R[1] << 2) | (R[1]>>14 & 0x3); =09 R[2] +=3D K[j+2] + (R[1] & R[0]) + ((~R[1]) & R[3]); R[2] =3D (R[2] << 3) | (R[2]>>13 & 0x7); =09 R[3] +=3D K[j+3] + (R[2] & R[1]) + ((~R[2]) & R[0]); R[3] =3D (R[3] << 5) | (R[3]>>11 & 0x1f); j +=3D 4;=09 } =09 private void RMix()=20 { R[3] &=3D 0xffff; R[3] =3D (R[3] >> 5) | ((R[3] & 0x1f) << 11); R[3] -=3D K[j] + (R[2] & R[1]) + ((~R[2]) & R[0]); =09 R[2] &=3D 0xffff; R[2] =3D (R[2] >> 3) | ((R[2] & 0x7) << 13); R[2] -=3D K[j-1] + (R[1] & R[0]) + ((~R[1]) & R[3]); R[1] &=3D 0xffff; R[1] =3D (R[1] >> 2) | ((R[1] & 0x3) << 14); R[1] -=3D K[j-2] + (R[0] & R[3]) + ((~R[0]) & R[2]); =09 R[0] &=3D 0xffff; R[0] =3D (R[0] >> 1) | ((R[0] & 0x1) << 15); R[0] -=3D K[j-3] + (R[3] & R[2]) + ((~R[3]) & R[1]); =09 j -=3D 4; } private void Mash () { R [0] +=3D K [R [3] & 63]; R [1] +=3D K [R [0] & 63]; R [2] +=3D K [R [1] & 63]; R [3] +=3D K [R [2] & 63]; } private void RMash () { R [3] -=3D K [R [2] & 63]; R [2] -=3D K [R [1] & 63]; R [1] -=3D K [R [0] & 63]; R [0] -=3D K [R [3] & 63]; } } } --=-Idjkkbr2aKfkIUTrXeHj-- From jowenn@kde.org Mon Oct 21 17:16:00 2002 From: jowenn@kde.org (Joseph Wenninger) Date: 21 Oct 2002 18:16:00 +0200 Subject: [Mono-list] compile problem with corelib Message-ID: <1035216961.1382.4.camel@jowennmobile> --=-Idjkkbr2aKfkIUTrXeHj Content-Type: text/plain Content-Transfer-Encoding: 7bit Hi I had a compile problem with the crypto stuff in the corelib. A file contained ^M special characters. (I assume they are windows carriage returns). After I've removed them it compiles fine. I'm attaching the modified file. It would be nice, if someone with CVS access could put it in. Kind regards Joseph Wenninger --=-Idjkkbr2aKfkIUTrXeHj Content-Disposition: attachment; filename=RC2CryptoServiceProvider.cs Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; name=RC2CryptoServiceProvider.cs; charset=ISO-8859-15 // // System.Security.Cryptography.RC2CryptoServiceProvider.cs // // Authors: // Andrew Birkett (andy@nobugs.org) // Sebastien Pouliot (spouliot@motus.com) // // Portions (C) 2002 Motus Technologies Inc. (http://www.motus.com) // =20 using System; namespace System.Security.Cryptography { // References: // a. IETF RFC2286: A Description of the RC2(r) Encryption Algorithm // http://www.ietf.org/rfc/rfc2268.txt public sealed class RC2CryptoServiceProvider : RC2 { public RC2CryptoServiceProvider() { } public override ICryptoTransform CreateDecryptor(byte[] rgbKey, byte[] rgb= IV) { Key =3D rgbKey; IV =3D rgbIV; return new RC2Transform (this, false); } public override ICryptoTransform CreateEncryptor(byte[] rgbKey, byte[] rgb= IV) { Key =3D rgbKey; IV =3D rgbIV; return new RC2Transform (this, true); } [MonoTODO] public override void GenerateIV() { IVValue =3D new byte[BlockSizeValue / 8]; for (int i=3D0; i < IVValue.Length; i++) IVValue[i] =3D 0; } [MonoTODO] public override void GenerateKey() { KeyValue =3D new byte[KeySizeValue / 8]; for (int i=3D0; i < KeyValue.Length; i++) KeyValue[i] =3D 0; } } internal class RC2Transform : SymmetricTransform { public RC2Transform (RC2 rc2Algo, bool encryption) : base (rc2Algo, encry= ption, rc2Algo.IV) { R =3D new UInt32 [4]; KeySetup (rc2Algo.Key, rc2Algo.EffectiveKeySize); } private void KeySetup (byte[] key, int t1)=20 { =09 // Expand key into a byte array, then convert to word // array since we always access the key in 16bit chunks. byte[] L =3D new byte [128]; =09 int t =3D key.Length; int t8 =3D ((t1 + 7) >> 3); // divide by 8 int tm =3D 255 % (2 << (8 + t1 - 8*t8 - 1)); =09 Array.Copy (key, 0, L, 0, t); =09 for (int i=3Dt; i < 128; i++)=20 L [i] =3D (byte) (pitable [(L [i-1] + L [i-t]) & 0xff]); =09 L [128-t8] =3D pitable [L [128-t8] & tm]; =09 for (int i=3D127-t8; i >=3D 0; i--)=20 L [i] =3D pitable [L [i+1] ^ L [i+t8]]; =09 K =3D new UInt32 [64]; int pos =3D 0; for (int i=3D0; i < 64; i++)=20 K [i] =3D (UInt32) (L [pos++] + L [pos++] * 256); } protected override void ECB (byte[] input, byte[] output)=20 { // unrolled loop, eliminated mul R [0] =3D (UInt32) (input [0] + (input [1] << 8)); R [1] =3D (UInt32) (input [2] + (input [3] << 8)); R [2] =3D (UInt32) (input [4] + (input [5] << 8)); R [3] =3D (UInt32) (input [6] + (input [7] << 8)); =09 if (encrypt) { j =3D 0; Mix(); Mix(); Mix(); Mix(); Mix(); Mash(); Mix(); Mix(); Mix(); Mix(); Mix(); Mix(); Mash(); Mix(); Mix(); Mix(); Mix(); Mix(); }=20 else { j =3D 63; RMix(); RMix(); RMix(); RMix(); RMix(); RMash(); RMix(); RMix(); RMix(); RMix(); RMix(); RMix(); RMash(); RMix(); RMix(); RMix(); RMix(); RMix(); } // unrolled loop output[0] =3D (byte) (R [0] & 0xff); output[1] =3D (byte) ((R [0] >> 8) & 0xff); output[2] =3D (byte) (R [1] & 0xff); output[3] =3D (byte) ((R [1] >> 8) & 0xff); output[4] =3D (byte) (R [2] & 0xff); output[5] =3D (byte) ((R [2] >> 8) & 0xff); output[6] =3D (byte) (R [3] & 0xff); output[7] =3D (byte) ((R [3] >> 8) & 0xff); } static public byte[] pitable =3D { 0xd9, 0x78, 0xf9, 0xc4, 0x19, 0xdd, 0xb5, 0xed,=20 0x28, 0xe9, 0xfd, 0x79, 0x4a, 0xa0, 0xd8, 0x9d, 0xc6, 0x7e, 0x37, 0x83, 0x2b, 0x76, 0x53, 0x8e,=20 0x62, 0x4c, 0x64, 0x88, 0x44, 0x8b, 0xfb, 0xa2, 0x17, 0x9a, 0x59, 0xf5, 0x87, 0xb3, 0x4f, 0x13,=20 0x61, 0x45, 0x6d, 0x8d, 0x09, 0x81, 0x7d, 0x32, 0xbd, 0x8f, 0x40, 0xeb, 0x86, 0xb7, 0x7b, 0x0b,=20 0xf0, 0x95, 0x21, 0x22, 0x5c, 0x6b, 0x4e, 0x82, 0x54, 0xd6, 0x65, 0x93, 0xce, 0x60, 0xb2, 0x1c,=20 0x73, 0x56, 0xc0, 0x14, 0xa7, 0x8c, 0xf1, 0xdc, 0x12, 0x75, 0xca, 0x1f, 0x3b, 0xbe, 0xe4, 0xd1,=20 0x42, 0x3d, 0xd4, 0x30, 0xa3, 0x3c, 0xb6, 0x26, 0x6f, 0xbf, 0x0e, 0xda, 0x46, 0x69, 0x07, 0x57,=20 0x27, 0xf2, 0x1d, 0x9b, 0xbc, 0x94, 0x43, 0x03, 0xf8, 0x11, 0xc7, 0xf6, 0x90, 0xef, 0x3e, 0xe7,=20 0x06, 0xc3, 0xd5, 0x2f, 0xc8, 0x66, 0x1e, 0xd7, 0x08, 0xe8, 0xea, 0xde, 0x80, 0x52, 0xee, 0xf7,=20 0x84, 0xaa, 0x72, 0xac, 0x35, 0x4d, 0x6a, 0x2a, 0x96, 0x1a, 0xd2, 0x71, 0x5a, 0x15, 0x49, 0x74,=20 0x4b, 0x9f, 0xd0, 0x5e, 0x04, 0x18, 0xa4, 0xec, 0xc2, 0xe0, 0x41, 0x6e, 0x0f, 0x51, 0xcb, 0xcc,=20 0x24, 0x91, 0xaf, 0x50, 0xa1, 0xf4, 0x70, 0x39, 0x99, 0x7c, 0x3a, 0x85, 0x23, 0xb8, 0xb4, 0x7a,=20 0xfc, 0x02, 0x36, 0x5b, 0x25, 0x55, 0x97, 0x31, 0x2d, 0x5d, 0xfa, 0x98, 0xe3, 0x8a, 0x92, 0xae,=20 0x05, 0xdf, 0x29, 0x10, 0x67, 0x6c, 0xba, 0xc9, 0xd3, 0x00, 0xe6, 0xcf, 0xe1, 0x9e, 0xa8, 0x2c,=20 0x63, 0x16, 0x01, 0x3f, 0x58, 0xe2, 0x89, 0xa9, 0x0d, 0x38, 0x34, 0x1b, 0xab, 0x33, 0xff, 0xb0,=20 0xbb, 0x48, 0x0c, 0x5f, 0xb9, 0xb1, 0xcd, 0x2e, 0xc5, 0xf3, 0xdb, 0x47, 0xe5, 0xa5, 0x9c, 0x77,=20 0x0a, 0xa6, 0x20, 0x68, 0xfe, 0x7f, 0xc1, 0xad }; =09 // The expanded key (in bottom 16 bits of each word) public UInt32[] K; =09 // The state (again in bottom 16 bits, although we only // clear the top 16 bits if needed) private UInt32[] R; =09 // Key indexer private int j; =09 private void Mix()=20 { R[0] +=3D K[j] + (R[3] & R[2]) + ((~R[3]) & R[1]); R[0] =3D (R[0] << 1) | (R[0]>>15 & 0x1); =09 R[1] +=3D K[j+1] + (R[0] & R[3]) + ((~R[0]) & R[2]); R[1] =3D (R[1] << 2) | (R[1]>>14 & 0x3); =09 R[2] +=3D K[j+2] + (R[1] & R[0]) + ((~R[1]) & R[3]); R[2] =3D (R[2] << 3) | (R[2]>>13 & 0x7); =09 R[3] +=3D K[j+3] + (R[2] & R[1]) + ((~R[2]) & R[0]); R[3] =3D (R[3] << 5) | (R[3]>>11 & 0x1f); j +=3D 4;=09 } =09 private void RMix()=20 { R[3] &=3D 0xffff; R[3] =3D (R[3] >> 5) | ((R[3] & 0x1f) << 11); R[3] -=3D K[j] + (R[2] & R[1]) + ((~R[2]) & R[0]); =09 R[2] &=3D 0xffff; R[2] =3D (R[2] >> 3) | ((R[2] & 0x7) << 13); R[2] -=3D K[j-1] + (R[1] & R[0]) + ((~R[1]) & R[3]); R[1] &=3D 0xffff; R[1] =3D (R[1] >> 2) | ((R[1] & 0x3) << 14); R[1] -=3D K[j-2] + (R[0] & R[3]) + ((~R[0]) & R[2]); =09 R[0] &=3D 0xffff; R[0] =3D (R[0] >> 1) | ((R[0] & 0x1) << 15); R[0] -=3D K[j-3] + (R[3] & R[2]) + ((~R[3]) & R[1]); =09 j -=3D 4; } private void Mash () { R [0] +=3D K [R [3] & 63]; R [1] +=3D K [R [0] & 63]; R [2] +=3D K [R [1] & 63]; R [3] +=3D K [R [2] & 63]; } private void RMash () { R [3] -=3D K [R [2] & 63]; R [2] -=3D K [R [1] & 63]; R [1] -=3D K [R [0] & 63]; R [0] -=3D K [R [3] & 63]; } } } --=-Idjkkbr2aKfkIUTrXeHj-- From mauri-he@uniandes.edu.co Tue Oct 22 06:19:40 2002 From: mauri-he@uniandes.edu.co (=?ISO-8859-1?Q?Mauricio_Hern=E1ndez_Dur=E1n?=) Date: Tue, 22 Oct 2002 00:19:40 -0500 Subject: [Mono-list] Problems compiling from CVS Message-ID: <3DB4DFEC.70701@uniandes.edu.co> Hi everyone! I checked out the code from cvs just like it says in download.html . Now the problem is that when I run make in the mono directory I get the following message: make[2]: Entering directory `/home/hero/working/go-mono/mono/runtime' cp ../../mcs/mcs/mcs.exe . cp: cannot stat `../../mcs/mcs/mcs.exe': No such file or directory make[2]: *** [mcs.exe] Error 1 make[2]: Leaving directory `/home/hero/working/go-mono/mono/runtime' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/home/hero/working/go-mono/mono' make: *** [all-recursive-am] Error 2 And if I try to run make in the mcs directory is says the following: make[1]: Entering directory `/home/hero/working/go-mono/mcs/mcs' mcs /target:exe -o mcs.exe assign.cs attribute.cs driver.cs cs-parser.cs cs-tokenizer.cs tree.cs location.cs cfold.cs class.cs codegen.cs const.cs constant.cs decl.cs delegate.cs enum.cs ecore.cs expression.cs genericparser.cs interface.cs literal.cs modifiers.cs namespace.cs parameter.cs pending.cs report.cs rootcontext.cs statement.cs support.cs typemanager.cs make[1]: mcs: Command not found make[1]: *** [mcs.exe] Error 127 make[1]: Leaving directory `/home/hero/working/go-mono/mcs/mcs' make: *** [install] Error 1 any sugestions or link to a solution highly welocome and apreciated! Best regards and happy hacking! -- Mauricio Hernández Durán QOTD: Don't let people drive you crazy when you know it's in walking distance. From mauri-he@uniandes.edu.co Tue Oct 22 06:19:40 2002 From: mauri-he@uniandes.edu.co (=?ISO-8859-1?Q?Mauricio_Hern=E1ndez_Dur=E1n?=) Date: Tue, 22 Oct 2002 00:19:40 -0500 Subject: [Mono-list] Problems compiling from CVS Message-ID: <3DB4DFEC.70701@uniandes.edu.co> Hi everyone! I checked out the code from cvs just like it says in download.html . Now the problem is that when I run make in the mono directory I get the following message: make[2]: Entering directory `/home/hero/working/go-mono/mono/runtime' cp ../../mcs/mcs/mcs.exe . cp: cannot stat `../../mcs/mcs/mcs.exe': No such file or directory make[2]: *** [mcs.exe] Error 1 make[2]: Leaving directory `/home/hero/working/go-mono/mono/runtime' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/home/hero/working/go-mono/mono' make: *** [all-recursive-am] Error 2 And if I try to run make in the mcs directory is says the following: make[1]: Entering directory `/home/hero/working/go-mono/mcs/mcs' mcs /target:exe -o mcs.exe assign.cs attribute.cs driver.cs cs-parser.cs cs-tokenizer.cs tree.cs location.cs cfold.cs class.cs codegen.cs const.cs constant.cs decl.cs delegate.cs enum.cs ecore.cs expression.cs genericparser.cs interface.cs literal.cs modifiers.cs namespace.cs parameter.cs pending.cs report.cs rootcontext.cs statement.cs support.cs typemanager.cs make[1]: mcs: Command not found make[1]: *** [mcs.exe] Error 127 make[1]: Leaving directory `/home/hero/working/go-mono/mcs/mcs' make: *** [install] Error 1 any sugestions or link to a solution highly welocome and apreciated! Best regards and happy hacking! -- Mauricio Hernández Durán QOTD: Don't let people drive you crazy when you know it's in walking distance. From Zoltan.2.Varga@nokia.com Tue Oct 22 11:42:31 2002 From: Zoltan.2.Varga@nokia.com (Zoltan.2.Varga@nokia.com) Date: Tue, 22 Oct 2002 12:42:31 +0200 Subject: [Mono-list] Building Mono! Please HELP... Message-ID: <214ABAB6BF4DC24EAD9AB1C7461DA6A101F3D4@buebe002.europe.nokia.com> Hi, > You wouldn't happen to be running on Red Hat 8.0, would you? > I'm seeing the same errors as well. I haven't taken the time to figure > out why it's failing, though. > I'd be interested in knowing the answer to this as well. > - Jon That would be bug 30033: http://bugzilla.ximian.com/show_bug.cgi?id=30033 bye Zoltan From freddy_bl@hotmail.com Tue Oct 22 11:57:31 2002 From: freddy_bl@hotmail.com (Freddy BL) Date: Tue, 22 Oct 2002 10:57:31 +0000 Subject: [Mono-list] Voting: C# the secon-favorit Programming-language for GNOME-programs Message-ID: Hi all! On http://www.gnomedesktop.org there is a vote, which results you can find under http://www.gnomedesktop.org/pollBooth.php?op=results&pollID=20 The question is: In one year I will be hacking GNOME using And the results: Assemby 2.98 % (7) C 35.74 % (84) C++ 16.60 % (39) C# 17.02 % (40) Java 8.94 % (21) Python 11.91 % (28) Ada 1.70 % (4) Perl 4.68 % (11) GOB 0.43 % (1) Result of 22.10.2002 on 13:00'clock, MET. Greating Freddy _________________________________________________________________ Fotos  -  MSN Fotos das virtuelle Fotoalbum. Allen Freunden zeigen oder einfach ausdrucken: http://photos.msn.de/support/worldwide.aspx From tobe_better@hotmail.com Tue Oct 22 12:17:49 2002 From: tobe_better@hotmail.com (Auge Mike) Date: Tue, 22 Oct 2002 15:17:49 +0400 Subject: [Mono-list] System.Winodws.Forms... Message-ID: How can i download only the System.Winodws.Forms files using CVS ? And it would be better if i can do some changes to the "mono-build-w32.sh" file to met the previous requirment?? Thanx _________________________________________________________________ Unlimited Internet access for only $21.95/month.  Try MSN! http://resourcecenter.msn.com/access/plans/2monthsfree.asp From tobe_better@hotmail.com Tue Oct 22 12:19:48 2002 From: tobe_better@hotmail.com (Auge Mike) Date: Tue, 22 Oct 2002 15:19:48 +0400 Subject: [Mono-list] Building errors.... Message-ID: I am getting these errors while trying to install Mono on my Cygwin: make[2]: *** [monoresgen.exe] Error 1 make[2]: Leaving directory `/usr/local/bin/mono/mono/runtime' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/usr/local/bin/mono/mono' make: *** [all-recursive-am] Error 2 I also noticed that the runtime directory is not up to-date ???? Any help? Thanx, _________________________________________________________________ Internet access plans that fit your lifestyle -- join MSN. http://resourcecenter.msn.com/access/plans/default.asp From pokey@linuxmail.org Tue Oct 22 13:15:17 2002 From: pokey@linuxmail.org (Pokey the Penguin) Date: 22 Oct 2002 13:15:17 +0100 Subject: [Mono-list] Building Mono! Please HELP... In-Reply-To: <39E429CE4B853C41B14FF7961B36BC0406E8A5@EX-MAILSTORE.CTAC.1800contacts.com> References: <39E429CE4B853C41B14FF7961B36BC0406E8A5@EX-MAILSTORE.CTAC.1800contacts.com> Message-ID: <1035288918.1123.0.camel@star> --=-NE81kgRPcv0O4tgJk1g3 Content-Type: text/plain Content-Transfer-Encoding: 7bit Mono has not yet been updated to work with the more recent automake provided with RedHat 8.0 and Debian unstable. The provided patch should work around the problem for now. -- .---. | o_o | | \_/ | // \ \ penguins (| mono | ) do it best /'\_ _/`\ \___)==(___/ --=-NE81kgRPcv0O4tgJk1g3 Content-Disposition: attachment; filename=autogen.patch Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; name=autogen.patch; charset=ISO-8859-1 --- ../mono.orig/autogen.sh 2001-11-09 16:39:49.000000000 +0000 +++ autogen.sh 2002-10-22 01:22:46.000000000 +0100 @@ -104,7 +104,7 @@ =20 echo "Running automake --gnu $am_opt ..." automake --add-missing --gnu $am_opt || - { echo "**Error**: automake failed."; exit 1; } + { echo "**Error**: automake failed."; } echo "Running autoconf ..." autoconf || { echo "**Error**: autoconf failed."; exit 1; } =20 --=-NE81kgRPcv0O4tgJk1g3-- From thaynes@openlinksw.com (Tim Haynes) Tue Oct 22 14:43:43 2002 From: thaynes@openlinksw.com (Tim Haynes) (Tim Haynes) Date: Tue, 22 Oct 2002 14:43:43 +0100 Subject: [Mono-list] Patch: MONO_ROOT environment variable in mono_set_rootdir() Message-ID: <873cqy1tdc.fsf@purple.uknet.private> --=-=-= Hi, Another small patch is attached - this one adds use of the MONO_ROOT environment variable in mono_set_rootdir(). Cheers, ~Tim -- Product Development Consultant OpenLink Software Tel: +44 (0) 20 8681 7701 Web: Universal Data Access & Data Integration Technology Providers --=-=-= Content-Disposition: attachment; filename=mono_root.diff Index: mono/os/unix/Makefile.am =================================================================== RCS file: /mono/mono/mono/os/unix/Makefile.am,v retrieving revision 1.4 diff -u -r1.4 Makefile.am --- mono/os/unix/Makefile.am 19 Jul 2002 17:08:25 -0000 1.4 +++ mono/os/unix/Makefile.am 18 Oct 2002 09:17:05 -0000 @@ -1,5 +1,7 @@ - -INCLUDES = -I$(top_srcdir) +INCLUDES = \ + -I$(top_srcdir) \ + $(GMODULE_CFLAGS) \ + $(GLIB_CFLAGS) noinst_LTLIBRARIES = libmonoos.la Index: mono/os/unix/util.c =================================================================== RCS file: /mono/mono/mono/os/unix/util.c,v retrieving revision 1.2 diff -u -r1.2 util.c --- mono/os/unix/util.c 28 Aug 2002 14:14:24 -0000 1.2 +++ mono/os/unix/util.c 18 Oct 2002 09:17:05 -0000 @@ -7,7 +7,9 @@ * (C) 2002 Ximian, Inc. (http://www.ximian.com) */ #include +#include #include +#include /* * mono_set_rootdir: @@ -18,8 +20,10 @@ void mono_set_rootdir (void) { - /* nothing on Unix */ + char *path = getenv ("MONO_ROOT"); + if (path) + mono_assembly_setrootdir (path); } - + --=-=-=-- From thaynes@openlinksw.com (Tim Haynes) Tue Oct 22 18:07:35 2002 From: thaynes@openlinksw.com (Tim Haynes) (Tim Haynes) Date: Tue, 22 Oct 2002 18:07:35 +0100 Subject: [Mono-list] SoapFormatter diff In-Reply-To: <1034985716.14577.1121.camel@erandi.boston.ximian.com> (Miguel de Icaza's message of "18 Oct 2002 20:01:56 -0400") References: <87fzv52k1t.fsf@purple.uknet.private> <1034985716.14577.1121.camel@erandi.boston.ximian.com> Message-ID: <87wuoaz9k8.fsf@purple.uknet.private> Miguel de Icaza writes: > I have applied your patches to CVS now. Would it be possible to get > ChangeLog entries for the changes? Sure: - Fixed the duplication of xmlns:xx = yy when serializing the XML for serialization - Fixed the unnecessary parsing/serializing when adding assemblies for serialization - Avoided setting the XmlNode.InnerXml property (as it's not implemented) - Fixed the usage/implementation of XmlElement.GetElementsByTagName() Cheers, ~Tim -- Product Development Consultant OpenLink Software Tel: +44 (0) 20 8681 7701 Web: Universal Data Access & Data Integration Technology Providers From miguel@ximian.com Tue Oct 22 20:26:58 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 22 Oct 2002 15:26:58 -0400 Subject: [Mono-list] Patch: MONO_ROOT environment variable in mono_set_rootdir() In-Reply-To: <873cqy1tdc.fsf@purple.uknet.private> References: <873cqy1tdc.fsf@purple.uknet.private> Message-ID: <1035314818.14578.1396.camel@erandi.boston.ximian.com> Hello Tim, > Another small patch is attached - this one adds use of the MONO_ROOT > environment variable in mono_set_rootdir(). The patch is ok with me (modulo formatting which breaks the Mono style), but I have a question: why would you need this feature? MONO_PATH can probably achieve the same effect. Also, introducing new variables like this should also include a patch to the documentation ;-) Miguel. From duncan@ximian.com Tue Oct 22 20:28:18 2002 From: duncan@ximian.com (Duncan Mak) Date: 22 Oct 2002 15:28:18 -0400 Subject: [Mono-list] SoapFormatter diff In-Reply-To: <87wuoaz9k8.fsf@purple.uknet.private> References: <87fzv52k1t.fsf@purple.uknet.private> <1034985716.14577.1121.camel@erandi.boston.ximian.com> <87wuoaz9k8.fsf@purple.uknet.private> Message-ID: <1035314897.19202.9.camel@localhost.localdomain> On Tue, 2002-10-22 at 13:07, Tim Haynes wrote: > - Avoided setting the XmlNode.InnerXml property (as it's not implemented) Atsushi just implemented this. -- Duncan Mak From miguel@ximian.com Tue Oct 22 20:29:43 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 22 Oct 2002 15:29:43 -0400 Subject: [Mono-list] SoapFormatter diff In-Reply-To: <87wuoaz9k8.fsf@purple.uknet.private> References: <87fzv52k1t.fsf@purple.uknet.private> <1034985716.14577.1121.camel@erandi.boston.ximian.com> <87wuoaz9k8.fsf@purple.uknet.private> Message-ID: <1035314982.14577.1398.camel@erandi.boston.ximian.com> Hello! > - Fixed the duplication of xmlns:xx = yy when serializing the XML for > serialization > - Fixed the unnecessary parsing/serializing when adding assemblies for > serialization > - Avoided setting the XmlNode.InnerXml property (as it's not implemented) > - Fixed the usage/implementation of XmlElement.GetElementsByTagName() Thanks for the information. Btw, we just got InnerXml implemented by Atsushi. Miguel From rodrigo@ximian.com Wed Oct 23 00:48:35 2002 From: rodrigo@ximian.com (Rodrigo Moya) Date: 23 Oct 2002 01:48:35 +0200 Subject: [Mono-list] Sybase and Microsoft SQL Server database support in Mono ADO.NET In-Reply-To: <1034782571.17291.4.camel@tpc171.thnteach.htu.se> References: <1034778854.6559.0.camel@tpc171.thnteach.htu.se> <1034780311.11298.16.camel@localhost> <1034782571.17291.4.camel@tpc171.thnteach.htu.se> Message-ID: <1035330515.15190.19.camel@localhost> On Wed, 2002-10-16 at 17:36, Richard Torkar wrote: > > > > > yes, we talked yesterday. The only thing that worries me is that if > > somebody does the TDS provider, we won't have a job for your students > > :-) Maybe we should be looking for something else for them? > > > > That's fine with me. > The university I'm at would like to help in the project. > > If you can give certain projects that are interesting then I will show > them to the students and (force) trick them into taking such a project > as a thesis ;) > well, as for the database part, writing a native provider for any RDBMS could be a fun and interesting project for the students. As for other parts, I'm sure someone on the core mono team can tell you nice and fun projects for your students. cheers -- Rodrigo Moya From bencooley@cinematix.com Wed Oct 23 03:13:11 2002 From: bencooley@cinematix.com (Ben Cooley) Date: Wed, 23 Oct 2002 11:13:11 +0900 Subject: [Mono-list] Re: C# -> Binary .. MCS to C++ cross compiler References: <200210161045.10848.yannick.koehler@colubris.com> Message-ID: <005301c27a39$beadc920$224faad3@ben> > > >I really liked what I read on this language from a syntax/semantic > > >point of view. Is there plan support to have this language generate > > >binary instead of CLI code? > > > > I don't know if there existing at the moment plans for this, but the > > eminent feature of C#/.net is the .net-platform itself. If you create > > native-code, the code is neither platform-independent nor creates its a > > bridge for different languages. So the nicest featues of C#/.net are lost. > > > > Btw: I think, that there was in any place here in the internet a side by > > IBM, where IBM compares different Java-platforms/compilers/etc. And > > Java-Bianary-Code programs runs on the IBM-JVM - according to IBM - faster > > then the same programs compiled with gcj in native-code. > > It depends what you mean by nicest feature of C#/CLI... I'm not interested for > my software to run on many platform without re-compilation. But I am > interested in the > > - - includeless feature of C# > - - EventHandler > - - implicit conversion of int to object > - - all type has a base object class > - - better keyword such as internal, readonly. > - - notion of safe/unsafe code for section using pointer > - - {0}, {1} when printing instead of %s ... (which probably resume in better > class library) > - - Garbage Collector > - - By default exception support > - - Jagged arrays > > And others I forgot. > > Those interest me as they seems to make the code more comprehensive and remove > annoyances. If the whole CLI stuff is needed for all those features to work > then you're kind of right that it won't matter between a pre-compiled and a > version compiled by the jit and cached. > > I have not gone through the CLI ECMA doc yet so I wasn't able to know by I was working on a mcs mono to C++ compiler. This would allow mono to be compiled to C++ (not C) code that would be practically indistinguishable to a source debugger, and would allow mono to seamlessly integrate with extant C++ code. I got as far as the mono/C++ integration so that C++ and mono would recognize and work with eachother, and had a rudimentary C++ source generator module added into mcs. Unfortunately, time and intense work problems have overwhelmed my project, and I haven't been able to continue on it. The problem with a CLI implementation on many platforms is simply speed. You can say what you want about the performance of IBM's JIT on x86, but for deployment on memory limited and performance limited embedded systems, a JIT simply isn't a good idea. There is an especially large performance hit when you are talking about game platforms like the Playstation 2 or Gamecube, where the slower speed of the host processor and the lack of vectorization and other C and C++ compiler complex static optimization techniques really does make a big difference. Likewise, it is simply not practical to re-engineer all of the static optimization techniques for every possible target processor into the JIT system. It will never be any more than a "good" solution for most embedded systems, and the fact that it is required to dynamically compile at load time is also another problem. A standard C# to C and C++ cross compiler is really needed in these instances, as static optimization and static binaries are critical in these applications. I just wish I had the time to finish my project. :( If anyone is interested in helping to continue this project or interested in the current working binaries on x86.. drop me a line. From brianlritchie@hotmail.com Wed Oct 23 03:33:38 2002 From: brianlritchie@hotmail.com (Brian Ritchie) Date: Tue, 22 Oct 2002 22:33:38 -0400 Subject: [Mono-list] Re: mono Message-ID: Hi Michael, Well, I can help on part of your quest. The ODBC provider is available within the Mono framework for use on Linux. The guys are also working on a native MySQL provider for .NET. See http://www.go-mono.com/ado-net.html for details. You'll need to pull down the source from CVS since the ODBC provider isn't in the .16 release. As for the *.aspx part, the System.Web support in Mono has come a long way...but I'm not sure if it can be hosted within Apache. I've sent this message to the mono-list too. Could someone help Michael out with more info? Good luck on the quest, Brian > >I want to start pulling data by ODBC through an *.aspx page using Apache on >Red Hat 8.0. > >Can you help me or point me to the right direction to have Apache as the >web server running *.aspx pages querying MySql database. > >Sincerely, >Michael Biber >Executive Vice President > _________________________________________________________________ Unlimited Internet access -- and 2 months free!  Try MSN. http://resourcecenter.msn.com/access/plans/2monthsfree.asp From tim@timcoleman.com Wed Oct 23 05:24:16 2002 From: tim@timcoleman.com (Tim Coleman) Date: Wed, 23 Oct 2002 00:24:16 -0400 Subject: [Mono-list] Re: [Mono-hackers-list] Re: jTDS In-Reply-To: <1035215068.10024.27.camel@localhost> References: <000801c27914$4bfe77b0$2801a8c0@distinto.ro> <1035215000.10081.21.camel@localhost> <1035215068.10024.27.camel@localhost> Message-ID: <20021023002416.656b1034.tim@timcoleman.com> On 21 Oct 2002 17:44:28 +0200 Rodrigo Moya wrote: > On Mon, 2002-10-21 at 17:43, Rodrigo Moya wrote: > > On Mon, 2002-10-21 at 17:12, Alin Sinpalean wrote: > > > Hi Rodrigo, > > > > > Hi > > > > [Adding mono-hackers to CC] > > > > > > > I am the only active developer behind jTDS for the last 4-5 months or > > > so. I just saw the go-mono.com webpage and was surprised to find out > > > you are interested in jTDS as a basis for your SQL Server client > > > implementation. I have some experience with Windows programming and > > > Visual C++, but for more than 2 years now I've been working only in > > > Java, so I guess I wouldn't be of too much help for you as a > > > programmer (not to mention the fact that I have very little time to > > > actually help you in this way). > > > > > well, if you know Java, C# should be really easy to learn, as this is > > the language we use for our implementation. About the little time you've > > got, alas, we can't do anything :-) > > > > > However, I'm ready to provide you with any support I can offer > > > (questions regarding TDS, information on jTDS). I also have some more > > > documentation on TDS. So, if you have any such problems, you or anyone > > > from your team, I'm here. :o) > > > > > I'm sure Tim, the guy who is working on our TDS implementation will like > > your offer. > > > > cheers Hi Alin Basically, the implementation course I am following is to examine the jTDS code, and port it into C#. In some cases, there is a direct translation, or even no translation required. In some other cases, I have changed the code quite a bit. I'm also referring to the FreeTDS code and documentation in the process, as a sort of double check. Since FreeTDS seems to be more active, there is newer information there, so it is more complete; jTDS has the advantage of being in Java, which is much closer to C#, and thus easier to port. At this point, I'm able to login to MS SQL Server 7.0 and 2000, and run a few queries, etc. If you are interested in Mono and the TDS client implementation, please feel free to take a look at some of the source code, or give it a try for yourself. Any tips that you can offer will be greatly appreciated. The protocol seems pretty well documented on the FreeTDS site. I may call upon you if I run into any significant roadblocks. At this point, I'm pretty happy with the progression, since I've only been working on it for less than a week, and I was sick for three days. :-) -- Tim Coleman [43.28 N 80.31 W] BMath, Honours Combinatorics and Optimization, University of Waterloo Software Developer, Global Services, Open Text Corporation "Under capitalism, man exploits man. Under communism, it's just the opposite." -- J.K. Galbraith From miguel@ximian.com Wed Oct 23 05:57:53 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 23 Oct 2002 00:57:53 -0400 Subject: [Mono-list] Re: C# -> Binary .. MCS to C++ cross compiler In-Reply-To: <005301c27a39$beadc920$224faad3@ben> References: <200210161045.10848.yannick.koehler@colubris.com> <005301c27a39$beadc920$224faad3@ben> Message-ID: <1035349072.14578.1465.camel@erandi.boston.ximian.com> Hello, > I was working on a mcs mono to C++ compiler. This would allow mono to be > compiled to C++ (not C) code that would be practically indistinguishable to > a source debugger, and would allow mono to seamlessly integrate with extant > C++ code. Although it is possible to modify MCS to generate something like C++, this will not address the dynamic nature of C# nor will deal with things like supporting Reflection. So even if you can compile your code to C++, you will need a runtime. In fact, this particular way just happens to be a subset of what can be supported by things like NGen (Read Zoltan's NGen code to get an idea of what is involved). Getting 80% of the way with MCS is relatively trivial, the problem is the extra 20% which requires careful design, and very careful thinking, beyond a regular hack attack. Miguel From miguel@ximian.com Wed Oct 23 06:26:02 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 23 Oct 2002 01:26:02 -0400 Subject: [Mono-list] Re: C# -> Binary .. MCS to C++ cross compiler In-Reply-To: <005301c27a39$beadc920$224faad3@ben> References: <200210161045.10848.yannick.koehler@colubris.com> <005301c27a39$beadc920$224faad3@ben> Message-ID: <1035350761.14578.1494.camel@erandi.boston.ximian.com> Hello, > The problem with a CLI implementation on many platforms is simply speed. > You can say what you want about the performance of IBM's JIT on x86, but for > deployment on memory limited and performance limited embedded systems, a JIT > simply isn't a good idea. Well, it depends on the end of the spectrum you are at. We could go as far as saying that C for some systems is too much, or that even a stored program is too much, and its better to just wire a state machine for a particular problem. Today you can purchase cell phones running Java and the Danger Hiptop also uses it, and really, you can not complain about their speed. Probably a JIT customized for server performance is not a good idea, but its open source: you can shrink it ;-) > There is an especially large performance hit when you are talking about game > platforms like the Playstation 2 or Gamecube, where the slower speed of the > host processor and the lack of vectorization and other C and C++ compiler > complex static optimization techniques really does make a big difference. For those platforms you should probably run your time sensitive code in a thread with finely tuned assembler/C/C++, and just keep some of your logic in a higher, slower, non-time-sensitive portion of your code, so it should not be an issue anyways. If you care too much about performance, you are better off using the tools provided by the CPU vendor, and not a general purpose compiler (ie, not Microsoft, not Borland's, not GCC's and not Ximian's). > Likewise, it is simply not practical to re-engineer all of the static > optimization techniques for every possible target processor into the JIT > system. It will never be any more than a "good" solution for most embedded > systems, and the fact that it is required to dynamically compile at load > time is also another problem. Thats what an ahead-of-time compiler would achieve (See NGen's code from Zoltan for a proof of concept implementation). In terms of speed, there is nothing stopping the engine of a JIT compiler from being as good as a native compiler. Typically JIT engines have to make a trade off between code quality and compilation time, but this issue becomes a moot point with an ahead-of-time compiler. All of this, of course, within the scope of the .NET Framework, if you do not want some of its features, then yes, you could live with a simpler hack. Miguel From martin_aliger@email.cz Wed Oct 23 08:57:24 2002 From: martin_aliger@email.cz (Martin Aliger) Date: Wed, 23 Oct 2002 09:57:24 +0200 (CEST) Subject: [Mono-list] Re: NAnt Message-ID: <3DB65664.000001.23512@email1.atc.cz> Hi Ian, Today I finally find a time for mono/nant problem. I downloaded latest mono and nant versions. Nant compiles ok for me now ( > http://bugzilla.ximian.com/show_bug.cgi?id=32429 which prevents the this bug is resolved > http://bugzilla.ximian.com/show_bug.cgi?id=32417 which breaks the code and this one I workaround becouse I coupile nant into one .exe file through mine build.sh file (just one line mcs *.cs command)) There are some issues through: -first: it throws ugly exceptions when I try to compile mono class libs (I'll look into this today) -second: there are not some of fixes I sent before (not just the location map one - this in not the most important anyway). Mainly Path.Combine stuff I must add to FileSet and Project to handle correctly subprojects and that fromfile addition from me: Gerry do not like it in this form, so I reworked it. I'll try to make patches to everything I come throug and sent it to you and nant-dev list. Happy coding Martin ______________________________________________________________________________ Email.cz -----> Va¹e emailová schránka zdarma. http://www.Email.cz <------------Po¹ta zdarma! From thaynes@openlinksw.com (Tim Haynes) Wed Oct 23 10:05:34 2002 From: thaynes@openlinksw.com (Tim Haynes) (Tim Haynes) Date: Wed, 23 Oct 2002 10:05:34 +0100 Subject: [Mono-list] Patch: HttpWebRequest and header handling In-Reply-To: <1034641242.14577.516.camel@erandi.boston.ximian.com> (Miguel de Icaza's message of "14 Oct 2002 20:20:42 -0400") References: <1034628606.14577.507.camel@erandi.boston.ximian.com> <1034631975.1167.84.camel@cable70a028.usuarios.retecal.es> <1034641242.14577.516.camel@erandi.boston.ximian.com> Message-ID: <87lm4pzfs1.fsf_-_@purple.uknet.private> --=-=-= Howdo, Please find attached another patch: ChangeLog: - Avoided double-sending of the request to the server when both GetRequestStream() and GetResponse() are called. - System Header attributes survive the Headers attribute set. - Added handling of Connection: KeepAlive/Close Also attached is an example to send SMSes via redcoal. Cheers, ~Tim -- Product Development Consultant OpenLink Software Tel: +44 (0) 20 8681 7701 Web: Universal Data Access & Data Integration Technology Providers --=-=-= Content-Disposition: attachment; filename=redcoal.cs Content-Description: sample to send SMSs via redcoal.net using System; using System.Xml; using System.Net; using System.Net.Sockets; using System.IO; using System.Text; namespace redcoalsms_dom { public class redcoalsmssvc { string ClientSerialNo, SMSKey, strSenderName, strSenderEmail; bool canReply; static string [] error_responces = { "No Error", "Feature Not Available", "Service Not Available", "Too Many Wrong Passwords , Please contact support@redcoal.com", "Invalid password", "No Credits Left/ go to: http://www.redcoal.net/purchase.asp", "Not Enough Credits Left", "Binary File Not Found", "One or more invalid destinations", "Invalid Format (for binary and fax data)", "Invalid Serial No", "Invalid HTTP property", "Daily Quota Reached", "Destination not in restricted list", "Invalid File", "File too big", "General Fault: E.g: no internet connection, can't connect to Redcoal XML server, can't get past the proxy firewall.", "Can not read the specified file or don't have permission to read the file" }; public redcoalsmssvc (string _ClientSerialNo, string _SMSKey, string _SenderName, string _SenderEmail) { this.canReply = false; this.ClientSerialNo = _ClientSerialNo; this.strSenderEmail = _SenderEmail; this.strSenderName = _SenderName; this.SMSKey = _SMSKey; } private static string RC_req_fmt = " " + " " + " " + " {0}" + " {1}" + " {2}" + " {3}" + " {4}" + " {5}" + " {6}" + " " + " " + " "; private static string req_uri = "http://xml.redcoal.net/smssoap/xmlserver.ASP"; private static string SoapAction = "\"http://tempuri.org/action/SMSServer.SendTextSMS\""; private static string SoapResp_uri = "http://tempuri.org/message/"; private static string SoapResp_name = "SendTextSMSResponse"; private static string SoapResp_val = "Result"; private int SendTextSMS (string ClientSerialNo, string SMSKey, string Recepient, string strSenderEmail, string strSenderName, string txtMsg, bool canReply) { Object[] obj_params = { ClientSerialNo, SMSKey, Recepient, strSenderEmail, strSenderName, txtMsg, canReply }; WebHeaderCollection req_headers = new WebHeaderCollection(); string req_text = String.Format (RC_req_fmt, obj_params); byte [] req_bytes = new UTF8Encoding().GetBytes (req_text); req_text = null; Uri _req_uri = new Uri (req_uri); HttpWebRequest web_req = (HttpWebRequest) WebRequest.Create (_req_uri); req_headers.Add ("SOAPAction", SoapAction); web_req.Headers = req_headers; web_req.ContentType = "text/xml"; web_req.KeepAlive = false; web_req.UserAgent = "Virtuoso SOAP sample"; web_req.Method = "POST"; web_req.ContentLength = req_bytes.Length; Stream req_str = web_req.GetRequestStream (); req_str.Write (req_bytes, 0, req_bytes.Length); req_str.Flush(); req_bytes = null; req_str = null; HttpWebResponse resp = (HttpWebResponse) web_req.GetResponse (); Encoding enc = new UTF8Encoding (); XmlDocument doc = new XmlDocument (); long clen = resp.ContentLength; Stream resp_stream = resp.GetResponseStream(); String content; if (clen != -1) { byte [] bytes = new byte[clen]; long read = 0; while (read < clen) { read += resp_stream.Read (bytes, (int) read, (int) (clen - read)); } UTF8Encoding enc1 = new UTF8Encoding (false, true); content = new String (enc1.GetChars (bytes)); } else if (typeof (NetworkStream).IsInstanceOfType (resp_stream)) { NetworkStream nstr = resp_stream as NetworkStream; byte [] bytes = new byte[10000]; long read = 0; while (nstr.DataAvailable) { read += nstr.Read (bytes, (int) read, (int) (bytes.Length - read)); } UTF8Encoding enc1 = new UTF8Encoding (false, true); content = new String (enc1.GetChars (bytes, 0, (int) read)); } else throw new Exception ("don't know how to read the stream"); resp_stream.Close(); doc.LoadXml (content); XmlNode xml_env = doc.DocumentElement; XmlNode xml_body = xml_env["Body", xml_env.NamespaceURI]; XmlNode xml_fault = xml_body["Fault", xml_env.NamespaceURI]; if (xml_fault != null) throw new Exception (xml_fault.InnerText); XmlNode xml_resp = xml_body[SoapResp_name, SoapResp_uri]; XmlNode result = xml_resp[SoapResp_val]; return Int32.Parse (result.InnerXml); } public string SendSms (string Recepient, string txtMsg) { int resp = SendTextSMS ( ClientSerialNo, SMSKey, Recepient, strSenderEmail, strSenderName, txtMsg, canReply); if (resp >= 0 && resp <= 17) return error_responces[resp]; else return "Unknown status code " + resp; } public static void Main (String [] args) { redcoalsmssvc srv = new redcoalsmssvc ("94765-49251-11951-66295", "xxx", String.Empty, String.Empty); Console.WriteLine (srv.SendSms ("+123", "ha-ha")); } } } --=-=-= Content-Disposition: attachment; filename=http.diff Content-Description: patch for HttpWebRequest Index: class/System/System.Net/HttpWebRequest.cs =================================================================== RCS file: /mono/mcs/class/System/System.Net/HttpWebRequest.cs,v retrieving revision 1.8 diff -u -b -r1.8 HttpWebRequest.cs --- class/System/System.Net/HttpWebRequest.cs 15 Oct 2002 00:24:33 -0000 1.8 +++ class/System/System.Net/HttpWebRequest.cs 22 Oct 2002 17:05:24 -0000 @@ -190,6 +190,10 @@ int count = value.Count; for (int i = 0; i < count; i++) newHeaders.Add (value.GetKey (i), value.Get (i)); + newHeaders.SetInternal ("Host", this.webHeaders["Host"]); + newHeaders.SetInternal ("Date", this.webHeaders["Date"]); + newHeaders.SetInternal ("Expect", this.webHeaders["Expect"]); + newHeaders.SetInternal ("Connection", this.webHeaders["Connection"]); webHeaders = newHeaders; } } @@ -222,6 +226,8 @@ set { CheckRequestStarted (); keepAlive = value; + if (Connection == null) + webHeaders.SetInternal ("Connection", value ? "Keep-Alive" : "Close"); } } @@ -451,6 +457,7 @@ internal Stream GetRequestStreamInternal () { + if (this.requestStream == null) this.requestStream = new HttpWebStream (this); return this.requestStream; } @@ -504,16 +511,14 @@ { if (webResponse != null) return webResponse; - lock (this) { - if (requesting) { - requestEndEvent = new AutoResetEvent (false); - } - } - if (requestEndEvent != null) { - requestEndEvent.WaitOne (); - } - Stream responseStream = new HttpWebStream (this); + + Stream responseStream = this.requestStream == null ? + new HttpWebStream (this) : this.requestStream; + do + { this.webResponse = new HttpWebResponse (this.actualUri, method, responseStream); + } + while (this.webResponse.StatusCode == HttpStatusCode.Continue); return (WebResponse) this.webResponse; } --=-=-=-- From Alessandro Torrisi" This is a multi-part message in MIME format. ------=_NextPart_000_002B_01C27AAE.415A72A0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hi to everybody, do you know something about xsp development progress ? Is there any chance to see a aspx page with codebehind nearly in the = time ? Bye, Alessandro. ------=_NextPart_000_002B_01C27AAE.415A72A0 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Hi to everybody,
do you know something about xsp = development=20 progress ?
Is there any chance to see a aspx page = with=20 codebehind nearly in the time ?
 
Bye, = Alessandro.
------=_NextPart_000_002B_01C27AAE.415A72A0-- From jscheel@activevb.de Wed Oct 23 18:53:10 2002 From: jscheel@activevb.de (Julian Scheel) Date: Wed, 23 Oct 2002 19:53:10 +0200 Subject: [Mono-list] First C# book about mono Message-ID: <200210231953.10149.jscheel@activevb.de> Hi all, I am very proud to announce the very first printed book including an own chapter about the mono-project. It's a german book, called "Das große Buch C#" published by "Data Becker". Search at www.databecker.de for C# for further information. Release is next Tuesday (29.10.2002) You can pre-order it for example here: http://www.bol.de/is-bin/INTERSHOP.enfinity/eCS/Store/de/-/EUR/BOL_DisplayProductInformation-Start;sid=sjTVs_Gb_j3Vf8wtUPMW9IOuY4-F7QhgN6E=?BOL_OWNER_ID=1001001005863412&Section=BOOK&LogLevel=1&ParentLogID=&LogLevel_BOL_OWNER_ID=1 I would be really happy if you could add a short news-entry at the mono-site! -- Grüße, Julian From vi64pa@koti.soon.fi Wed Oct 23 20:34:30 2002 From: vi64pa@koti.soon.fi (ville) Date: Wed, 23 Oct 2002 22:34:30 +0300 Subject: [Mono-list] SqlDecimal problems Message-ID: <200210232234.30278.vi64pa@koti.soon.fi> Weird! I made test suite for SqlDecimal and it didn't work correctly. For example: // FIXME: windows: Conversion overflow AssertEquals ("#B03", Decimal.MaxValue, SqlDecimal.MaxValue.Value); AssertEquals ("#B04", Decimal.MinValue, SqlDecimal.MinValue.Value); It is obvious that ms wont handle SqlDecimal internal value as a decimal, but ain't this bug or what? And another (much weirder): // FIXME: 6464.6464 --> 64646464 ??? with windows AssertEquals ("#N13a", (int)64646464, Test1.ToSqlInt32 ().Value); // FIXME: 12.12m --> 1212 ??? with windows AssertEquals ("#N13b", (int)1212, new SqlDecimal(12.12m).ToSqlInt32 ().Value); and with ToInt64 or ToInt16 everything went alright. somebody help me, please. ville From tobe_better@hotmail.com Wed Oct 23 20:37:49 2002 From: tobe_better@hotmail.com (Auge Mike) Date: Wed, 23 Oct 2002 23:37:49 +0400 Subject: [Mono-list] Embed example dose not compile :( Message-ID: Hi all, Here is what happened to me.... (I have Win2000 + Cygwin + .Net Framework) ********* 1. The first try.... $ gcc -o teste teste.c `pkg-config --cflags --libs mono` -lm gnome-config: not found Package mono was not found in the pkg-config search path. Perhaps you should add the directory containing `mono.pc' to the PKG_CONFIG_PATH environment variable No package 'mono' found teste.c:1: mono/jit/jit.h: No such file or directory ******** 2. Exporting the PKG_CONFIG_PATH... PKG_CONFIG_PATH=/usr/local/bin/mono/install/lib/pkgconfig export PKG_CONFIG_PATH ******* 3. A seond try..... $ gcc -o teste teste.c `pkg-config --cflags --libs mono` -lm In file included from D:/old_e/cygwin/usr/local/bin/mono/install/include/mono/ji t/jit.h:15, from teste.c:1: D:/old_e/cygwin/usr/local/bin/mono/install/include/mono/io-layer/io-layer.h:24: mono/io-layer/wapi.h: No such file or directory D:/old_e/cygwin/usr/local/bin/mono/install/include/mono/io-layer/io-layer.h:25: mono/io-layer/uglify.h: No such file or directory In file included from D:/old_e/cygwin/usr/local/bin/mono/install/include/mono/me tadata/loader.h:4, from D:/old_e/cygwin/usr/local/bin/mono/install/include/mono/ji t/jit.h:24, from teste.c:1: D:/old_e/cygwin/usr/local/bin/mono/install/include/mono/metadata/metadata.h:5: g lib.h: No such file or directory In file included from D:/old_e/cygwin/usr/local/bin/mono/install/include/mono/me tadata/metadata.h:9, from D:/old_e/cygwin/usr/local/bin/mono/install/include/mono/me tadata/loader.h:4, from D:/old_e/cygwin/usr/local/bin/mono/install/include/mono/ji t/jit.h:24, from teste.c:1: D:/old_e/cygwin/usr/local/bin/mono/install/include/mono/metadata/image.h:5: glib .h: No such file or directory In file included from D:/old_e/cygwin/usr/local/bin/mono/install/include/mono/me tadata/reflection.h:8, from D:/old_e/cygwin/usr/local/bin/mono/install/include/mono/ji t/jit.h:28, from teste.c:1: D:/old_e/cygwin/usr/local/bin/mono/install/include/mono/utils/mono-hash.h:36: gl ib.h: No such file or directory In file included from D:/old_e/cygwin/usr/local/bin/mono/install/include/mono/ji t/jit.h:29, from teste.c:1: D:/old_e/cygwin/usr/local/bin/mono/install/include/mono/metadata/appdomain.h:13: glib.h: No such file or directory In file included from D:/old_e/cygwin/usr/local/bin/mono/install/include/mono/ji t/jit.h:30, from teste.c:1: D:/old_e/cygwin/usr/local/bin/mono/install/include/mono/metadata/opcodes.h:13: g lib.h: No such file or directory In file included from D:/old_e/cygwin/usr/local/bin/mono/install/include/mono/ji t/jit.h:31, from teste.c:1: D:/old_e/cygwin/usr/local/bin/mono/install/include/mono/utils/monobitset.h:4: gl ib.h: No such file or directory In file included from D:/old_e/cygwin/usr/local/bin/mono/install/include/mono/ji t/jit.h:33, from teste.c:1: D:/old_e/cygwin/usr/local/bin/mono/install/include/mono/jit/regset.h:11: glib.h: No such file or directory ******** 4. I copied the contents of glib-2.0, to its parent directory......and tried to compile... $ gcc -o teste teste.c `pkg-config --cflags --libs mono` -lm In file included from D:/old_e/cygwin/usr/local/bin/mono/install/include/mono/ji t/jit.h:15, from teste.c:1: D:/old_e/cygwin/usr/local/bin/mono/install/include/mono/io-layer/io-layer.h:24: mono/io-layer/wapi.h: No such file or directory D:/old_e/cygwin/usr/local/bin/mono/install/include/mono/io-layer/io-layer.h:25: mono/io-layer/uglify.h: No such file or directory ******** 5.I collect all the *.h file from the mono directory, i got a large errors, this is the last part of it.... D:/old_e/cygwin/usr/local/bin/mono/install/lib/libmono.a(process.lo): In functio n `ves_icall_System_Diagnostics_Process_GetProcesses_internal': /usr/local/bin/mono/mono/mono/metadata/process.c:796: undefined reference to `En umProcesses@12' D:/old_e/cygwin/usr/local/bin/mono/install/lib/libmono.a(sysmath.lo): In functio n `ves_icall_System_Math_Log': /usr/local/bin/mono/mono/mono/metadata/sysmath.c:107: undefined reference to `_i mp___HUGE' D:/old_e/cygwin/usr/local/bin/mono/install/lib/libmono.a(sysmath.lo): In functio n `ves_icall_System_Math_Log10': /usr/local/bin/mono/mono/mono/metadata/sysmath.c:118: undefined reference to `_i mp___HUGE' D:/old_e/cygwin/usr/local/bin/mono/install/lib/libmono.a(strtod.lo): In function `bsd_strtod': /usr/local/bin/mono/mono/mono/utils/strtod.c:1390: undefined reference to `_errn o' /usr/local/bin/mono/mono/mono/utils/strtod.c:1392: undefined reference to `_imp_ __HUGE' /usr/local/bin/mono/mono/mono/utils/strtod.c:1443: undefined reference to `_errn o' collect2: ld returned 1 exit status I don't know what to do... Any suggestion, please help me....... Yours, _________________________________________________________________ Choose an Internet access plan right for you -- try MSN! http://resourcecenter.msn.com/access/plans/default.asp From tobe_better@hotmail.com Wed Oct 23 20:47:22 2002 From: tobe_better@hotmail.com (Auge Mike) Date: Wed, 23 Oct 2002 23:47:22 +0400 Subject: [Mono-list] SWF dose not buil..... :( Message-ID: Hi all, When i try to compile the SWF, i got the following error: (I have Win2000 + Cygwin + .Net) ../System.Windows.Forms/InputLanguageCollection.cs(24) error CS0246: Could not f ind attribute 'MonoTODO' (are you missing a using directive or an assembly refer ence ?) ../System.Windows.Forms/ImageList.cs(199) error CS0246: Could not find attribute 'MonoTODO' (are you missing a using directive or an assembly reference ?) Compilation failed: 2 error(s), 0 warnings make: *** [System.Windows.Forms.dll] Error 1 Any Help, Yours, _________________________________________________________________ Broadband? Dial-up? Get reliable MSN Internet Access. http://resourcecenter.msn.com/access/plans/default.asp From james.briant@exertris.com Wed Oct 23 18:32:52 2002 From: james.briant@exertris.com (James Briant) Date: Wed, 23 Oct 2002 18:32:52 +0100 Subject: [Mono-list] Not Self Hosting in .NET: cs-parser.jay - no .NET jay compiler. Message-ID: <000801c27aba$3718e7c0$2b00a8c0@sporaddix.local> This is a multi-part message in MIME format. ------=_NextPart_000_0005_01C27AC2.98B8B0C0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable How can the mono compiler be self hosting in .NET if there is no way to = compile cs-parser.jay file into cs-parser.cs. Why do you not compile it = and include it in the distribution? Thanks! Jamie Briant PS Can you send me a copy of the 0.16 cs-parser.cs file? Ta. ------=_NextPart_000_0005_01C27AC2.98B8B0C0 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
How can the mono compiler be self = hosting in .NET=20 if there is no way to compile cs-parser.jay file into cs-parser.cs. Why = do you=20 not compile it and include it in the distribution?
 
Thanks!
 
Jamie Briant
 
PS Can you send me a copy of the 0.16 = cs-parser.cs=20 file? Ta.
 
------=_NextPart_000_0005_01C27AC2.98B8B0C0-- From tim@timcoleman.com Thu Oct 24 00:16:21 2002 From: tim@timcoleman.com (Tim Coleman) Date: Wed, 23 Oct 2002 19:16:21 -0400 Subject: [Mono-list] SqlDecimal problems In-Reply-To: <200210232234.30278.vi64pa@koti.soon.fi> References: <200210232234.30278.vi64pa@koti.soon.fi> Message-ID: <20021023191621.26fca197.tim@timcoleman.com> On Wed, 23 Oct 2002 22:34:30 +0300 ville wrote: > > Weird! I made test suite for SqlDecimal and it didn't work correctly. For > example: > > // FIXME: windows: Conversion overflow > AssertEquals ("#B03", Decimal.MaxValue, SqlDecimal.MaxValue.Value); > AssertEquals ("#B04", Decimal.MinValue, SqlDecimal.MinValue.Value); > > It is obvious that ms wont handle SqlDecimal internal value as a decimal, but > ain't this bug or what? > > And another (much weirder): > > // FIXME: 6464.6464 --> 64646464 ??? with windows > AssertEquals ("#N13a", (int)64646464, Test1.ToSqlInt32 ().Value); > // FIXME: 12.12m --> 1212 ??? with windows > AssertEquals ("#N13b", (int)1212, new SqlDecimal(12.12m).ToSqlInt32 ().Value); > > and with ToInt64 or ToInt16 everything went alright. > > somebody help me, please. > Heh, If you look back at the archives from April or May when I originally implemented these classes, you will see I had quite a bit of trouble with SqlDecimal. You see, the problem is that SqlDecimal is 128 bits. The decimal type is only 96 bits. Here's the contents of the mail I wrote -----Original Message----- From: Tim Coleman [mailto:tcoleman@opentext.com] Sent: Tuesday, May 07, 2002 8:48 PM To: mono-list@ximian.com Subject: System.Data.SqlTypes.SqlDecimal I have an issue with the System.Data.SqlTypes.SqlDecimal structure. It would seem that the appropriate internal representation would be to store the value as a decimal. There's just one problem with this: decimals are 96 bit values while SqlDecimals can be 128 bit. Importantly, there are two constructors for SqlDecimal that take arrays of four integers representing the 128 bit value. I've noticed, that even on .NET, if you pass in a value with the high 32 bits set to anything, you will get an OverflowException when you try to do things like get the Value of it. However, what doesn't make sense is that you can actually write the value out to the console (!). What I would like to know is how this data is stored and displayed if you can't fit it into a decimal. It's clear that MS does not store it in a decimal, because you would get an overflow immediately. I could see that if the upper 32 bits are zero, then you could create the decimal cleanly using the first 96 bits.. but anyway, here's some code that I ran on CSC. You can't run it on linux because I haven't got that part of the class library done yet (because of this problem). using System; using System.Data.SqlTypes; class MainApp { public static void Main () { int[] bits = new int[4]; bits[0] = 1; bits[1] = 1; bits[2] = 1; bits[3] = 1; byte bPrecision = 38; byte bScale = 10; bool fPositive = true; SqlDecimal x = new SqlDecimal (bPrecision, bScale, fPositive, bits); // works correctly System.Console.WriteLine (x); // throws an exception try { System.Console.WriteLine (x.Value); } catch (OverflowException e) { System.Console.WriteLine (e.Message); } bits[0] = 1; bits[1] = 1; bits[2] = 1; bits[3] = 0; x = new SqlDecimal (bPrecision, bScale, fPositive, bits); // works fine System.Console.WriteLine (x.Value); } } -- Tim Coleman [43.28 N 80.31 W] BMath, Honours Combinatorics and Optimization, University of Waterloo Software Developer, Global Services, Open Text Corporation "Under capitalism, man exploits man. Under communism, it's just the opposite." -- J.K. Galbraith From akpoon@excite.com Thu Oct 24 01:17:56 2002 From: akpoon@excite.com (akpoon@excite.com) Date: Wed, 23 Oct 2002 20:17:56 -0400 (EDT) Subject: [Mono-list] ADO.NET for Oracle on mono? Message-ID: <20021024001756.5CDC5B72D@xmxpita.excite.com> --EXCITEBOUNDARY_000__bb358eaa0eb38e9440879d4c714dbd90 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Hi all, Just wondering if there is any plan (not just from mono) for a native driver for Oracle? Is there any demand for such a driver at all? Will such a driver be helpful to the community? Arnold _______________________________________________ Join Excite! - http://www.excite.com The most personalized portal on the Web! --EXCITEBOUNDARY_000__bb358eaa0eb38e9440879d4c714dbd90 Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: 7bit


Hi all,

Just wondering if there is any plan (not just from mono) for a native driver for Oracle?

Is there any demand for such a driver at all? Will such a driver be helpful to the community?

Arnold


Join Excite! - http://www.excite.com
The most personalized portal on the Web!
--EXCITEBOUNDARY_000__bb358eaa0eb38e9440879d4c714dbd90-- From brianlritchie@hotmail.com Thu Oct 24 01:31:58 2002 From: brianlritchie@hotmail.com (Brian Ritchie) Date: Wed, 23 Oct 2002 20:31:58 -0400 Subject: [Mono-list] First C# book about mono Message-ID: Great new!! Now I just need to learn German :-) >From: Julian Scheel >To: mono-list@ximian.com >Subject: [Mono-list] First C# book about mono >Date: Wed, 23 Oct 2002 19:53:10 +0200 > >Hi all, > >I am very proud to announce the very first printed book including an own >chapter about the mono-project. >It's a german book, called "Das große Buch C#" published by "Data Becker". >Search at www.databecker.de for C# for further information. >Release is next Tuesday (29.10.2002) > >You can pre-order it for example here: >http://www.bol.de/is-bin/INTERSHOP.enfinity/eCS/Store/de/-/EUR/BOL_DisplayProductInformation-Start;sid=sjTVs_Gb_j3Vf8wtUPMW9IOuY4-F7QhgN6E=?BOL_OWNER_ID=1001001005863412&Section=BOOK&LogLevel=1&ParentLogID=&LogLevel_BOL_OWNER_ID=1 > >I would be really happy if you could add a short news-entry at the >mono-site! > >-- >Grüße, >Julian > > >_______________________________________________ >Mono-list maillist - Mono-list@ximian.com >http://lists.ximian.com/mailman/listinfo/mono-list _________________________________________________________________ Surf the Web without missing calls! Get MSN Broadband. http://resourcecenter.msn.com/access/plans/freeactivation.asp From gonzalo@ximian.com Thu Oct 24 01:45:10 2002 From: gonzalo@ximian.com (Gonzalo Paniagua Javier) Date: 24 Oct 2002 02:45:10 +0200 Subject: [Mono-list] compile problem with corelib In-Reply-To: <1035216961.1382.4.camel@jowennmobile> References: <1035216961.1382.4.camel@jowennmobile> Message-ID: <1035420311.515.26.camel@lalo2.micasa> El lun, 21-10-2002 a las 18:16, Joseph Wenninger escribió: > > Hi > > I had a compile problem with the crypto stuff in the corelib. A file > contained ^M special characters. (I assume they are windows carriage > returns). After I've removed them it compiles fine. I'm attaching the > modified file. It would be nice, if someone with CVS access could put it > in. I fixed that file yesterday. Also Miguel fixed mcs to deal with files like that. -Gonzalo From gonzalo@ximian.com Thu Oct 24 01:55:48 2002 From: gonzalo@ximian.com (Gonzalo Paniagua Javier) Date: 24 Oct 2002 02:55:48 +0200 Subject: [Mono-list] Patch: HttpWebRequest and header handling In-Reply-To: <87lm4pzfs1.fsf_-_@purple.uknet.private> References: <1034628606.14577.507.camel@erandi.boston.ximian.com> <1034631975.1167.84.camel@cable70a028.usuarios.retecal.es> <1034641242.14577.516.camel@erandi.boston.ximian.com> <87lm4pzfs1.fsf_-_@purple.uknet.private> Message-ID: <1035420950.1090.28.camel@lalo2.micasa> El mié, 23-10-2002 a las 11:05, Tim Haynes escribió: > Howdo, > > Please find attached another patch: > > ChangeLog: > - Avoided double-sending of the request to the server when both > GetRequestStream() and GetResponse() are called. > - System Header attributes survive the Headers attribute set. > - Added handling of Connection: KeepAlive/Close > > Also attached is an example to send SMSes via redcoal. Applied. Thanks Tim! -Gonzalo From Sebastien Pouliot Thu Oct 24 02:53:42 2002 From: Sebastien Pouliot (Sebastien Pouliot) Date: Wed, 23 Oct 2002 21:53:42 -0400 Subject: [Mono-list] SymmetricTransform "final" update Message-ID: <013701c27b00$2e194660$0301a8c0@einstein> Well I guess nothing is "final" but at least Mono now pass the 189 generated tests :-) > what's (still ;-) seems not supported in the MS Framework > - CFB mode (in Rijndael) > - OFB mode (for every cipher) > - CTS mode (for every cipher) > ? does anyone know (or have a book) describing these two modes in .NET ? For a last time (I promise not to ask again ;-) does someone have a .NET book who talks about cryptography ? I will find one (eventually) but I curious about the CTS and OFB modes which both seems unsupported right now. Is it LAMESPEC or LAMEME (or both) ? Also is there someone confortable with streams (not using them but code one) ? Much of the crypto stuff will be useless until we have a working CryptoStream... Sebastien Pouliot Security Architect, Motus Technologies, http://www.motus.com/ work: spouliot@motus.com home: spouliot@videotron.ca From wxue@kc.rr.com Fri Oct 25 04:18:35 2002 From: wxue@kc.rr.com (Wen Xue) Date: Thu, 24 Oct 2002 22:18:35 -0500 Subject: [Mono-list] Anybody working System.Security.Permission namespace? Message-ID: <001e01c27bd5$348f1d00$6602a8c0@DELL> This is a multi-part message in MIME format. ------=_NextPart_000_001B_01C27BAB.4B9C6540 Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: quoted-printable I would like to contribute to this area. The current CVS only contains = two stub classes. Be honest, I don't have too much idea of how to do it yet. Does anybody = done some thinking on this one?=20 Wen ------=_NextPart_000_001B_01C27BAB.4B9C6540 Content-Type: text/html; charset="gb2312" Content-Transfer-Encoding: quoted-printable
I would like to contribute to this = area. The=20 current CVS only contains two stub classes.
Be honest, I don't have too much idea = of how to do=20 it yet. Does anybody done some thinking on this one?
 
Wen
------=_NextPart_000_001B_01C27BAB.4B9C6540-- From fgonthier@hermes.usherb.ca Fri Oct 25 04:20:46 2002 From: fgonthier@hermes.usherb.ca (=?iso-8859-1?Q?Fran=E7ois-Denis_Gonthier?=) Date: Thu, 24 Oct 2002 23:20:46 -0400 Subject: [Mono-list] Fw: [Mono-winforms-list] (no subject) Message-ID: <001001c27bd5$82a92990$0100a8c0@minasmorgul> ----- Original Message ----- From: "François-Denis Gonthier" To: Sent: Thursday, October 24, 2002 11:12 PM Subject: [Mono-winforms-list] (no subject) > Hello all, > > I think this need to be clarified: > > I'm working on getting System.Windows.Forms to compile in Windows using > Microsoft.NET and besides having TONS of warning about class being already > defined, I got this error: > > Win32.cs(676,42): error CS0029: Cannot implicitly convert type 'long' to > 'int' > > An example of offending line is: > > public const int SS_SUNKEN = 0x00001000L; > > The constant is clearly 'long' because of the trailing L. I don't > understand why Mono accepts this without a warning. > > François-Denis Gonthier > > -----BEGIN GEEK CODE BLOCK----- > Version: 3.1 > GIT/GO d+(-) s a-- C++ UL? P L+(++) E--- W N+ o-- K- w++ O--- M? V? PS PE Y+ > PGP- t+ 5(+) X-- R tv+ b+ DI+++(++++) D+(++) G-- !e h-- r++ y+ > ------END GEEK CODE BLOCK------ > > > > _______________________________________________ > Mono-winforms-list maillist - Mono-winforms-list@ximian.com > http://lists.ximian.com/mailman/listinfo/mono-winforms-list From Piyush.Garyali@honeywell.com Fri Oct 25 05:37:18 2002 From: Piyush.Garyali@honeywell.com (Piyush, Garyali (IE10)) Date: Thu, 24 Oct 2002 23:37:18 -0500 Subject: [Mono-list] mono port over other OS? Message-ID: hi, I was just wondering whether mono/mint can be ported on to x86/PPC using some OS other than Linux, say QNX/RTLinux. If yes, I would like to know whether there is any documentation/listing/pointer that specifies the functions/APIs that might have to be changed or would be effected by the port. If no, is there any reason why not? ~gary From ash@huntwork.net Fri Oct 25 00:58:05 2002 From: ash@huntwork.net (Andrew Huntwork) Date: Thu, 24 Oct 2002 16:58:05 -0700 Subject: [Mono-list] msil/cil editting library Message-ID: <3DB8890D.6030604@huntwork.net> we're currently working on a java bytecode obfuscator/watermarker (www.cs.arizona.edu/sandmark/), and we'd like to obfuscate/watermark cil/msil assemblies as well. we're just starting to investigate this, so i could easily imagine that I have some terminology wrong already. we currently use BCEL (bcel.sf.net) to edit java bytecode. bcel provides apis to view and change almost all attributes of classes and methods, including the instruction lists of methods. we'd like to use and possibly develop or help to develop a similar library for msil, and it appears that the mono project contains large pieces of such a library in easily usable form already (file parsing, metadata parsing, method representation, control flow graph representation, etc). I haven't run across any code that would allow me to dump a modified MonoMethod back into a MonoImage or a MonoImage back into an assembly. Does such code exist? I have found code that interprets the instructions and arguments in a byte array, but having some kind of higher level view of instructions and arguments is sometimes helpful. Does mono contain such an abstraction? Does anyone have any advice on developing such a library? Is anyone aware of existing libraries that do this kind of thing? Thanks very much for your help. From vi64pa@koti.soon.fi Fri Oct 25 09:43:47 2002 From: vi64pa@koti.soon.fi (ville) Date: Fri, 25 Oct 2002 10:43:47 +0200 Subject: [Mono-list] Maybe stupid, but... Message-ID: <200210250743.g9P7hlm14391@smtp2.sooninternet.net> Hi Can somebody explain me what is wrong when I run following code (code compiles ok), mono jams and after a while prints output: Killed. Console.WriteLine (new SqlBoolean (true).Value); I think it is no matter which SqlType it is and which method is invoked. It just allways jams (trying to do something with my hd). ville From tim@timcoleman.com Fri Oct 25 13:05:32 2002 From: tim@timcoleman.com (Tim Coleman) Date: Fri, 25 Oct 2002 08:05:32 -0400 Subject: [Mono-list] Maybe stupid, but... In-Reply-To: <200210250743.g9P7hlm14391@smtp2.sooninternet.net> References: <200210250743.g9P7hlm14391@smtp2.sooninternet.net> Message-ID: <20021025080532.A6580@tux.epenguin.org> On Fri, Oct 25, 2002 at 10:43:47AM +0200, ville wrote: > > Hi > > Can somebody explain me what is wrong when I run following code (code > compiles ok), mono jams and after a while prints output: Killed. > > Console.WriteLine (new SqlBoolean (true).Value); > > I think it is no matter which SqlType it is and which method is > invoked. It just allways jams (trying to do something with my hd). It may be getting stuck in an infinite loop (or is that supposed to generate an exception?). There may be a situation where two methods/properties are recursively calling each other. -- Tim Coleman [43.28 N 80.31 W] BMath, Honours Combinatorics and Optimization, University of Waterloo Software Developer, Global Services, Open Text Corporation "Under capitalism, man exploits man. Under communism, it's just the opposite." -- J.K. Galbraith From james.briant@exertris.com Fri Oct 25 11:03:52 2002 From: james.briant@exertris.com (James Briant) Date: Fri, 25 Oct 2002 11:03:52 +0100 Subject: [Mono-list] Not Self Hosting in .NET: cs-parser.jay - no.NETjay compiler. In-Reply-To: <1035481979.27072.66.camel@erandi.boston.ximian.com> Message-ID: I would like to build and modify the MCS. I would also like to live in a fantasy world where there are no C nor C++ compilers, and all tools are written in C#. A world where OS suppliers include a basic C# compiler instead of a C compiler in their platform SDK. I do feel somewhat guilty in occupying everyone's time on what might seem to some as a trivially solved issue (i.e install cygwin). But here it is: providing cs-parser.cs will allow people to contribute to the project without having to use C or C++. Sincerely, Jamie PS Perhaps someone can just send me a copy of the cs-parser.cs generated by the 0.16 release? -----Original Message----- From: Miguel de Icaza [mailto:miguel@ximian.com] Sent: 24 October 2002 18:53 To: James Briant Cc: mono-list@ximian.com Subject: RE: [Mono-list] Not Self Hosting in .NET: cs-parser.jay - no.NETjay compiler. Hello, > Thanks very much for taking the time to respond. I guess I must > misunderstand what "self hosting" means. If you have a working gcc, then you > can build all the tools necessary to compile gcc. However if you have a > working mcs or .NET compiler, you dont have all the tools necessary. I > thought this was the definition of self hosting, but I guess I > misunderstand. I do have MS's .NET, but I dont have gcc and cygwin has > screwed up my system too often for me to bother, I'm afraid. Can you not > just include the cs-parser.cs file for those of us who live in c# world but > not C world? I'd very much appreciate it. The self hosting terms refers to the fact that our C# code (compiler and class libraries) can be compiled by ourselves. In Linux, that means that we can completely develop Mono on Linux without using any Microsoft tools. Now, if you are missing `make', it is not our job to provide a make replacement, in fact, you will need GNU make from Cygwin to compile Mono. To take the example to the extreme, if you are missing an OS, we are not going to provide one ;-) If you do not want to install Cygwin, I suggest that you download the binary packaging of Mono that is done on major releases (you can get Mono 0.16 binaries from our web site for Windows). But if you choose to track a development branch you will have to get the tools required to build it. Miguel. From jonpryor@vt.edu Fri Oct 25 15:08:10 2002 From: jonpryor@vt.edu (Jonathan Pryor) Date: 25 Oct 2002 10:08:10 -0400 Subject: [Mono-list] mono port over other OS? In-Reply-To: References: Message-ID: <1035554891.4918.77.camel@melchior.magi> It should be possible. There are people working on porting Mono to Mac OS X, S/390, and Sparc platforms. However, each of these ports have required some changes to Mono, from configure.in changes, to providing/replacing "missing" constants for functions, to replacing some threading functions. So it should be possible, but not necessarily easy. As for documentation on the functions/APIs that need to be changed, I don't know of any such list. It seems that the typical approach is to compile Mono; any compiler errors are functions that need to be changed. ;-) However, I haven't participated in any of the porting efforts; I've only learned this from being on the listserv and reading the CVS commits. - Jon On Fri, 2002-10-25 at 00:37, Piyush, Garyali (IE10) wrote: > hi, > > I was just wondering whether mono/mint can be ported on to x86/PPC using > some > OS other than Linux, say QNX/RTLinux. If yes, I would like to know whether > there is any documentation/listing/pointer that specifies the functions/APIs > that might have to be changed or would be effected by the port. If no, is > there any reason why not? > > ~gary > > > _______________________________________________ > Mono-list maillist - Mono-list@ximian.com > http://lists.ximian.com/mailman/listinfo/mono-list From miguel@ximian.com Fri Oct 25 15:54:04 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 25 Oct 2002 10:54:04 -0400 Subject: [Mono-list] Not Self Hosting in .NET: cs-parser.jay - no.NETjay compiler. In-Reply-To: References: Message-ID: <1035557644.27072.129.camel@erandi.boston.ximian.com> Hello, > I would like to build and modify the MCS. I would also like to live in a > fantasy world where there are no C nor C++ compilers, and all tools are > written in C#. A world where OS suppliers include a basic C# compiler > instead of a C compiler in their platform SDK. > > I do feel somewhat guilty in occupying everyone's time on what might seem to > some as a trivially solved issue (i.e install cygwin). But here it is: > providing cs-parser.cs will allow people to contribute to the project > without having to use C or C++. Even if we provided the file, you would not be able to contribute in anything related to the parsing of C# because you could not regenerate the parser. And I do not believe that this will increase contributions to the compiler. Very few people choose to contribute to the compiler: it is not as easy to contribute there. It is easier to contribute to the class libraries (and a lot more entertaining). Miguel. From miguel@ximian.com Fri Oct 25 16:10:04 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 25 Oct 2002 11:10:04 -0400 Subject: [Mono-list] msil/cil editting library In-Reply-To: <3DB8890D.6030604@huntwork.net> References: <3DB8890D.6030604@huntwork.net> Message-ID: <1035558604.27073.135.camel@erandi.boston.ximian.com> Hello, > Does anyone have any advice on developing such a library? Is anyone > aware of existing libraries that do this kind of thing? You might want to talk to Sergey, he wrote the Mono.PEtoolkit. Migue From miguel@ximian.com Fri Oct 25 16:12:04 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 25 Oct 2002 11:12:04 -0400 Subject: [Mono-list] mono port over other OS? In-Reply-To: References: Message-ID: <1035558724.27073.138.camel@erandi.boston.ximian.com> Hello, > I was just wondering whether mono/mint can be ported on to x86/PPC using > some > OS other than Linux, say QNX/RTLinux. If yes, I would like to know whether > there is any documentation/listing/pointer that specifies the functions/APIs > that might have to be changed or would be effected by the port. If no, is > there any reason why not? There is no reason not to port it to other systems. You should compile it on your target machine, and run all the regression tests. Depending also on your flavor of the operating system, you might or might not need to work on the code in mono/io-layer (which abstracts most of the io/threading from Win32). Miguel. From tim@timcoleman.com Fri Oct 25 19:20:50 2002 From: tim@timcoleman.com (Tim Coleman) Date: Fri, 25 Oct 2002 14:20:50 -0400 Subject: [Mono-list] System.Data.SqlClient Status Message-ID: <20021025142050.A8007@tux.epenguin.org> Here's some information on the current status of the Mono class libraries for access to SQL Server databases. The internal TDS API is now stabilizing, so I think the timing is appropriate to branch out the provider into System.Data.SqlClient, while maintaining separate code for the Mono.Data.TdsClient. The SqlClient will use TDS version 7.0, which is used by Microsoft SQL Server 7 and 2000. The TdsClient uses TDS version 4.2, which is supported by both Microsoft and Sybase. It is possible to connect and run some simple queries using commands and datareaders. The connection objects support connection pooling, although there is still some implementation to be done in that area. At this point, I think it is appropriate for another member of the Mono ADO.Net team to take up the System.Data.SqlClient namespace, and I will continue to work on the internal TDS code, and I will use the generic TDS provider to test as I progress. I also have a Sybase database now, so I'll be able to start on a Mono.Data.SybaseClient provider as well. At the moment, there appears to be a problem with executing a query with TDS 7.0. I'm sure I'll fix it soon though :) -- Tim Coleman [43.28 N 80.31 W] BMath, Honours Combinatorics and Optimization, University of Waterloo Software Developer, Global Services, Open Text Corporation "Under capitalism, man exploits man. Under communism, it's just the opposite." -- J.K. Galbraith From Zoltan.2.Varga@nokia.com Fri Oct 25 19:27:08 2002 From: Zoltan.2.Varga@nokia.com (Zoltan.2.Varga@nokia.com) Date: Fri, 25 Oct 2002 20:27:08 +0200 Subject: [Mono-list] Thread:GetDomain() and GetDomainID() implementation Message-ID: <214ABAB6BF4DC24EAD9AB1C7461DA6A101F3E6@buebe002.europe.nokia.com> This is a multi-part message in MIME format. ------_=_NextPart_001_01C27C54.207E20F0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hi, The attached patch implements the two methods above in the Thread = class. It also fixes the run_tests.sh script under corlib/Test so it works now. Can somebody review it so I can check it = in? thanks Zoltan BTW, has anyone noticed that the corlib tests do not compile on linux = because they reference some cryptographic classes=20 which were removed from corlib? <>=20 =09 ------_=_NextPart_001_01C27C54.207E20F0 Content-Type: application/octet-stream; name="getdomain.patch" Content-Transfer-Encoding: base64 Content-Description: getdomain.patch Content-Disposition: attachment; filename="getdomain.patch" PyBtY3MvY2xhc3MvY29ybGliL2xpYnJhcnktZGVwcy5zdGFtcAo/IG1jcy9jbGFzcy9jb3JsaWIv dWoKPyBtY3MvY2xhc3MvY29ybGliL1Rlc3QvLmdkYl9oaXN0b3J5Cj8gbWNzL2NsYXNzL2Nvcmxp Yi9UZXN0L1N5c3RlbS5UaHJlYWRpbmcKPyBtY3MvY2xhc3MvY29ybGliL1Rlc3QvbGlicmFyeS1k ZXBzLnN0YW1wCj8gbWNzL2NsYXNzL2NvcmxpYi9UZXN0L3J1bl90ZXN0CkluZGV4OiBtb25vL21v bm8vbWV0YWRhdGEvdGhyZWFkcy5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcHVibGljL21v bm8vbW9uby9tZXRhZGF0YS90aHJlYWRzLmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMzMKZGlm ZiAtdSAtMyAtcCAtcjEuMzMgdGhyZWFkcy5jCi0tLSBtb25vL21vbm8vbWV0YWRhdGEvdGhyZWFk cy5jCTMgT2N0IDIwMDIgMTQ6MDE6MjkgLTAwMDAJMS4zMworKysgbW9uby9tb25vL21ldGFkYXRh L3RocmVhZHMuYwkyNSBPY3QgMjAwMiAxODoyNDo0OCAtMDAwMApAQCAtMzExLDEwICszMTEsMTAg QEAgdm9pZCB2ZXNfaWNhbGxfU3lzdGVtX1RocmVhZGluZ19UaHJlYWRfUwogCVNsZWVwKG1zKTsK IH0KIAotTW9ub0FwcERvbWFpbiAqdmVzX2ljYWxsX1N5c3RlbV9UaHJlYWRpbmdfVGhyZWFkX0N1 cnJlbnRUaHJlYWREb21haW5faW50ZXJuYWwodm9pZCkgCitnaW50MzIKK3Zlc19pY2FsbF9TeXN0 ZW1fVGhyZWFkaW5nX1RocmVhZF9HZXREb21haW5JRCAodm9pZCkgCiB7Ci0JLyogcmV0dXJuIHRo ZSBjdXJyZW50IGFwcCAqLwotCXJldHVybiBtb25vX2RvbWFpbl9nZXQoKS0+ZG9tYWluOworCXJl dHVybiBtb25vX2RvbWFpbl9nZXQoKS0+ZG9tYWluX2lkOwogfQogCiBNb25vVGhyZWFkICoKSW5k ZXg6IG1vbm8vbW9uby9tZXRhZGF0YS90aHJlYWRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2 cy9wdWJsaWMvbW9uby9tb25vL21ldGFkYXRhL3RocmVhZHMuaCx2CnJldHJpZXZpbmcgcmV2aXNp b24gMS4xOApkaWZmIC11IC0zIC1wIC1yMS4xOCB0aHJlYWRzLmgKLS0tIG1vbm8vbW9uby9tZXRh ZGF0YS90aHJlYWRzLmgJMyBTZXAgMjAwMiAxNjo0MToyOSAtMDAwMAkxLjE4CisrKyBtb25vL21v bm8vbWV0YWRhdGEvdGhyZWFkcy5oCTI1IE9jdCAyMDAyIDE4OjI0OjQ4IC0wMDAwCkBAIC0yNiw4 ICsyNiw4IEBAIGV4dGVybiBIQU5ETEUgdmVzX2ljYWxsX1N5c3RlbV9UaHJlYWRpbmcKIGV4dGVy biB2b2lkIHZlc19pY2FsbF9TeXN0ZW1fVGhyZWFkaW5nX1RocmVhZF9UaHJlYWRfZnJlZV9pbnRl cm5hbChNb25vVGhyZWFkICp0aGlzLCBIQU5ETEUgdGhyZWFkKTsKIGV4dGVybiB2b2lkIHZlc19p Y2FsbF9TeXN0ZW1fVGhyZWFkaW5nX1RocmVhZF9TdGFydF9pbnRlcm5hbChNb25vVGhyZWFkICp0 aGlzLCBIQU5ETEUgdGhyZWFkKTsKIGV4dGVybiB2b2lkIHZlc19pY2FsbF9TeXN0ZW1fVGhyZWFk aW5nX1RocmVhZF9TbGVlcF9pbnRlcm5hbChpbnQgbXMpOwotZXh0ZXJuIE1vbm9BcHBEb21haW4g KiB2ZXNfaWNhbGxfU3lzdGVtX1RocmVhZGluZ19UaHJlYWRfQ3VycmVudFRocmVhZERvbWFpbl9p bnRlcm5hbCh2b2lkKTsKIGV4dGVybiBnYm9vbGVhbiB2ZXNfaWNhbGxfU3lzdGVtX1RocmVhZGlu Z19UaHJlYWRfSm9pbl9pbnRlcm5hbChNb25vVGhyZWFkICp0aGlzLCBpbnQgbXMsIEhBTkRMRSB0 aHJlYWQpOworZXh0ZXJuIGdpbnQzMiB2ZXNfaWNhbGxfU3lzdGVtX1RocmVhZGluZ19UaHJlYWRf R2V0RG9tYWluSUQgKHZvaWQpOwogZXh0ZXJuIHZvaWQgdmVzX2ljYWxsX1N5c3RlbV9UaHJlYWRp bmdfVGhyZWFkX1Nsb3RIYXNoX3N0b3JlKE1vbm9PYmplY3QgKmRhdGEpOwogZXh0ZXJuIE1vbm9P YmplY3QgKnZlc19pY2FsbF9TeXN0ZW1fVGhyZWFkaW5nX1RocmVhZF9TbG90SGFzaF9sb29rdXAo dm9pZCk7CiBleHRlcm4gZ2Jvb2xlYW4gdmVzX2ljYWxsX1N5c3RlbV9UaHJlYWRpbmdfTW9uaXRv cl9Nb25pdG9yX3RyeV9lbnRlcihNb25vT2JqZWN0ICpvYmosIGludCBtcyk7CkluZGV4OiBtb25v L21vbm8vbWV0YWRhdGEvaWNhbGwuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3B1YmxpYy9t b25vL21vbm8vbWV0YWRhdGEvaWNhbGwuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4yMjMKZGlm ZiAtdSAtMyAtcCAtcjEuMjIzIGljYWxsLmMKLS0tIG1vbm8vbW9uby9tZXRhZGF0YS9pY2FsbC5j CTI0IE9jdCAyMDAyIDE1OjU4OjAzIC0wMDAwCTEuMjIzCisrKyBtb25vL21vbm8vbWV0YWRhdGEv aWNhbGwuYwkyNSBPY3QgMjAwMiAxODoyNTowNiAtMDAwMApAQCAtMjg5NSwxMCArMjg5NSwxMCBA QCBzdGF0aWMgZ2NvbnN0cG9pbnRlciBpY2FsbF9tYXAgW10gPSB7CiAJIlN5c3RlbS5UaHJlYWRp bmcuVGhyZWFkOjpTdGFydF9pbnRlcm5hbCIsIHZlc19pY2FsbF9TeXN0ZW1fVGhyZWFkaW5nX1Ro cmVhZF9TdGFydF9pbnRlcm5hbCwKIAkiU3lzdGVtLlRocmVhZGluZy5UaHJlYWQ6OlNsZWVwX2lu dGVybmFsIiwgdmVzX2ljYWxsX1N5c3RlbV9UaHJlYWRpbmdfVGhyZWFkX1NsZWVwX2ludGVybmFs LAogCSJTeXN0ZW0uVGhyZWFkaW5nLlRocmVhZDo6Q3VycmVudFRocmVhZF9pbnRlcm5hbCIsIG1v bm9fdGhyZWFkX2N1cnJlbnQsCi0JIlN5c3RlbS5UaHJlYWRpbmcuVGhyZWFkOjpDdXJyZW50VGhy ZWFkRG9tYWluX2ludGVybmFsIiwgdmVzX2ljYWxsX1N5c3RlbV9UaHJlYWRpbmdfVGhyZWFkX0N1 cnJlbnRUaHJlYWREb21haW5faW50ZXJuYWwsCiAJIlN5c3RlbS5UaHJlYWRpbmcuVGhyZWFkOjpK b2luX2ludGVybmFsIiwgdmVzX2ljYWxsX1N5c3RlbV9UaHJlYWRpbmdfVGhyZWFkX0pvaW5faW50 ZXJuYWwsCiAJIlN5c3RlbS5UaHJlYWRpbmcuVGhyZWFkOjpTbG90SGFzaF9sb29rdXAiLCB2ZXNf aWNhbGxfU3lzdGVtX1RocmVhZGluZ19UaHJlYWRfU2xvdEhhc2hfbG9va3VwLAogCSJTeXN0ZW0u VGhyZWFkaW5nLlRocmVhZDo6U2xvdEhhc2hfc3RvcmUiLCB2ZXNfaWNhbGxfU3lzdGVtX1RocmVh ZGluZ19UaHJlYWRfU2xvdEhhc2hfc3RvcmUsCisJIlN5c3RlbS5UaHJlYWRpbmcuVGhyZWFkOjpH ZXREb21haW5JRCIsIHZlc19pY2FsbF9TeXN0ZW1fVGhyZWFkaW5nX1RocmVhZF9HZXREb21haW5J RCwKIAkiU3lzdGVtLlRocmVhZGluZy5Nb25pdG9yOjpNb25pdG9yX2V4aXQiLCB2ZXNfaWNhbGxf U3lzdGVtX1RocmVhZGluZ19Nb25pdG9yX01vbml0b3JfZXhpdCwKIAkiU3lzdGVtLlRocmVhZGlu Zy5Nb25pdG9yOjpNb25pdG9yX3Rlc3Rfb3duZXIiLCB2ZXNfaWNhbGxfU3lzdGVtX1RocmVhZGlu Z19Nb25pdG9yX01vbml0b3JfdGVzdF9vd25lciwKIAkiU3lzdGVtLlRocmVhZGluZy5Nb25pdG9y OjpNb25pdG9yX3Rlc3Rfc3luY2hyb25pc2VkIiwgdmVzX2ljYWxsX1N5c3RlbV9UaHJlYWRpbmdf TW9uaXRvcl9Nb25pdG9yX3Rlc3Rfc3luY2hyb25pc2VkLApJbmRleDogbW9uby9tb25vL21ldGFk YXRhL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3B1YmxpYy9tb25vL21vbm8v bWV0YWRhdGEvQ2hhbmdlTG9nLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjY1MApkaWZmIC11IC0z IC1wIC1yMS42NTAgQ2hhbmdlTG9nCi0tLSBtb25vL21vbm8vbWV0YWRhdGEvQ2hhbmdlTG9nCTI0 IE9jdCAyMDAyIDE1OjU4OjAzIC0wMDAwCTEuNjUwCisrKyBtb25vL21vbm8vbWV0YWRhdGEvQ2hh bmdlTG9nCTI1IE9jdCAyMDAyIDE4OjI1OjI5IC0wMDAwCkBAIC0xLDMgKzEsMTEgQEAKKzIwMDIt MTAtMjUgIFpvbHRhbiBWYXJnYSAgPHZhcmdhekBmcmVlbWFpbC5odT4KKworCSogYXBwZG9tYWlu LmggZG9tYWluLmM6IEFkZGVkIGFuIElEIHRvIGFwcGRvbWFpbnMuCisJCisJKiB0aHJlYWRzLmMg dGhyZWFkcy5oIGljYWxsLmM6IEltcGxlbWVudCBpY2FsbAorCVRocmVhZDpHZXREb21haW5JRCgp LCBhbmQgcmVtb3ZlIHVudXNlZCBpY2FsbCAKKwlDdXJyZW50VGhyZWFkRG9tYWluX2ludGVybmFs LgorCiAyMDAyLTEwLTI0ICBHb256YWxvIFBhbmlhZ3VhIEphdmllciA8Z29uemFsb0B4aW1pYW4u Y29tPgogCiAJKiBpY2FsbC5jOiBEb24ndCByZWN1cnNlIHRocm91Z2ggdGhlIGJhc2UgdHlwZXMg aW4gR2V0Q29uc3RydWN0b3IuCkluZGV4OiBtb25vL21vbm8vbWV0YWRhdGEvYXBwZG9tYWluLmgK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9wdWJsaWMvbW9uby9tb25vL21ldGFkYXRhL2FwcGRv bWFpbi5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjI3CmRpZmYgLXUgLTMgLXAgLXIxLjI3IGFw cGRvbWFpbi5oCi0tLSBtb25vL21vbm8vbWV0YWRhdGEvYXBwZG9tYWluLmgJMTcgT2N0IDIwMDIg MTk6MjM6MDAgLTAwMDAJMS4yNworKysgbW9uby9tb25vL21ldGFkYXRhL2FwcGRvbWFpbi5oCTI1 IE9jdCAyMDAyIDE4OjI1OjI5IC0wMDAwCkBAIC03OSw2ICs3OSw4IEBAIHN0cnVjdCBfTW9ub0Rv bWFpbiB7CiAJLyogaGFzaHRhYmxlcyBmb3IgUmVmbGVjdGlvbiBoYW5kbGVzICovCiAJTW9ub0dI YXNoVGFibGUgICAgICp0eXBlX2hhc2g7CiAJTW9ub0dIYXNoVGFibGUgICAgICpyZWZvYmplY3Rf aGFzaDsKKwkvKiBOZWVkZWQgYnkgVGhyZWFkOkdldERvbWFpbklEKCkgKi8KKwlnaW50MzIgICAg ICAgICAgICAgZG9tYWluX2lkOwogfTsKIAogLyogVGhpcyBpcyBhIGNvcHkgb2YgU3lzdGVtLkFw cERvbWFpbiAqLwpJbmRleDogbW9uby9tb25vL21ldGFkYXRhL2RvbWFpbi5jCj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K UkNTIGZpbGU6IC9jdnMvcHVibGljL21vbm8vbW9uby9tZXRhZGF0YS9kb21haW4uYyx2CnJldHJp ZXZpbmcgcmV2aXNpb24gMS4xOApkaWZmIC11IC0zIC1wIC1yMS4xOCBkb21haW4uYwotLS0gbW9u by9tb25vL21ldGFkYXRhL2RvbWFpbi5jCTEgU2VwIDIwMDIgMjA6NDc6NTUgLTAwMDAJMS4xOAor KysgbW9uby9tb25vL21ldGFkYXRhL2RvbWFpbi5jCTI1IE9jdCAyMDAyIDE4OjI1OjMxIC0wMDAw CkBAIC0yMiw2ICsyMiw4IEBACiAKIHN0YXRpYyBndWludDMyIGFwcGRvbWFpbl90aHJlYWRfaWQg PSAwOwogCitzdGF0aWMgZ2ludDMyIGFwcGRvbWFpbl9pZF9jb3VudGVyID0gMDsKKwogTW9ub0Rv bWFpbiAqbW9ub19yb290X2RvbWFpbiA9IE5VTEw7CiAKIHN0YXRpYyBNb25vSml0SW5mb1RhYmxl ICoKQEAgLTE4Miw2ICsxODQsNyBAQCBtb25vX2RvbWFpbl9jcmVhdGUgKHZvaWQpCiAJZG9tYWlu LT5qaXRfY29kZV9oYXNoID0gZ19oYXNoX3RhYmxlX25ldyAoTlVMTCwgTlVMTCk7CiAJZG9tYWlu LT5sZHN0cl90YWJsZSA9IG1vbm9fZ19oYXNoX3RhYmxlX25ldyAoKEdIYXNoRnVuYylsZHN0cl9o YXNoLCAoR0NvbXBhcmVGdW5jKWxkc3RyX2VxdWFsKTsKIAlkb21haW4tPmppdF9pbmZvX3RhYmxl ID0gbW9ub19qaXRfaW5mb190YWJsZV9uZXcgKCk7CisJZG9tYWluLT5kb21haW5faWQgPSBJbnRl cmxvY2tlZEluY3JlbWVudCAoJmFwcGRvbWFpbl9pZF9jb3VudGVyKTsKIAogCUluaXRpYWxpemVD cml0aWNhbFNlY3Rpb24gKCZkb21haW4tPmxvY2spOwogCXJldHVybiBkb21haW47CkluZGV4OiBt Y3MvY2xhc3MvY29ybGliLy9TeXN0ZW0uVGhyZWFkaW5nL0NoYW5nZUxvZwo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJD UyBmaWxlOiAvY3ZzL3B1YmxpYy9tY3MvY2xhc3MvY29ybGliL1N5c3RlbS5UaHJlYWRpbmcvQ2hh bmdlTG9nLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjI5CmRpZmYgLXUgLTMgLXAgLXIxLjI5IENo YW5nZUxvZwotLS0gbWNzL2NsYXNzL2NvcmxpYi8vU3lzdGVtLlRocmVhZGluZy9DaGFuZ2VMb2cJ MjQgT2N0IDIwMDIgMTA6MzQ6MDUgLTAwMDAJMS4yOQorKysgbWNzL2NsYXNzL2NvcmxpYi8vU3lz dGVtLlRocmVhZGluZy9DaGFuZ2VMb2cJMjUgT2N0IDIwMDIgMTg6MjU6NDkgLTAwMDAKQEAgLTEs MyArMSw3IEBACisyMDAyLTEwLTI1ICBab2x0YW4gVmFyZ2EgIDx2YXJnYXpAZnJlZW1haWwuaHU+ CisKKwkqIFRocmVhZC5jczogSW1wbGVtZW50IEdldERvbWFpbigpIGFuZCBHZXREb21haW5JRCgp LgorCiAyMDAyLTEwLTI0ICBHb256YWxvIFBhbmlhZ3VhIEphdmllciA8Z29uemFsb0B4aW1pYW4u Y29tPgogCiAJKiBUaHJlYWRQb29sLmNzOiBub3cgdGhlIG1vbml0b3IgdGhyZWFkIGlzIG5vdCBz bGVlcGluZyBhbmQgY2hlY2tpbmcgaWYKSW5kZXg6IG1jcy9jbGFzcy9jb3JsaWIvL1N5c3RlbS5U aHJlYWRpbmcvVGhyZWFkLmNzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcHVibGljL21jcy9j bGFzcy9jb3JsaWIvU3lzdGVtLlRocmVhZGluZy9UaHJlYWQuY3MsdgpyZXRyaWV2aW5nIHJldmlz aW9uIDEuMTUKZGlmZiAtdSAtMyAtcCAtcjEuMTUgVGhyZWFkLmNzCi0tLSBtY3MvY2xhc3MvY29y bGliLy9TeXN0ZW0uVGhyZWFkaW5nL1RocmVhZC5jcwkzIFNlcCAyMDAyIDE2OjQzOjE5IC0wMDAw CTEuMTUKKysrIG1jcy9jbGFzcy9jb3JsaWIvL1N5c3RlbS5UaHJlYWRpbmcvVGhyZWFkLmNzCTI1 IE9jdCAyMDAyIDE4OjI1OjUxIC0wMDAwCkBAIC0xMTgsMTcgKzExOCwxMiBAQCBuYW1lc3BhY2Ug U3lzdGVtLlRocmVhZGluZwogCQkJcmV0dXJuKHNsb3RoYXNoW3Nsb3RdKTsKIAkJfQogCi0JCVtN b25vVE9ET10KIAkJcHVibGljIHN0YXRpYyBBcHBEb21haW4gR2V0RG9tYWluKCkgewotCQkJLy8g RklYTUUKLQkJCXJldHVybihudWxsKTsKKwkJCXJldHVybiBBcHBEb21haW4uQ3VycmVudERvbWFp bjsKIAkJfQogCi0JCVtNb25vVE9ET10KLQkJcHVibGljIHN0YXRpYyBpbnQgR2V0RG9tYWluSUQo KSB7Ci0JCQkvLyBGSVhNRQotCQkJcmV0dXJuKDApOwotCQl9CisJCVtNZXRob2RJbXBsQXR0cmli dXRlKE1ldGhvZEltcGxPcHRpb25zLkludGVybmFsQ2FsbCldCisJCXB1YmxpYyBleHRlcm4gc3Rh dGljIGludCBHZXREb21haW5JRCgpOwogCiAJCXB1YmxpYyBzdGF0aWMgTG9jYWxEYXRhU3RvcmVT bG90IEdldE5hbWVkRGF0YVNsb3Qoc3RyaW5nIG5hbWUpIHsKIAkJCUxvY2FsRGF0YVN0b3JlU2xv dCBzbG90PShMb2NhbERhdGFTdG9yZVNsb3QpZGF0YXN0b3JlaGFzaFtuYW1lXTsKSW5kZXg6IG1j cy9jbGFzcy9jb3JsaWIvL1Rlc3QvQWxsVGVzdHMuY3MKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2 cy9wdWJsaWMvbWNzL2NsYXNzL2NvcmxpYi9UZXN0L0FsbFRlc3RzLmNzLHYKcmV0cmlldmluZyBy ZXZpc2lvbiAxLjE1CmRpZmYgLXUgLTMgLXAgLXIxLjE1IEFsbFRlc3RzLmNzCi0tLSBtY3MvY2xh c3MvY29ybGliLy9UZXN0L0FsbFRlc3RzLmNzCTI0IFNlcCAyMDAyIDA5OjE4OjEyIC0wMDAwCTEu MTUKKysrIG1jcy9jbGFzcy9jb3JsaWIvL1Rlc3QvQWxsVGVzdHMuY3MJMjUgT2N0IDIwMDIgMTg6 MjU6NTIgLTAwMDAKQEAgLTI4LDYgKzI4LDcgQEAgbmFtZXNwYWNlIE1vbm9UZXN0cyB7DQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWl0ZS5BZGRUZXN0KFN5c3RlbS5TZWN1cml0 eS5DcnlwdG9ncmFwaHkuQWxsVGVzdHMuU3VpdGUpOw0KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc3VpdGUuQWRkVGVzdChTeXN0ZW0uSU8uQWxsVGVzdHMuU3VpdGUpOw0KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VpdGUuQWRkVGVzdChTeXN0ZW0uVGV4dC5BbGxU ZXN0cy5TdWl0ZSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWl0ZS5BZGRU ZXN0KFN5c3RlbS5UaHJlYWRpbmcuQWxsVGVzdHMuU3VpdGUpOw0KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3VpdGUuQWRkVGVzdChTeXN0ZW0uU2VjdXJpdHkuUGVybWlzc2lvbnMu QWxsVGVzdHMuU3VpdGUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VpdGUu QWRkVGVzdChTeXN0ZW0uUmVzb3VyY2VzLkFsbFRlc3RzLlN1aXRlKTsNCiAJCQkJc3VpdGUuQWRk VGVzdChTeXN0ZW0uUnVudGltZS5TZXJpYWxpemF0aW9uLkFsbFRlc3RzLlN1aXRlKTsNCkluZGV4 OiBtY3MvY2xhc3MvY29ybGliLy9UZXN0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAv Y3ZzL3B1YmxpYy9tY3MvY2xhc3MvY29ybGliL1Rlc3QvQ2hhbmdlTG9nLHYKcmV0cmlldmluZyBy ZXZpc2lvbiAxLjUzCmRpZmYgLXUgLTMgLXAgLXIxLjUzIENoYW5nZUxvZwotLS0gbWNzL2NsYXNz L2NvcmxpYi8vVGVzdC9DaGFuZ2VMb2cJMTkgT2N0IDIwMDIgMTY6MjU6NDYgLTAwMDAJMS41Mwor KysgbWNzL2NsYXNzL2NvcmxpYi8vVGVzdC9DaGFuZ2VMb2cJMjUgT2N0IDIwMDIgMTg6MjU6NTMg LTAwMDAKQEAgLTEsMyArMSw3IEBACisyMDAyLTEwLTI1ICBab2x0YW4gVmFyZ2EgIDx2YXJnYXpA ZnJlZW1haWwuaHU+CisKKwkqIGNvcmxpYl9saW51eF90ZXN0LmFyZ3MgQWxsVGVzdHMuY3M6IEFk ZGVkIFN5c3RlbS5UaHJlYWRpbmcgdGVzdGNhc2VzLgorCiAyMDAyLTEwLTE5ICBTZWJhc3RpZW4g UG91bGlvdCAgPHNwb3VsaW90QHZpZGVvdHJvbi5jYT4KIAogCSogY29ybGliX3Rlc3QuYnVpbGQ6 IFJlbW92ZWQgYWxsIGV4Y2x1ZGVkIGNyeXB0b2dyYXBoaWMgdGVzdCBjb2RlIGFzIApJbmRleDog bWNzL2NsYXNzL2NvcmxpYi8vVGVzdC9jb3JsaWJfbGludXhfdGVzdC5hcmdzCj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K UkNTIGZpbGU6IC9jdnMvcHVibGljL21jcy9jbGFzcy9jb3JsaWIvVGVzdC9jb3JsaWJfbGludXhf dGVzdC5hcmdzLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjcKZGlmZiAtdSAtMyAtcCAtcjEuNyBj b3JsaWJfbGludXhfdGVzdC5hcmdzCi0tLSBtY3MvY2xhc3MvY29ybGliLy9UZXN0L2NvcmxpYl9s aW51eF90ZXN0LmFyZ3MJNSBPY3QgMjAwMiAxODozMjo1NyAtMDAwMAkxLjcKKysrIG1jcy9jbGFz cy9jb3JsaWIvL1Rlc3QvY29ybGliX2xpbnV4X3Rlc3QuYXJncwkyNSBPY3QgMjAwMiAxODoyNTo1 NCAtMDAwMApAQCAtODEsNiArODEsOCBAQCBTeXN0ZW0uU2VjdXJpdHkuUGVybWlzc2lvbnMvRmls ZUlPUGVybWlzCiBTeXN0ZW0uVGV4dC9BbGxUZXN0cy5jcwogU3lzdGVtLlRleHQvU3RyaW5nQnVp bGRlclRlc3QuY3MKIFN5c3RlbS5UZXh0L0FTQ0lJRW5jb2RpbmdUZXN0LmNzCitTeXN0ZW0uVGhy ZWFkaW5nL0FsbFRlc3RzLmNzCitTeXN0ZW0uVGhyZWFkaW5nL1RocmVhZFRlc3QuY3MKIFN5c3Rl bS5SdW50aW1lLkNvbXBpbGVyU2VydmljZXMvQWxsVGVzdHMuY3MKIFN5c3RlbS5SdW50aW1lLkNv bXBpbGVyU2VydmljZXMvUnVudGltZUhlbHBlcnNUZXN0LmNzCiBTeXN0ZW0uUnVudGltZS5TZXJp YWxpemF0aW9uL0FsbFRlc3RzLmNzCkluZGV4OiBtY3MvY2xhc3MvY29ybGliLy9UZXN0L3J1bl90 ZXN0LnNoCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcHVibGljL21jcy9jbGFzcy9jb3JsaWIv VGVzdC9ydW5fdGVzdC5zaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xCmRpZmYgLXUgLTMgLXAg LXIxLjEgcnVuX3Rlc3Quc2gKLS0tIG1jcy9jbGFzcy9jb3JsaWIvL1Rlc3QvcnVuX3Rlc3Quc2gJ MjcgQXVnIDIwMDIgMTc6MzE6MDUgLTAwMDAJMS4xCisrKyBtY3MvY2xhc3MvY29ybGliLy9UZXN0 L3J1bl90ZXN0LnNoCTI1IE9jdCAyMDAyIDE4OjI1OjU0IC0wMDAwCkBAIC0xMCwxMSArMTAsMTEg QEAgaWYgWyAkIyAtZXEgMCBdOyB0aGVuCiBmaQogCiB0b3BkaXI9Li4vLi4vLi4KLU5VTklUQ09O U09MRT0ke3RvcGRpcn0vbnVuaXQvc3JjL05Vbml0Q29uc29sZS9OVW5pdENvbnNvbGVfbW9uby5l eGUKLU5VTklUX01PTk9fUEFUSD0ke3RvcGRpcn0vbnVuaXQvc3JjL05Vbml0Q29yZTouCitOVU5J VENPTlNPTEU9JHt0b3BkaXJ9L2NsYXNzL2xpYi9OVW5pdENvbnNvbGVfbW9uby5leGUKK05VTklU X01PTk9fUEFUSD0ke3RvcGRpcn0vY2xhc3MvbGliLzouCiAKIGZvciBpIGluICRAOyBkbwotCU1P Tk9fUEFUSD0uLi8uLi8uLi9udW5pdC9zcmMvTlVuaXRDb3JlOi4gXAorCU1PTk9fUEFUSD0uLi8u Li8uLi9jbGFzcy9saWI6LiBcCiAJCW1vbm8gJHtOVU5JVENPTlNPTEV9IE1vbm9UZXN0cy4ke2l9 LGNvcmxpYl9saW51eF90ZXN0LmRsbAogZG9uZQogCg== ------_=_NextPart_001_01C27C54.207E20F0-- From ianm@ActiveState.com Fri Oct 25 23:21:51 2002 From: ianm@ActiveState.com (Ian MacLean) Date: Fri, 25 Oct 2002 15:21:51 -0700 Subject: [Mono-list] XmlValidatingReader.cs Message-ID: <3DB9C3FF.4010600@activestate.com> Is there a reson that this file isn't included in the list files for System.Xml ? It doesn't look like its fully implemented but it compiles OK and has stubbbed method implementations so that code using this class can compile. Its one of the few things preventing the latest NAnt code building on mono. Everythong else is looking good. Ian From RobertoDohnert@netscape.net Sat Oct 26 17:33:39 2002 From: RobertoDohnert@netscape.net (Roberto J Dohnert) Date: Sat, 26 Oct 2002 12:33:39 -0400 Subject: [Mono-list] Mono on GNU-Darwin Message-ID: <57C15E41.372D64CE.062210A9@netscape.net> Does anyone know of any efforts to port Mono to the GNU Darwin enviroment or to Mac OS X ? I looked around the site and found mention of it but I looked in CVS and didnt see anything official. __________________________________________________________________ The NEW Netscape 7.0 browser is now available. Upgrade now! http://channels.netscape.com/ns/browsers/download.jsp Get your own FREE, personal Netscape Mail account today at http://webmail.netscape.com/ From jarek@atm.com.pl Sat Oct 26 22:11:01 2002 From: jarek@atm.com.pl (Jaroslaw Kowalski) Date: Sat, 26 Oct 2002 23:11:01 +0200 Subject: [Mono-list] System.Xml bug Message-ID: <001801c27d34$30464c40$192ea8c0@jarekxp> This is a multi-part message in MIME format. ------=_NextPart_000_0015_01C27D44.F39806B0 Content-Type: text/plain; charset="iso-8859-2" Content-Transfer-Encoding: 7bit Hi all! Looks like there's been some regression in System.Xml classes: Consider the (kind of trivial) code in xmlbug.cs (attached) and test.xml (also attached) On .NET it runs ok. On Mono, it produces: ======== Unhandled Exception: System.InvalidOperationException: The requested operation cannot be performed in <0x000b1> 00 System.Xml.XmlDocumentNavigator:get_NodeType () in <0x00020> 00 System.Xml.XPath.NodeNameTest:Match (System.Xml.Xsl.XsltContext,System.Xml.XPath.XPathNavigator) in <0x00034> 00 System.Xml.XPath.AxisIterator:MoveNext () in <0x0001a> 00 System.Xml.XPath.SlashIterator:MoveNext () in <0x0010e> 00 System.Xml.XmlNode:SelectNodes (string,System.Xml.XmlNamespaceManager) in <0x0006d> 00 .Bug1:Main (string[]) ======== I found that the problem is related to innocent '' at the top of 'test.xml'. If I remove it, everything is OK. I'm 100% sure that it used to work properly on mono but is broken for some time now. Regards, Jarek ------=_NextPart_000_0015_01C27D44.F39806B0 Content-Type: text/plain; name="xmlbug.cs" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="xmlbug.cs" using System; using System.Xml; public class Bug1 { public static void Main(string[] args) { XmlDocument doc = new XmlDocument(); doc.Load("test.xml"); foreach (XmlElement el in doc.SelectNodes("xxx/yyy")) { Console.WriteLine(el.InnerXml); } } }; ------=_NextPart_000_0015_01C27D44.F39806B0 Content-Type: text/xml; name="test.xml" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="test.xml" item1 item2 item3 item4 ------=_NextPart_000_0015_01C27D44.F39806B0-- From piersh@friskit.com Sat Oct 26 23:39:24 2002 From: piersh@friskit.com (Piers Haken) Date: Sat, 26 Oct 2002 15:39:24 -0700 Subject: [Mono-list] System.Xml bug Message-ID: <9891913C5BFE87429D71E37F08210CB91839E3@zeus.sfhq.friskit.com> This is a multi-part message in MIME format. ------_=_NextPart_001_01C27D40.88ED74FC Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: quoted-printable It looks like XmlDocumentNavigator wasn't handling the xml declaration node correctly. I have checked the following simple patch into cvs: Index: XmlDocumentNavigator.cs =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /cvs/public/mcs/class/System.XML/System.Xml/XmlDocumentNavigator.cs,v retrieving revision 1.4 diff -u -r1.4 XmlDocumentNavigator.cs --- XmlDocumentNavigator.cs 13 Sep 2002 02:15:40 -0000 1.4 +++ XmlDocumentNavigator.cs 26 Oct 2002 22:25:28 -0000 @@ -123,7 +123,7 @@ case XmlNodeType.ProcessingInstruction: return XPathNodeType.ProcessingInstruction; } - throw new InvalidOperationException (); + return (XPathNodeType) (-1); } } =20 Piers. > -----Original Message----- > From: Jaroslaw Kowalski [mailto:jarek@atm.com.pl]=20 > Sent: Saturday, October 26, 2002 2:11 PM > To: mono-list@ximian.com > Subject: [Mono-list] System.Xml bug >=20 >=20 > Hi all! >=20 > Looks like there's been some regression in System.Xml=20 > classes: Consider the (kind of trivial) code in xmlbug.cs=20 > (attached) and test.xml (also attached) >=20 > On .NET it runs ok. On Mono, it produces: > =3D=3D=3D=3D=3D=3D=3D=3D > Unhandled Exception: System.InvalidOperationException: The=20 > requested operation cannot be performed in <0x000b1> 00=20 > System.Xml.XmlDocumentNavigator:get_NodeType () in <0x00020>=20 > 00 System.Xml.XPath.NodeNameTest:Match > (System.Xml.Xsl.XsltContext,System.Xml.XPath.XPathNavigator) > in <0x00034> 00 System.Xml.XPath.AxisIterator:MoveNext () > in <0x0001a> 00 System.Xml.XPath.SlashIterator:MoveNext () > in <0x0010e> 00 System.Xml.XmlNode:SelectNodes > (string,System.Xml.XmlNamespaceManager) > in <0x0006d> 00 .Bug1:Main (string[]) > =3D=3D=3D=3D=3D=3D=3D=3D >=20 > I found that the problem is related to innocent ' version=3D"1.0" ?>' at the top of 'test.xml'. If I remove it,=20 > everything is OK. I'm 100% sure that it used to work properly=20 > on mono but is broken for some time now. >=20 > Regards, >=20 > Jarek >=20 ------_=_NextPart_001_01C27D40.88ED74FC Content-Type: text/html; charset="US-ASCII" Content-Transfer-Encoding: quoted-printable RE: [Mono-list] System.Xml bug

It looks like XmlDocumentNavigator wasn't handling the = xml declaration node correctly. I have checked the following simple = patch into cvs:

Index: XmlDocumentNavigator.cs
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
RCS file: = /cvs/public/mcs/class/System.XML/System.Xml/XmlDocumentNavigator.cs,v
retrieving revision 1.4
diff -u -r1.4 XmlDocumentNavigator.cs
--- XmlDocumentNavigator.cs     = 13 Sep 2002 02:15:40 -0000      1.4
+++ XmlDocumentNavigator.cs     = 26 Oct 2002 22:25:28 -0000
@@ -123,7 +123,7 @@
        =         =         =         case = XmlNodeType.ProcessingInstruction:
        =         =         =         =         return = XPathNodeType.ProcessingInstruction;
        =         =         =         }
-       =         =         =         throw new = InvalidOperationException ();
+       =         =         =         return (XPathNodeType) = (-1);
        =         =         }
        =         }
 

Piers.

> -----Original Message-----
> From: Jaroslaw Kowalski [mailto:jarek@atm.com.pl]
> Sent: Saturday, October 26, 2002 2:11 PM
> To: mono-list@ximian.com
> Subject: [Mono-list] System.Xml bug
>
>
> Hi all!
>
> Looks like there's been some regression in = System.Xml
> classes: Consider the (kind of trivial) code in = xmlbug.cs
> (attached) and test.xml (also attached)
>
> On .NET it runs ok. On Mono, it produces:
> =3D=3D=3D=3D=3D=3D=3D=3D
> Unhandled Exception: = System.InvalidOperationException: The
> requested operation cannot be performed in = <0x000b1> 00
> System.Xml.XmlDocumentNavigator:get_NodeType () = in <0x00020>
> 00 System.Xml.XPath.NodeNameTest:Match
> = (System.Xml.Xsl.XsltContext,System.Xml.XPath.XPathNavigator)
> in <0x00034> 00 = System.Xml.XPath.AxisIterator:MoveNext ()
> in <0x0001a> 00 = System.Xml.XPath.SlashIterator:MoveNext ()
> in <0x0010e> 00 = System.Xml.XmlNode:SelectNodes
> (string,System.Xml.XmlNamespaceManager)
> in <0x0006d> 00 .Bug1:Main = (string[])
> =3D=3D=3D=3D=3D=3D=3D=3D
>
> I found that the problem is related to innocent = '<?xml
> version=3D"1.0" ?>' at the top of = 'test.xml'. If I remove it,
> everything is OK. I'm 100% sure that it used to = work properly
> on mono but is broken for some time now.
>
> Regards,
>
> Jarek
>

------_=_NextPart_001_01C27D40.88ED74FC-- From vi64pa@koti.soon.fi Sun Oct 27 09:47:25 2002 From: vi64pa@koti.soon.fi (ville) Date: Sun, 27 Oct 2002 11:47:25 +0200 Subject: [Mono-list] Maybe stupid, but... In-Reply-To: <20021025080532.A6580@tux.epenguin.org> References: <200210250743.g9P7hlm14391@smtp2.sooninternet.net> <20021025080532.A6580@tux.epenguin.org> Message-ID: <200210271147.25381.vi64pa@koti.soon.fi> On Friday 25 October 2002 15:05, you wrote: > On Fri, Oct 25, 2002 at 10:43:47AM +0200, ville wrote: > > Hi > > > > Can somebody explain me what is wrong when I run following code (code > > compiles ok), mono jams and after a while prints output: Killed. > > > > Console.WriteLine (new SqlBoolean (true).Value); > > > > I think it is no matter which SqlType it is and which method is > > invoked. It just allways jams (trying to do something with my hd). > > It may be getting stuck in an infinite loop (or is that supposed to > generate an exception?). There may be a situation where two > methods/properties are recursively calling each other. Yea, are right. IsNull --> == --> IsNull --> == ..... Thanks a lot. ville ps. my monitor is broken, so I can't fix it now, but soon... i hope. :-( From bencooley@cinematix.com Sat Oct 26 04:52:04 2002 From: bencooley@cinematix.com (Ben Cooley) Date: Sat, 26 Oct 2002 12:52:04 +0900 Subject: [Mono-list] Re: C# -> Binary .. MCS to C++ cross compiler References: <200210161045.10848.yannick.koehler@colubris.com> <005301c27a39$beadc920$224faad3@ben> <1035350761.14578.1494.camel@erandi.boston.ximian.com> Message-ID: <000201c27d99$e89f2f90$224faad3@ben> > > The problem with a CLI implementation on many platforms is simply speed. > > You can say what you want about the performance of IBM's JIT on x86, but for > > deployment on memory limited and performance limited embedded systems, a JIT > > simply isn't a good idea. > > Well, it depends on the end of the spectrum you are at. We could go as > far as saying that C for some systems is too much, or that even a stored > program is too much, and its better to just wire a state machine for a > particular problem. Yes, I guess that's true. I've certainly worked on projects that were of that sort. The projects I work on nowdays are rather different, however. > Today you can purchase cell phones running Java and the Danger Hiptop > also uses it, and really, you can not complain about their speed. Yes, but a cell phone is not a 3D console game. ;-) > Probably a JIT customized for server performance is not a good idea, but > its open source: you can shrink it ;-) > > > There is an especially large performance hit when you are talking about game > > platforms like the Playstation 2 or Gamecube, where the slower speed of the > > host processor and the lack of vectorization and other C and C++ compiler > > complex static optimization techniques really does make a big difference. > > For those platforms you should probably run your time sensitive code in > a thread with finely tuned assembler/C/C++, and just keep some of your > logic in a higher, slower, non-time-sensitive portion of your code, so > it should not be an issue anyways. The problem is that putting the base level time sensitive code only gets you so far. Certainly there are gross optimizations you can make to the tightest inner loops, but the age of hand tuned assembly is long past (as most hand tuned inner loops are now implemented in hardware). What we see in our projects is across the board time issues. We have physics implementation, scene traversal, culling, ai pulsing, etc. etc. etc. If we were to "hand tune" each of these, that would constitute a large percentage of our project. Another aspect to console programming is the relative slow speed of the main processor. The PS2 has a modified MIPS processor which runs at about 1/4 to 1/8th the speed of modern processors, and function call overhead and lack of good inlining and other time sensitive static optimization is also a problem. What we've actually seen in our work is noticable framerate increases just by the implementation of better optimization strategies in the Codewarrior compiler we use. The earlier versions seemed to make poor choices on inlining and expression optimization. The later versions which produced better optimized C++ code were actually much stronger. > If you care too much about performance, you are better off using the > tools provided by the CPU vendor, and not a general purpose compiler > (ie, not Microsoft, not Borland's, not GCC's and not Ximian's). There are many aspects to creating a sucessful project. One of the most important in creating games is simply speed. There are memory management issus on consoles as well that must be addressed, as well as load latency, streaming, etc. But then there are programmer productivity and code quality issues. These issues are best addressed by a more powerful and expressive, and "safe" language (i.e. C#). The fact that C# allows you to program safely "most" of the time, and also permits the use of pointers and other unsafe techinques is a very compelling argument for using it in game software. > > Likewise, it is simply not practical to re-engineer all of the static > > optimization techniques for every possible target processor into the JIT > > system. It will never be any more than a "good" solution for most embedded > > systems, and the fact that it is required to dynamically compile at load > > time is also another problem. > > Thats what an ahead-of-time compiler would achieve (See NGen's code from > Zoltan for a proof of concept implementation). I agree. My project is similar to his except that it translates the C# to C++ code directly, and bypasses the IL machine. I'm not saying that this is a "better" way to do it, and certainly it would not be for a majority of applications. But there are several advantages... 1. The resulting code is human readable. 2. The resulting code integrates well with existing C++ infrastructure such as IDE's and source debuggers and native linkable libs. 3. The resulting code is not affected by the negative aspects of an intermediate tranlation to the IL state machine. (local names are preserved, expressions, statements, etc.) 4. Static optimization in the back end compiler is facilitated by divorcing the code generation from the stack based state machine in Zoltan's project. These may not be important to everyone, but they are important to the types of projects we do. And many people simply find a precompiled statically optimized C or C++ binary executable direct from only slightly modified translated source as a very desirable thing when speed and code size are considered. > In terms of speed, there is nothing stopping the engine of a JIT > compiler from being as good as a native compiler. Typically JIT engines > have to make a trade off between code quality and compilation time, but > this issue becomes a moot point with an ahead-of-time compiler. > > All of this, of course, within the scope of the .NET Framework, if you > do not want some of its features, then yes, you could live with a > simpler hack. Well, a hack that works as well as the real thing isn't to bad of a hack. We still get dynamic compilation, dynamic loading of IL modules, IL support, etc. Mono is still precisely the same. The only difference is we have a beefed up statically compiled mono runtime which has a the parts of corlib and the application program statically compiled into maximally optimized native code as "internal" methods. It's not right for everything and everybody, but in the niche that it's intended for, it will work fine, with no compromises as to functionality. From miguel@ximian.com Sun Oct 27 18:52:24 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 27 Oct 2002 13:52:24 -0500 Subject: [Mono-list] XmlValidatingReader.cs In-Reply-To: <3DB9C3FF.4010600@activestate.com> References: <3DB9C3FF.4010600@activestate.com> Message-ID: <1035744743.27072.259.camel@erandi.boston.ximian.com> Hello, > Is there a reson that this file isn't included in the list files for > System.Xml ? It doesn't look like its fully implemented but it compiles > OK and has stubbbed method implementations so that code using this class > can compile. Its one of the few things preventing the latest NAnt code > building on mono. Everythong else is looking good. It is included in the build now per your request, but I have done nothing to test it. Miguel From ginga@kit.hi-ho.ne.jp Sun Oct 27 18:05:20 2002 From: ginga@kit.hi-ho.ne.jp (A.E.) Date: Mon, 28 Oct 2002 03:05:20 +0900 Subject: [Mono-list] How to handle default attributes in XML? Message-ID: <20021028030413.5811.GINGA@kit.hi-ho.ne.jp> Hello. I'm playing around Xml, to create 'default attribute' with a document type declaration. Once I thought this mission belongs to XmlValidatingReader. MS .NET Framework documentation says that XmlTextReader "Does not expand default attributes," too. But in fact, the XmlTextReader (not XmlValidatingReader) implementation of MS .NET Framework expands default attributes. Which way is preferable...? Thanks. -- A.Enomoto From alan@alanz.com Sun Oct 27 22:35:44 2002 From: alan@alanz.com (Alan West) Date: Sun, 27 Oct 2002 22:35:44 +0000 Subject: [Mono-list] Possible bug with casting struct pointers Message-ID: <200210272235.44716.alan@alanz.com> Hi, I've started working on bindings for DirectFB, and seem to have come across my first bug with mcs using the following code. I got my old Windows XP hard disk plugged in to try it out in VS.NET and all was fine... mcs I'm using was built from cvs about a week ago, I was gonna try the current cvs but it wont build now due to code in the Mono.Data.TdsClient area. using System; namespace testapp{ public unsafe class LibTestAPI{ struct LibTestStruct{ void* pData; void* pTest1; } LibTestStruct* the_struct; public void Create(){ IntPtr MyPtr = new IntPtr(0); // Usually created elsewhere the_struct = (LibTestStruct*) MyPtr.ToPointer(); // error CS1002 } } class TestApp{ [STAThread] static void Main(string[] args){ LibTestAPI myapi = new LibTestAPI(); myapi.Create(); } } } # mcs --unsafe testapp.cs syntax error, expecting BASE BOOL BYTE CHAR CHECKED DECIMAL DOUBLE FALSE FLOAT INT LONG NEW NULL OBJECT SBYTE SHORT SIZEOF STRING THIS TRUE TYPEOF UINT ULONG UNCHECKED USHORT VOID OPEN_PARENS TILDE PLUS MINUS BANG BITWISE_AND STAR OP_INC OP_DEC LITERAL_INTEGER LITERAL_FLOAT LITERAL_DOUBLE LITERAL_DECIMAL LITERAL_CHARACTER LITERAL_STRING IDENTIFIER testapp.cs(15) error CS1002: Expecting `;' Compilation failed: 1 error(s), 0 warnings From danmorg@sc.rr.com Mon Oct 28 02:15:08 2002 From: danmorg@sc.rr.com (Daniel Morgan) Date: Sun, 27 Oct 2002 21:15:08 -0500 Subject: [Mono-list] Possible bug with casting struct pointers In-Reply-To: <200210272235.44716.alan@alanz.com> Message-ID: in mcs/class/makefile.gnu, just remove the line that builds Mono.Data.TdsClient -----Original Message----- From: mono-list-admin@ximian.com [mailto:mono-list-admin@ximian.com]On Behalf Of Alan West Sent: Sunday, October 27, 2002 5:36 PM To: mono-list@ximian.com Subject: [Mono-list] Possible bug with casting struct pointers Hi, I've started working on bindings for DirectFB, and seem to have come across my first bug with mcs using the following code. I got my old Windows XP hard disk plugged in to try it out in VS.NET and all was fine... mcs I'm using was built from cvs about a week ago, I was gonna try the current cvs but it wont build now due to code in the Mono.Data.TdsClient area. using System; namespace testapp{ public unsafe class LibTestAPI{ struct LibTestStruct{ void* pData; void* pTest1; } LibTestStruct* the_struct; public void Create(){ IntPtr MyPtr = new IntPtr(0); // Usually created elsewhere the_struct = (LibTestStruct*) MyPtr.ToPointer(); // error CS1002 } } class TestApp{ [STAThread] static void Main(string[] args){ LibTestAPI myapi = new LibTestAPI(); myapi.Create(); } } } # mcs --unsafe testapp.cs syntax error, expecting BASE BOOL BYTE CHAR CHECKED DECIMAL DOUBLE FALSE FLOAT INT LONG NEW NULL OBJECT SBYTE SHORT SIZEOF STRING THIS TRUE TYPEOF UINT ULONG UNCHECKED USHORT VOID OPEN_PARENS TILDE PLUS MINUS BANG BITWISE_AND STAR OP_INC OP_DEC LITERAL_INTEGER LITERAL_FLOAT LITERAL_DOUBLE LITERAL_DECIMAL LITERAL_CHARACTER LITERAL_STRING IDENTIFIER testapp.cs(15) error CS1002: Expecting `;' Compilation failed: 1 error(s), 0 warnings _______________________________________________ Mono-list maillist - Mono-list@ximian.com http://lists.ximian.com/mailman/listinfo/mono-list From alan@alanz.com Mon Oct 28 02:43:06 2002 From: alan@alanz.com (Alan West) Date: Mon, 28 Oct 2002 02:43:06 +0000 Subject: [Mono-list] Possible bug with casting struct pointers In-Reply-To: References: Message-ID: <200210280243.06864.alan@alanz.com> Thanks Daniel for that tip, got it built and experience the same compile error from mcs and mono source I got just a couple of hours ago... It just seems like quite a fundamental feature so I dunno if I'm just doing something wrong, but it seems valid to me. The code is compiled fine if the cast and struct replaced with something like an int*. So speculating on the bug - is it only checking internal types??? On Monday 28 October 2002 2:15 am, Daniel Morgan wrote: > in mcs/class/makefile.gnu, just remove the line that builds > Mono.Data.TdsClient > -----Original Message----- > From: mono-list-admin@ximian.com [mailto:mono-list-admin@ximian.com]On > Behalf Of Alan West > Sent: Sunday, October 27, 2002 5:36 PM > To: mono-list@ximian.com > Subject: [Mono-list] Possible bug with casting struct pointers > > > Hi, I've started working on bindings for DirectFB, and seem to have come > across my first bug with mcs using the following code. I got my old Windows > XP hard disk plugged in to try it out in VS.NET and all was fine... mcs I'm > using was built from cvs about a week ago, I was gonna try the current cvs > but it wont build now due to code in the Mono.Data.TdsClient area. > From gonzalo@ximian.com Mon Oct 28 03:35:55 2002 From: gonzalo@ximian.com (Gonzalo Paniagua Javier) Date: 28 Oct 2002 04:35:55 +0100 Subject: [Mono-list] Possible bug with casting struct pointers In-Reply-To: <200210280243.06864.alan@alanz.com> References: <200210280243.06864.alan@alanz.com> Message-ID: <1035776157.494.30.camel@lalo2.micasa> El lun, 28-10-2002 a las 03:43, Alan West escribió: > Thanks Daniel for that tip, got it built and experience the same compile error > from mcs and mono source I got just a couple of hours ago... It just seems > like quite a fundamental feature so I dunno if I'm just doing something > wrong, but it seems valid to me. The code is compiled fine if the cast and > struct replaced with something like an int*. So speculating on the bug - is > it only checking internal types??? It's an mcs bug. Could you, please, fill a bug report in http://bugzilla.ximian.com for MCS? If not, i can do it. Thanks! -Gonzalo From mkestner@speakeasy.net Mon Oct 28 04:45:33 2002 From: mkestner@speakeasy.net (Mike Kestner) Date: 27 Oct 2002 22:45:33 -0600 Subject: [Mono-list] Gtk# version 0.5 released Message-ID: <1035780333.20553.121.camel@localhost.localdomain> Announcing release 0.5 of Gtk#, codenamed "Clankmaster Plus." Source tarball available for download from the Gtk# project download page: http://sourceforge.net/project/showfiles.php?group_id=40240 About Gtk#: Gtk# is C# language binding for the Gtk+ Graphical User Interface toolkit. The binding is fairly complete, but it is still largely unproven and not recommended for production work. Changes since 0.4: - Style, Table, TreeView, and TextBuffer customizations: Miguel - Make fixes: Juli Mallett - Callback marshaling: Rachel - Idle handlers and more mainloop support: Rachel - G(S)List support: Rachel - libgda/libgnomedb bindings: Rodrigo Moya - Ref handling fixes: Miguel, Rachel, MK - glade signal autoconnection: Ricardo - glade resource file construction: Ricardo - ToString overrides for Gdk structs: Jasper van Putten - Color and GC glue: Vlad - TreeSelection fixes: Kris - GSource binding: Duncan - Combo, List, and FileUtils customizations: Martin - GConf binding: Rachel - Weakref support in GLibObject: Ettore - win32 build support: Vlad, MK - a heap of bugfixes: Gonzalo, Joe, Martin, MK, Rachel, Vlad Contact: Discussion of Gtk# occurs at gtk-sharp-list@ximian.com. Bug reports should be directed to bugzilla.ximian.com, module gtk#. ________________________________________________________________________ -- Mike Kestner From hussein_mehanna@hotmail.com Sun Oct 27 08:41:15 2002 From: hussein_mehanna@hotmail.com (Hussein Mehanna) Date: Sun, 27 Oct 2002 08:41:15 +0000 Subject: [Mono-list] Contributing to Mono Message-ID:
Dear Sirs,
 
We are a group of three computer science students in Egypt and we are willing to make our project around porting the .Net framework to the Linux platform.Ofcourse we can't port the whole framework because we  have only six months which won't be fully dedicated to the project (we have Lectures, assignments ,etc.)
 
Since we can't port the whole framework , we will like to port one or more of the main components as long as this will be suitable for a graduation project .At the same time we will like to contribute to Mono , so we will be grateful if you recommend us any of the main components of the Runtime that haven't been implemented or fully implemented yet.
 
 
Thank you for your time.
 
Hussein Mehanna
 
P.S. We have checked mono's web site and we know that there are classes that haven't been implemented yet , but we are more interested in the Runtime components as we guess this includes subjects related to operating systems and so have scientific bases that are suitable for university graduation projects.


Get faster connections -- switch to MSN Internet Access! Click Here From burgenc@earthlink.net Sat Oct 26 04:09:18 2002 From: burgenc@earthlink.net (Shawn Burge) Date: Fri, 25 Oct 2002 23:09:18 -0400 Subject: [Mono-list] .NET Framework Message-ID: <000d01c27c9d$13e5eb60$0600a8c0@endo> This is a multi-part message in MIME format. ------=_NextPart_000_000A_01C27C7B.8BB39920 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Will your edition of the .NET Framework support VB.NET (Please say yes = :-) - so I dont have to learn Delphi and Kylix =3DP) ------=_NextPart_000_000A_01C27C7B.8BB39920 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Will your edition of the .NET Framework = support=20 VB.NET (Please say yes :-) - so  I dont have to learn Delphi and = Kylix=20 =3DP)
------=_NextPart_000_000A_01C27C7B.8BB39920-- From torriem@byu.edu Sun Oct 27 03:57:05 2002 From: torriem@byu.edu (Michael Torrie) Date: 26 Oct 2002 21:57:05 -0600 Subject: [Mono-list] CVS code automake fails on RedHat 8.0 Message-ID: <1035691028.14999.3.camel@stargazer> Apparently the version of automake that ships with RedHAt 8.0 is too new for mono or something. When I run autogen.sh, I get (everything else up to that point is the same as on my redhat73 box and seems to work dispite a number of warnings): Running automake --gnu ... configure.in: installing `./install-sh' configure.in: installing `./mkinstalldirs' configure.in: installing `./missing' mono/arch/Makefile.am: installing `./depcomp' configure.in:501: CFLAGS was already defined in condition TRUE, which implies condition PLATFORM_WIN32_TRUE # The mingw math.h has "extern inline" functions that dont appear in libs, so # optimisation is required to actually inline them CFLAGS (User, where = configure.in:501) += { TRUE => @CFLAGS@ } automake: mono/jit/Makefile.am: object `win32-exception.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `codegen-x86.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `emit-x86.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `regset.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `debug.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `debug-stabs.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `debug-dwarf2.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `jit.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `trampoline.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `exception.$(OBJEXT)' created both with libtool and withoutRunning automake --gnu ... configure.in: installing `./install-sh' configure.in: installing `./mkinstalldirs' configure.in: installing `./missing' mono/arch/Makefile.am: installing `./depcomp' configure.in:501: CFLAGS was already defined in condition TRUE, which implies condition PLATFORM_WIN32_TRUE # The mingw math.h has "extern inline" functions that dont appear in libs, so # optimisation is required to actually inline them CFLAGS (User, where = configure.in:501) += { TRUE => @CFLAGS@ } automake: mono/jit/Makefile.am: object `win32-exception.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `codegen-x86.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `emit-x86.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `regset.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `debug.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `debug-stabs.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `debug-dwarf2.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `jit.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `trampoline.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `exception.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `linear-scan.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `helpers.$(OBJEXT)' created both with libtool and without configure.in:501: CFLAGS was already defined in condition TRUE, which implies condition PLATFORM_WIN32_TRUE # The mingw math.h has "extern inline" functions that dont appear in libs, so # optimisation is required to actually inline them CFLAGS (User, where = configure.in:501) += { TRUE => @CFLAGS@ } automake: mono/jit/Makefile.am: object `win32-exception.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `codegen-x86.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `emit-x86.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `regset.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `debug.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `debug-stabs.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `debug-dwarf2.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `jit.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `trampoline.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `exception.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `linear-scan.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `helpers.$(OBJEXT)' created both with libtool and without **Error**: automake failed. automake: mono/jit/Makefile.am: object `linear-scan.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `helpers.$(OBJEXT)' created both with libtool and without configure.in:501: CFLAGS was already defined in condition TRUE, which implies condition PLATFORM_WIN32_TRUE # The mingw math.h has "extern inline" functions that dont appear in libs, so # optimisation is required to actually inline them CFLAGS (User, where = configure.in:501) += { TRUE => @CFLAGS@ } automake: mono/jit/Makefile.am: object `win32-exception.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `codegen-x86.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `emit-x86.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `regset.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `debug.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `debug-stabs.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `debug-dwarf2.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `jit.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `trampoline.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `exception.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `linear-scan.$(OBJEXT)' created both with libtool and without automake: mono/jit/Makefile.am: object `helpers.$(OBJEXT)' created both with libtool and without **Error**: automake failed. How can I build this thing? From danmorg@sc.rr.com Mon Oct 28 15:41:36 2002 From: danmorg@sc.rr.com (Daniel Morgan) Date: Mon, 28 Oct 2002 10:41:36 -0500 Subject: [Mono-list] .NET Framework In-Reply-To: <000d01c27c9d$13e5eb60$0600a8c0@endo> Message-ID: This is a multi-part message in MIME format. ------=_NextPart_000_0028_01C27E6E.9722FC70 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit There is work on Visual Basic.net like support in Mono. Does it work? I do not know. I just know that a Visual Basic.net compiler and runtime has been started. Rafael Teixeira is heading this effort. The vb.net compiler and runtime is written in C#, and is based on mcs (the Mono C# compiler) and runtime. -----Original Message----- From: mono-list-admin@ximian.com [mailto:mono-list-admin@ximian.com]On Behalf Of Shawn Burge Sent: Friday, October 25, 2002 11:09 PM To: mono-list@ximian.com; miguel@ximian.com Subject: [Mono-list] .NET Framework Will your edition of the .NET Framework support VB.NET (Please say yes :-) - so I dont have to learn Delphi and Kylix =P) ------=_NextPart_000_0028_01C27E6E.9722FC70 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
There=20 is work on Visual Basic.net like support in Mono.  Does it = work?  I do=20 not know.  I just know that a Visual Basic.net compiler and runtime = has=20 been started.  Rafael Teixeira is heading this=20 effort.
 
The=20 vb.net compiler and runtime is written in C#, and is based on mcs = (the Mono=20 C# compiler) and runtime.
-----Original Message-----
From: = mono-list-admin@ximian.com=20 [mailto:mono-list-admin@ximian.com]On Behalf Of Shawn=20 Burge
Sent: Friday, October 25, 2002 11:09 PM
To:=20 mono-list@ximian.com; miguel@ximian.com
Subject: [Mono-list] = .NET=20 Framework

Will your edition of the .NET = Framework support=20 VB.NET (Please say yes :-) - so  I dont have to learn Delphi and = Kylix=20 =3DP)
------=_NextPart_000_0028_01C27E6E.9722FC70-- From vargaz@freemail.hu Mon Oct 28 16:14:10 2002 From: vargaz@freemail.hu (Varga Zoltan) Date: Mon, 28 Oct 2002 17:14:10 +0100 (CET) Subject: [Mono-list] CVS code automake fails on RedHat 8.0 In-Reply-To: <1035691028.14999.3.camel@stargazer> Message-ID: Michael Torrie írta: > Apparently the version of automake that ships with RedHAt 8.0 is too new > for mono or something. When I run autogen.sh, I get (everything else up > to that point is the same as on my redhat73 box and seems to work > dispite a number of warnings): > > > Running automake --gnu ... > configure.in: installing `./install-sh' > configure.in: installing `./mkinstalldirs' > configure.in: installing `./missing' > mono/arch/Makefile.am: installing `./depcomp' > configure.in:501: CFLAGS was already defined in condition TRUE, which > implies condition PLATFORM_WIN32_TRUE > # The mingw math.h has "extern inline" functions that dont appear in > libs, so > # optimisation is required to actually inline them > CFLAGS (User, where = configure.in:501) += > { > TRUE => @CFLAGS@ > } > automake: mono/jit/Makefile.am: object `win32-exception.$(OBJEXT)' > created both > with libtool and without > automake: mono/jit/Makefile.am: object `codegen-x86.$(OBJEXT)' created > both with libtool and without > automake: mono/jit/Makefile.am: object `emit-x86.$(OBJEXT)' created both > with libtool and without > automake: mono/jit/Makefile.am: object `regset.$(OBJEXT)' created both > with libtool and without > automake: mono/jit/Makefile.am: object `debug.$(OBJEXT)' created both > with libtool and without > automake: mono/jit/Makefile.am: object `debug-stabs.$(OBJEXT)' created > both with libtool and without > automake: mono/jit/Makefile.am: object `debug-dwarf2.$(OBJEXT)' created > both with libtool and without > automake: mono/jit/Makefile.am: object `jit.$(OBJEXT)' created both with > libtool and without > automake: mono/jit/Makefile.am: object `trampoline.$(OBJEXT)' created > both with > libtool and without > automake: mono/jit/Makefile.am: object `exception.$(OBJEXT)' created > both with libtool and withoutRunning automake --gnu ... > configure.in: installing `./install-sh' > configure.in: installing `./mkinstalldirs' > configure.in: installing `./missing' > mono/arch/Makefile.am: installing `./depcomp' > configure.in:501: CFLAGS was already defined in condition TRUE, which > implies condition PLATFORM_WIN32_TRUE > # The mingw math.h has "extern inline" functions that dont appear in > libs, so > # optimisation is required to actually inline them > CFLAGS (User, where = configure.in:501) += > { > TRUE => @CFLAGS@ > } > automake: mono/jit/Makefile.am: object `win32-exception.$(OBJEXT)' > created both > with libtool and without > automake: mono/jit/Makefile.am: object `codegen-x86.$(OBJEXT)' created > both with libtool and without > automake: mono/jit/Makefile.am: object `emit-x86.$(OBJEXT)' created both > with libtool and without > automake: mono/jit/Makefile.am: object `regset.$(OBJEXT)' created both > with libtool and without > automake: mono/jit/Makefile.am: object `debug.$(OBJEXT)' created both > with libtool and without > automake: mono/jit/Makefile.am: object `debug-stabs.$(OBJEXT)' created > both with libtool and without > automake: mono/jit/Makefile.am: object `debug-dwarf2.$(OBJEXT)' created > both with libtool and without > automake: mono/jit/Makefile.am: object `jit.$(OBJEXT)' created both with > libtool and without > automake: mono/jit/Makefile.am: object `trampoline.$(OBJEXT)' created > both with > libtool and without > automake: mono/jit/Makefile.am: object `exception.$(OBJEXT)' created > both with libtool and without > automake: mono/jit/Makefile.am: object `linear-scan.$(OBJEXT)' created > both with libtool and without > automake: mono/jit/Makefile.am: object `helpers.$(OBJEXT)' created both > with libtool and without > configure.in:501: CFLAGS was already defined in condition TRUE, which > implies condition PLATFORM_WIN32_TRUE > # The mingw math.h has "extern inline" functions that dont appear in > libs, so > # optimisation is required to actually inline them > CFLAGS (User, where = configure.in:501) += > { > TRUE => @CFLAGS@ > } > automake: mono/jit/Makefile.am: object `win32-exception.$(OBJEXT)' > created both > with libtool and without > automake: mono/jit/Makefile.am: object `codegen-x86.$(OBJEXT)' created > both with libtool and without > automake: mono/jit/Makefile.am: object `emit-x86.$(OBJEXT)' created both > with libtool and without > automake: mono/jit/Makefile.am: object `regset.$(OBJEXT)' created both > with libtool and without > automake: mono/jit/Makefile.am: object `debug.$(OBJEXT)' created both > with libtool and without > automake: mono/jit/Makefile.am: object `debug-stabs.$(OBJEXT)' created > both with libtool and without > automake: mono/jit/Makefile.am: object `debug-dwarf2.$(OBJEXT)' created > both with libtool and without > automake: mono/jit/Makefile.am: object `jit.$(OBJEXT)' created both with > libtool and without > automake: mono/jit/Makefile.am: object `trampoline.$(OBJEXT)' created > both with > libtool and without > automake: mono/jit/Makefile.am: object `exception.$(OBJEXT)' created > both with libtool and without > automake: mono/jit/Makefile.am: object `linear-scan.$(OBJEXT)' created > both with libtool and without > automake: mono/jit/Makefile.am: object `helpers.$(OBJEXT)' created both > with libtool and without > **Error**: automake failed. > > automake: mono/jit/Makefile.am: object `linear-scan.$(OBJEXT)' created > both with libtool and without > automake: mono/jit/Makefile.am: object `helpers.$(OBJEXT)' created both > with libtool and without > configure.in:501: CFLAGS was already defined in condition TRUE, which > implies condition PLATFORM_WIN32_TRUE > # The mingw math.h has "extern inline" functions that dont appear in > libs, so > # optimisation is required to actually inline them > CFLAGS (User, where = configure.in:501) += > { > TRUE => @CFLAGS@ > } > automake: mono/jit/Makefile.am: object `win32-exception.$(OBJEXT)' > created both > with libtool and without > automake: mono/jit/Makefile.am: object `codegen-x86.$(OBJEXT)' created > both with libtool and without > automake: mono/jit/Makefile.am: object `emit-x86.$(OBJEXT)' created both > with libtool and without > automake: mono/jit/Makefile.am: object `regset.$(OBJEXT)' created both > with libtool and without > automake: mono/jit/Makefile.am: object `debug.$(OBJEXT)' created both > with libtool and without > automake: mono/jit/Makefile.am: object `debug-stabs.$(OBJEXT)' created > both with libtool and without > automake: mono/jit/Makefile.am: object `debug-dwarf2.$(OBJEXT)' created > both with libtool and without > automake: mono/jit/Makefile.am: object `jit.$(OBJEXT)' created both with > libtool and without > automake: mono/jit/Makefile.am: object `trampoline.$(OBJEXT)' created > both with > libtool and without > automake: mono/jit/Makefile.am: object `exception.$(OBJEXT)' created > both with libtool and without > automake: mono/jit/Makefile.am: object `linear-scan.$(OBJEXT)' created > both with libtool and without > automake: mono/jit/Makefile.am: object `helpers.$(OBJEXT)' created both > with libtool and without > **Error**: automake failed. > > > How can I build this thing? > > > > _______________________________________________ > Mono-list maillist - Mono-list@ximian.com > http://lists.ximian.com/mailman/listinfo/mono-list > > > From vargaz@freemail.hu Mon Oct 28 16:16:13 2002 From: vargaz@freemail.hu (Varga Zoltan) Date: Mon, 28 Oct 2002 17:16:13 +0100 (CET) Subject: [Mono-list] CVS code automake fails on RedHat 8.0 In-Reply-To: <1035691028.14999.3.camel@stargazer> Message-ID: Michael Torrie írta: > Apparently the version of automake that ships with RedHAt 8.0 is too new > for mono or something. When I run autogen.sh, I get (everything else up > to that point is the same as on my redhat73 box and seems to work Hi, That's bug 30033: http://bugzilla.ximian.com/show_bug.cgi?id=30033 Could somebody review/check in the fixes suggested in that bug? sorry for the double post Zoltan From vargaz@freemail.hu Mon Oct 28 18:31:27 2002 From: vargaz@freemail.hu (Varga Zoltan) Date: Mon, 28 Oct 2002 19:31:27 +0100 (CET) Subject: [Mono-list] C# question Message-ID: Hi, I stumbled across the following code in a C# source file: public enum Modifiers { Public = 0x0001, } class Foo { internal Modifiers Modifiers { get { return Modifiers.Public; } } private class Bar { void bar2() { Console.WriteLine (Modifiers.Public); } } } It compiles fine with MS csc, but not with msc. Is the above code invalid or should I file a bug report? thanks Zoltan From DENNISH@Raytek.com Mon Oct 28 18:49:50 2002 From: DENNISH@Raytek.com (Dennis Hayes) Date: Mon, 28 Oct 2002 10:49:50 -0800 Subject: [Mono-list] CE classes and members that are not a subset of the normal .NET, but that are in CE.NET Message-ID: These are all the classes that are needed in addition to functions contained in the full .NET to have CE compliance. I believe this to be a complete list. 40 new classes. (30 SQLServerCE, 3 winformsCE, 6 IR network, 1 text) 21 new members. ( 9 System.IO, 6 System.Drawing, 6 XML) System.Data.SQLServerCE Add 30 new Classes System.Drawing Color Add member FromSysIcv(int Icv); Font Add constructor Font(IntPtr htx); Add member public IntPtr Gethtx(); Graphics Add member public static Graphics FromHow(IntPtr how, bool ffree); Icon Add member public static IntPtr GetHiconFromIcon(Icon icon); Image Add member public static IntPtr GetHowFromImage(Image img); System.IO DirectoryInfo Add member public DateTime CreationTime{get;} Add member public DateTime LastAccessTime{get;} Add member public DateTime LastWriteTime{get;} FileInfo Add member public DateTime CreationTime{get;} Add member public DateTime LastAccessTime{get;} Add member public DateTime LastWriteTime{get;} FileSystemInfo Add member public DateTime CreationTime{get;} Add member public DateTime LastAccessTime{get;} Add member public DateTime LastWriteTime{get;} System.Net Add Class IrDAEndPoint System.Net.Sockets Add Class IrDACharacterSet Add Class IrDAClient Add Class IrDADeviceInfo Add Class IrDAHints Add Class IrDAListner System.Text Add Class MLangCodePageEncoding System.WindowsCE.Forms Add 3 Classes System.Xml XmlConvert Add member public static byte[] FromBinHexString(string s); Add member public static string ToBinHexString(byte [] inArray); System.Xml.Schema XmlSchemaExeption Add member Public XmlSchemaExecption(); Add member Public XmlSchemaExecption(string s); System.Xml.Serialization XmlArrayItemAttribute Add member public bool IsNullableSpecified[get] XmlRootAttribute Add member public bool IsNullableSpecified[get] Dennis From t.fransen@mailned.nl Mon Oct 28 20:06:18 2002 From: t.fransen@mailned.nl (Tom Fransen) Date: Mon, 28 Oct 2002 21:06:18 +0100 Subject: [Mono-list] Threading priority and process priorities Message-ID: Hi all, I wrote a small program that starts a number of threads each with a different priority. StartThread(0,ThreadPriority.Lowest); StartThread(1,ThreadPriority.BelowNormal); StartThread(2,ThreadPriority.Normal); StartThread(3,ThreadPriority.AboveNormal); StartThread(4,ThreadPriority.Highest); When I us the 'ps' command to list all the threads I see that they all have the same priority and nice value. Am I missing something (I'm rather new at using Linux :-) or are the thread priorities not implemented in Mono? In general how are the thread and process priorities from the class library mapped to the Linux process/thread priorities? regards, Tom From jason@379.com Mon Oct 28 21:48:48 2002 From: jason@379.com (J. Perkins) Date: 28 Oct 2002 16:48:48 -0500 Subject: [Mono-list] Bug found: calling virtual func via delegate Message-ID: <1035841728.981.7.camel@imperius.um.us.sbphrd.com> --=-k39KwKuzw7vBesgxJTkw Content-Type: text/plain Content-Transfer-Encoding: 7bit The attached code illustrates the problem. When compiled with csc, it will display "DerivedClass::SomeFunc". When compiled with msc, it displays "BaseClass::SomeFunc". I didn't see this in bugzilla...is it a known issue? Jason 379 --=-k39KwKuzw7vBesgxJTkw Content-Disposition: attachment; filename=delegate_override.cs Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; name=delegate_override.cs; charset=UTF-8 using System; public class BaseClass { delegate void CallbackDelegate(); CallbackDelegate m_callback; public BaseClass() { m_callback =3D new CallbackDelegate(SomeFunc); } =09 public void CallFunc() { m_callback(); } =09 public virtual void SomeFunc() { Console.WriteLine("BaseClass::SomeFunc\n"); } } public class DerivedClass : BaseClass { public override void SomeFunc() { Console.WriteLine("DerivedClass::SomeFunc\n"); } } class AppClass { static void Main() { DerivedClass dc =3D new DerivedClass(); dc.CallFunc(); } } --=-k39KwKuzw7vBesgxJTkw-- From ravi@ximian.com Mon Oct 28 22:55:59 2002 From: ravi@ximian.com (Ravi Pratap M) Date: 28 Oct 2002 16:55:59 -0600 Subject: [Mono-list] Bug found: calling virtual func via delegate In-Reply-To: <1035841728.981.7.camel@imperius.um.us.sbphrd.com> References: <1035841728.981.7.camel@imperius.um.us.sbphrd.com> Message-ID: <1035845761.6996.0.camel@raj.cs.wustl.edu> > The attached code illustrates the problem. When compiled with csc, it > will display "DerivedClass::SomeFunc". When compiled with msc, it > displays "BaseClass::SomeFunc". Hmm, seems like a bug. > I didn't see this in bugzilla...is it a known issue? Probably not - could you please file a bug for us against mcs ? Thanks ! Regards, Ravi From tim@timcoleman.com Tue Oct 29 00:00:56 2002 From: tim@timcoleman.com (Tim Coleman) Date: Mon, 28 Oct 2002 19:00:56 -0500 Subject: [Mono-list] C# question (Alert: Gonzalo) In-Reply-To: References: Message-ID: <20021028190056.A20749@tux.epenguin.org> This looks similar to the issue I was having compiling Mono.Data.TdsClient on Linux with mcs. Gonzalo was looking for a test case. I'm not sure if this meets his requirements or not. On Mon, Oct 28, 2002 at 07:31:27PM +0100, Varga Zoltan wrote: > > Hi, > > I stumbled across the following code in a C# source file: > > public enum Modifiers > { > Public = 0x0001, > } > > class Foo { > > internal Modifiers Modifiers { > get { > return Modifiers.Public; > } > } > > private class Bar { > void bar2() { > Console.WriteLine (Modifiers.Public); > } > } > } > > It compiles fine with MS csc, but not with msc. Is the above > code invalid or should I file a bug report? > > thanks > > Zoltan > > > > > > > _______________________________________________ > Mono-list maillist - Mono-list@ximian.com > http://lists.ximian.com/mailman/listinfo/mono-list -- Tim Coleman [43.43 N 80.45 W] BMath, Honours Combinatorics and Optimization, University of Waterloo Software Developer, Global Services, Open Text Corporation "Under capitalism, man exploits man. Under communism, it's just the opposite." -- J.K. Galbraith From gonzalo@ximian.com Tue Oct 29 01:35:37 2002 From: gonzalo@ximian.com (Gonzalo Paniagua Javier) Date: 29 Oct 2002 02:35:37 +0100 Subject: [Mono-list] C# question (Alert: Gonzalo) In-Reply-To: <20021028190056.A20749@tux.epenguin.org> References: <20021028190056.A20749@tux.epenguin.org> Message-ID: <1035855339.5263.4.camel@lalo2.micasa> El mar, 29-10-2002 a las 01:00, Tim Coleman escribió: > This looks similar to the issue I was having compiling > Mono.Data.TdsClient on Linux with mcs. > > Gonzalo was looking for a test case. I'm not sure if this > meets his requirements or not. I don't think so. Just guessing, but probably mcs give up resolving Modifiers once i finds the one in class Foo (that does not fit) and it should continue trying to solve it outside Foo... -Gonzalo From eriksl2@yahoo.com Tue Oct 29 02:37:58 2002 From: eriksl2@yahoo.com (Erik C) Date: Mon, 28 Oct 2002 18:37:58 -0800 (PST) Subject: [Mono-list] Threads max out at 512?!? Message-ID: <20021029023758.91205.qmail@web13408.mail.yahoo.com> hey all just a warning...I'm a total newbie to C#/mono/threads. I'm trying to write this a stupid port scanner (it is very badly written BTW) and mono allways dies when I try to make any more than 512 threads...is this normal, a mono issue, or a platform issue? (it works in VS.NET on win2k)...is this the correct list to be writting to? Is there an IRC room or a message board that I should be asking this in instead? Setup: mono .16, Redhat 7.3 my compile line: mcs -checked Scanner.cs ScanObject.cs -t:exe -o SharpScan.exe my error: http://www.cise.ufl.edu/~ec0/project/SharpScan1.0/error.txt my horrible source code: http://www.cise.ufl.edu/~ec0/project/SharpScan1.0/ TIA to anyone that can help, -Erik- p.s. some of the source is ripped from tutorials... __________________________________________________ Do you Yahoo!? HotJobs - Search new jobs daily now http://hotjobs.yahoo.com/ From dick@ximian.com Tue Oct 29 10:00:20 2002 From: dick@ximian.com (Dick Porter) Date: 29 Oct 2002 10:00:20 +0000 Subject: [Mono-list] Threading priority and process priorities In-Reply-To: References: Message-ID: <1035885619.28155.52.camel@hagbard.apathetic.discordia.org.uk> On Mon, 2002-10-28 at 20:06, Tom Fransen wrote: > Am I missing something (I'm rather new at using Linux :-) or are > the thread priorities not implemented in Mono? Thread priorities are not implemented in Mono. If you need them to be implemented you have a couple of choices: 1) File a bug (http://bugzilla.ximian.com) and wait for me to get around to it. or 2) Implement it yourself and send me a patch. - Dick From dick@ximian.com Tue Oct 29 10:04:29 2002 From: dick@ximian.com (Dick Porter) Date: 29 Oct 2002 10:04:29 +0000 Subject: [Mono-list] Threads max out at 512?!? In-Reply-To: <20021029023758.91205.qmail@web13408.mail.yahoo.com> References: <20021029023758.91205.qmail@web13408.mail.yahoo.com> Message-ID: <1035885868.12728.57.camel@hagbard.apathetic.discordia.org.uk> On Tue, 2002-10-29 at 02:37, Erik C wrote: > hey all just a warning...I'm a total newbie to > C#/mono/threads. I'm trying to write this a stupid > port scanner (it is very badly written BTW) and mono > allways dies when I try to make any more than 512 > threads...is this normal, a mono issue, or a platform > issue? It's a mono issue. There is a limit on the number of threads you can have in a process on linux (its 1024 i think.) The problem you're seeing though is that it's running out of handle slots. We used to get up to a thousand or so threads before this happened, so I don't know why it's lower now. It's possible to increase the number of handle slots available (and I'm currently thinking of making it increase dynamically) but you will still run into the pthreads limit. - Dick From lupus@ximian.com Tue Oct 29 10:57:24 2002 From: lupus@ximian.com (Paolo Molaro) Date: Tue, 29 Oct 2002 11:57:24 +0100 Subject: [Mono-list] Threads max out at 512?!? In-Reply-To: <1035885868.12728.57.camel@hagbard.apathetic.discordia.org.uk> References: <20021029023758.91205.qmail@web13408.mail.yahoo.com> <1035885868.12728.57.camel@hagbard.apathetic.discordia.org.uk> Message-ID: <20021029105724.GA1084@debian.org> On 10/29/02 Dick Porter wrote: > It's a mono issue. There is a limit on the number of threads you can > have in a process on linux (its 1024 i think.) The problem you're > seeing though is that it's running out of handle slots. We used to get > up to a thousand or so threads before this happened, so I don't know why > it's lower now. > > It's possible to increase the number of handle slots available (and I'm > currently thinking of making it increase dynamically) but you will still > run into the pthreads limit. The 1024 process limit in linux is a old limit (probably in kernel version 2.0 or 2.2). Even then it could be increased by changing a #define, IIRC. With the current libpthread/kernel the limit is more like 8196 threads per process and with linux 2.6 and glibc 2.3 there won't be any hard limit. So, we need to not limit artificially the number of threads allowed (and we need to check a C# program gets the proper notification when thread creation fails). lupus -- ----------------------------------------------------------------- lupus@debian.org debian/rules lupus@ximian.com Monkeys do it better From vjalencas@planeta-actimedia.es Tue Oct 29 11:40:16 2002 From: vjalencas@planeta-actimedia.es (=?iso-8859-1?Q?V=EDctor_Jalencas?=) Date: Tue, 29 Oct 2002 12:40:16 +0100 Subject: [Mono-list] CSAM, new initiative announcement Message-ID: <944348B059EAD51181BC00065B19B18A28DB51@CARLS> So, what happened to the project? the domain seems off the face of the net for a few weeks now... Victor -----Mensaje original----- De: Christophe VG [mailto:mono@baselabs.org] Enviado el: lunes, 15 de abril de 2002 17:02 Para: mono-list@ximian.com Asunto: [Mono-list] CSAM, new initiative announcement Today mono.baselabs.org is happy to "officially" announce its new initiative: CSAM, the C Sharp Archived Modules. A few pages were already online for a few days, but today we have uploaded the initial control scripts to the webserver and we now are ready to accept authors and their modules. CSAM: the C Sharp Archived Modules ... _______________________________________________ Mono-list maillist - Mono-list@ximian.com http://lists.ximian.com/mailman/listinfo/mono-list From vargaz@freemail.hu Tue Oct 29 12:52:19 2002 From: vargaz@freemail.hu (Varga Zoltan) Date: Tue, 29 Oct 2002 13:52:19 +0100 (CET) Subject: [Mono-list] whitespace handling in Enum::Parse() Message-ID: --0-1804289383-1035895939=:43383 Content-Type: TEXT/PLAIN; CHARSET=ISO-8859-2 Hi, The current version of Enum:Parse() can't parse an input string with whitespace in it, like "foo, bar". According to the MSDN docs, it should. The attached patch fixes this and also adds some tests for this behavior. Can I check it in? bye Zoltan --0-1804289383-1035895939=:43383 Content-Type: APPLICATION/octet-stream; name="parse.patch" Content-Disposition: attachment; filename="parse.patch" ? mcs/class/corlib/library-deps.stamp ? mcs/class/corlib/uj ? mcs/class/corlib/Test/.gdb_history ? mcs/class/corlib/Test/library-deps.stamp ? mcs/class/corlib/Test/run_test Index: mcs/class/corlib//System/ChangeLog =================================================================== RCS file: /cvs/public/mcs/class/corlib/System/ChangeLog,v retrieving revision 1.418 diff -u -3 -p -u -r1.418 ChangeLog --- mcs/class/corlib//System/ChangeLog 24 Oct 2002 11:42:40 -0000 1.418 +++ mcs/class/corlib//System/ChangeLog 29 Oct 2002 12:21:52 -0000 @@ -1,3 +1,7 @@ +2002-10-29 Zoltan Varga + + * Enum.cs: Added support for whitespaces in Enum:Parse(). + 2002-10-24 Gonzalo Paniagua Javier * Environment.cs: fixed StackTrace property. Index: mcs/class/corlib//System/Enum.cs =================================================================== RCS file: /cvs/public/mcs/class/corlib/System/Enum.cs,v retrieving revision 1.34 diff -u -3 -p -u -r1.34 Enum.cs --- mcs/class/corlib//System/Enum.cs 15 Oct 2002 15:52:44 -0000 1.34 +++ mcs/class/corlib//System/Enum.cs 29 Oct 2002 12:21:56 -0000 @@ -241,6 +241,8 @@ namespace System { long retVal = 0; string[] names = value.Split(new char[] {','}); + for (i = 0; i < names.Length; ++i) + names [i] = names [i].Trim (); TypeCode typeCode = ((Enum) info.values.GetValue (0)).GetTypeCode (); foreach (string name in names) { bool found = false; Index: mcs/class/corlib//Test/System/ChangeLog =================================================================== RCS file: /cvs/public/mcs/class/corlib/Test/System/ChangeLog,v retrieving revision 1.115 diff -u -3 -p -u -r1.115 ChangeLog --- mcs/class/corlib//Test/System/ChangeLog 15 Oct 2002 15:23:13 -0000 1.115 +++ mcs/class/corlib//Test/System/ChangeLog 29 Oct 2002 12:22:20 -0000 @@ -1,3 +1,7 @@ +2002-10-29 Zoltan Varga + + * EnumTest.cs: Added tests for whitespaces in Enum:Parse(). + 2002-10-16 Nick Drochak * EnumTest.cs: Find out which Assert is causing the error on mono. Index: mcs/class/corlib//Test/System/EnumTest.cs =================================================================== RCS file: /cvs/public/mcs/class/corlib/Test/System/EnumTest.cs,v retrieving revision 1.10 diff -u -3 -p -u -r1.10 EnumTest.cs --- mcs/class/corlib//Test/System/EnumTest.cs 15 Oct 2002 15:23:13 -0000 1.10 +++ mcs/class/corlib//Test/System/EnumTest.cs 29 Oct 2002 12:22:29 -0000 @@ -541,6 +541,10 @@ public class EnumTest : TestCase TestingEnum.Test, Enum.Parse(t1.GetType(), "Test")); + AssertEquals("parse last enum with whitespace", + TestingEnum.Test, + Enum.Parse(t1.GetType(), " \n\nTest\t")); + AssertEquals("parse bitwise-or enum", TestingEnum.Is, Enum.Parse(t1.GetType(), "This,Is")); @@ -550,6 +554,10 @@ public class EnumTest : TestCase AssertEquals("parse bitwise-or enum", TestingEnum.Test, Enum.Parse(t1.GetType(), "This,Is,A")); + + AssertEquals("parse bitwise-or enum with whitespace", + TestingEnum.Test, + Enum.Parse(t1.GetType(), " \n\tThis \t\n, Is,A \n")); } } public void TestParse2() { @@ -649,6 +657,10 @@ public class EnumTest : TestCase TestingEnum.Test, Enum.Parse(t1.GetType(), "test", true)); + AssertEquals("parse last enum with whitespace", + TestingEnum.Test, + Enum.Parse(t1.GetType(), " \n\ntest\t", true)); + AssertEquals("parse bitwise-or enum", TestingEnum.Is, Enum.Parse(t1.GetType(), "This,is", true)); @@ -658,6 +670,11 @@ public class EnumTest : TestCase AssertEquals("parse bitwise-or enum", TestingEnum.Test, Enum.Parse(t1.GetType(), "This,is,A", true)); + + AssertEquals("parse bitwise-or enum with whitespace", + TestingEnum.Test, + Enum.Parse(t1.GetType(), " \n\tThis \t\n, is,a \n", + true)); } } --0-1804289383-1035895939=:43383-- From ab11112@hotmail.com Tue Oct 29 11:34:52 2002 From: ab11112@hotmail.com (a b11112) Date: Tue, 29 Oct 2002 12:34:52 +0100 Subject: [Mono-list] NUnit does not detect Fail() in other threads? Message-ID: Is it just me or does NUnit fail to detect assertion failures in other threads? Running the below test, NUnit reports no errors. I think it's not a problem with the test itself, but correct me if it is. This behavior would agree with what I understand from the NUnit sources: an assertion is handled as an exception and caught at the top, so from other threads the exception disappears "ins Blaue hinein". This was reported about a month ago (bug 618502), but no reaction yet. Could require major changes to NUnit's internals. As far as I can tell from the API docs, there is no way to catch that exception when the child exits. Suggested workaround is to put e.g. "thread_reached_end = true" just before the child's regular return statement and assert that in the parent after Join(). -------------------- using NUnit.Framework; using System; using System.Threading; namespace MyTests.Foobar { [TestFixture] public class FoobarTest { private static bool thread_entered; private static void otherthread() { thread_entered = true; Assertion.Fail("This should fail, but does not."); } [Test] public void Test1() { Thread t; ThreadStart ts; thread_entered = false; ts = new ThreadStart(otherthread); t = new Thread(ts); t.Start(); t.Join(); Assertion.AssertEquals("thread should have been entered", thread_entered, true); } } } _________________________________________________________________ Je kan ook Messenger berichten op je mobiele telefoon ontvangen! http://www.msn.nl/services/hotmailsmsv271551/messenger/ From girish@stylusinc.net Tue Oct 29 14:08:39 2002 From: girish@stylusinc.net (Girish Warrier) Date: Tue, 29 Oct 2002 19:38:39 +0530 Subject: [Mono-list] Few questions to answer from astounding mono expert... Message-ID: <010301c27f54$aec6cdc0$0b0aa8c0@stylusinc.com> This is a multi-part message in MIME format. ------=_NextPart_000_0100_01C27F82.C7F58E70 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hi, Ours is a development company having wide range of projects developed in = asp and php. We are in the lookout for expansion of the latest technology associated = with mono. It will be kind of you if you would highlight on these questions:- =20 1. Can we use it for our development work in future with complete = compatibility with .NET Ans.=20 2. Are there tools etc. that help us do our development in Mono as = easily as Visual Studio on windows Ans.=20 3. Is there any incompatibility or concerns in using Mono as a = development platform. Ans.=20 Regards, Girish Warrier Developer Web Solution, Customer Care Stylus Systems, Bangalore - 560043 Ph: 91-80-5455070 email: girish@stylusinc.net ------=_NextPart_000_0100_01C27F82.C7F58E70 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Hi,
 
Ours=20 is a development company having wide range of projects developed in asp = and=20 php.
We are in = the lookout=20 for expansion of the latest technology associated with = mono.
 
It will be = kind of you=20 if you would highlight on these questions:-
 
1. Can=20 we use it for our development work in future with complete compatibility = with=20 .NET
Ans.=20
 
2. Are there tools etc. that help = us do our=20 development in Mono as easily as Visual Studio on = windows
Ans.=20
 
3. Is=20 there any incompatibility or concerns in using Mono as a development=20 platform.
Ans.=20
 
Regards,
Girish Warrier
Developer Web Solution, = Customer Care
Stylus=20 Systems,
Bangalore - 560043
Ph: 91-80-5455070

email: girish@stylusinc.net
 
 
------=_NextPart_000_0100_01C27F82.C7F58E70-- From Ben@roadrunner.uk.com Tue Oct 29 16:44:00 2002 From: Ben@roadrunner.uk.com (Ben Clewett) Date: Tue, 29 Oct 2002 16:44:00 +0000 Subject: [Mono-list] Newbe with really stupid question... Message-ID: <3DBEBAD0.7060504@roadrunner.uk.com> I have made an app which doen't run. No obvious reason, well not to me. I compiled it on Windows as 'Release' to make the code. FTP'd it to my linux box, and simply typed: mono prog.exe And got back: ** (prog.exe:5219): WARNING **: Could not find assembly Microsoft.VisualBasic Can not open image prog.exe Please feal free to comment on my stupidity, or otherwise let me know how to make my app run... Thanks, --------------------------------------------------------------------- Ben Clewett, B.Clewett@roadrunner.uk.com From everaldo.canuto@bol.com.br Tue Oct 29 16:55:20 2002 From: everaldo.canuto@bol.com.br (Everaldo Canuto) Date: Tue, 29 Oct 2002 13:55:20 -0300 Subject: [Mono-list] Config file class Message-ID: <3DBEBD78.70603@bol.com.br> Hi, Theres a class to read and write config files (.ini style files) on Mono? If dont existis, what is the better namespace and nameclass to use for this class? Thanks, Everaldo Canuto From Alex.Villazon@cui.unige.ch Tue Oct 29 15:12:10 2002 From: Alex.Villazon@cui.unige.ch (Alex.Villazon@cui.unige.ch) Date: Tue, 29 Oct 2002 16:12:10 +0100 Subject: [Mono-list] Disassembler/bytecode manipulation Message-ID: <1035904330.3dbea54a43480@webmail.unige.ch> Hi all, Is there a disassembler tool as a futur project (or available)? In fact, I'm interested in the manipulation of C# bytecode using C# code. I worked with those kinds of tools in Java (jakarta.apache.org/bcel), and I was wondering if it was possible to manipulate C# bytecode at load-time as in Java. I found a tool included in MS .Net SDK (ILDASM.exe)... Is there an equivalent tool planned in Mono? I'm not familiar with C#/Mono, so I don't know if it is possible to modify C# bytecode at load-time. (Is there a "loader" class accessible to the user?) The idea is to implement a tool written in C#, which is capable to introduce a set of instructions in a compiled application (which does not modify the behavior of the application), and to generate a new executable that can be executed normally (the additional instructions are typically used for accounting). We have implemented such kind of tools in Java (see http://abone.unige.ch) and we are interested to see if our ideas can be applied to C#. Some ideas? Thanks Alex From jaime@geneura.ugr.es Tue Oct 29 16:43:38 2002 From: jaime@geneura.ugr.es (Jaime Anguiano Olarra) Date: 29 Oct 2002 17:43:38 +0100 Subject: [Mono-list] Re: Few questions to answer from astounding mono expert... In-Reply-To: <011c01c27f5b$08a4ba40$0b0aa8c0@stylusinc.com> References: <011c01c27f5b$08a4ba40$0b0aa8c0@stylusinc.com> Message-ID: <1035909818.481.24.camel@monodis> --=-RmOpeOkPuzjDI8Rd30g1 Content-Type: text/plain Content-Transfer-Encoding: quoted-printable Hi Girish, I think all that information is currently in the FAQ. I don't know if you have seen it before but I think it will be VERY helpful in order to understand Mono better. http://www.go-mono.org/faq Normally=20 short answers are not good ones. I have mine but I think Miguel, Paolo, Duncan, Dietmar and the rest of the real Mono team are the ones that should answer. No matter what they say I am sure you will likely start using Mono technologies. Greets, Jaime. On Tue, 2002-10-29 at 15:54, Girish Warrier wrote: > Hi Jaime, >=20 > I am Girish Warrier from Stylus Systems, India. > Ours is a web development company providing web solutions on areas like a= sp and php. > We are in the lookout for expansion of the latest technology associated w= ith mono. >=20 > I came across one of your article "Running Mono" from google and I found = it informative. >=20 > And it will be really kind of you if you could highlight on the questions= that are of primary importance for us:- > =20 > 1. Can we use it for our development work in future with complete compati= bility with .NET > Ans.=20 >=20 > 2. Are there tools etc. that help us do our development in Mono as easily= as Visual Studio on windows > Ans.=20 >=20 > 3. Is there any incompatibility or concerns in using Mono as a developmen= t platform. > Ans.=20 >=20 > Thanking you, > Regards, > Girish Warrier > Developer Web Solution, Customer Care > Stylus Systems, > Bangalore - 560043 > Ph: 91-80-5455070 > email: girish@stylusinc.net >=20 >=20 --=20 // http://geneura.ugr.es/~jaime/csharp/ -- A Free Tutorial on C# using Mono. // http://geneura.ugr.es -- The Geneura Team // http://www.go-mono.com -- The Mono Project --=-RmOpeOkPuzjDI8Rd30g1 Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.1 (GNU/Linux) iD8DBQA9vrq60ZuGtECkr6cRAljAAJ9qI2czoCykkU7c1zuPVJEF+UV8qwCgtBmT ckvlKDY5RzIz5vQ3+iAqqts= =C5XD -----END PGP SIGNATURE----- --=-RmOpeOkPuzjDI8Rd30g1-- From jonpryor@vt.edu Tue Oct 29 17:13:24 2002 From: jonpryor@vt.edu (Jonathan Pryor) Date: 29 Oct 2002 12:13:24 -0500 Subject: [Mono-list] Newbe with really stupid question... In-Reply-To: <3DBEBAD0.7060504@roadrunner.uk.com> References: <3DBEBAD0.7060504@roadrunner.uk.com> Message-ID: <1035911605.1174.9.camel@melchior.magi> Simple guess: you wrote you app in Visual Basic.NET. By default, VB.NET requires an additional dll to run (Microsoft.VisualBasic.dll). That dll is not fully implemented on Mono at this point in time, preventing your application from running. You have two choices: Wait until Mono implements Microsoft.VisualBasic.dll, or remove the Microsoft.VisualBasic assembly from your Visual Studio project and recompile the project. If you're using any of the functions from Microsoft.VisualBasic.dll, you'll get compiler errors which will need to be fixed. Once your code compiles without using Microsoft.VisualBasic.dll, it should be able to run under Mono. - Jon On Tue, 2002-10-29 at 11:44, Ben Clewett wrote: > > I have made an app which doen't run. No obvious reason, well not to me. > > I compiled it on Windows as 'Release' to make the code. > > FTP'd it to my linux box, and simply typed: > > mono prog.exe > > And got back: > > ** (prog.exe:5219): WARNING **: Could not find assembly > Microsoft.VisualBasic > Can not open image prog.exe > > Please feal free to comment on my stupidity, or otherwise let me know > how to make my app run... > > Thanks, > > --------------------------------------------------------------------- > Ben Clewett, B.Clewett@roadrunner.uk.com > > > _______________________________________________ > Mono-list maillist - Mono-list@ximian.com > http://lists.ximian.com/mailman/listinfo/mono-list From ggb@tid.es Tue Oct 29 19:25:55 2002 From: ggb@tid.es (gustavo) Date: 29 Oct 2002 20:25:55 +0100 Subject: [Mono-list] Building Tests In-Reply-To: <20021029023758.91205.qmail@web13408.mail.yahoo.com> References: <20021029023758.91205.qmail@web13408.mail.yahoo.com> Message-ID: <1035919602.2190.1.camel@cable70a028.usuarios.retecal.es> How can i build and pass the class library nunit tests? Best regards. G. From gonzalo@ximian.com Tue Oct 29 20:43:10 2002 From: gonzalo@ximian.com (Gonzalo Paniagua Javier) Date: 29 Oct 2002 21:43:10 +0100 Subject: [Mono-list] Building Tests In-Reply-To: <1035919602.2190.1.camel@cable70a028.usuarios.retecal.es> References: <20021029023758.91205.qmail@web13408.mail.yahoo.com> <1035919602.2190.1.camel@cable70a028.usuarios.retecal.es> Message-ID: <1035924193.671.66.camel@lalo2.micasa> El mar, 29-10-2002 a las 20:25, gustavo escribió: > How can i build and pass the class library nunit tests? > On windows (using MS runtime), just 'make test'. On unix, 'make -f makefile.gnu test'. -Gonzalo From duncan@ximian.com Tue Oct 29 13:49:29 2002 From: duncan@ximian.com (Duncan Mak) Date: 29 Oct 2002 08:49:29 -0500 Subject: [Mono-list] Patch for Makefile.am in mono/mono/jit Message-ID: <1035899368.25500.6.camel@localhost.localdomain> Hey guys, I have this patch in my tree, I'm wondering if I used it when I made the 0.16 release and then forgot to commit it afterward. Is it okay to commit now? Index: mono/mono/jit/Makefile.am =================================================================== RCS file: /cvs/public/mono/mono/jit/Makefile.am,v retrieving revision 1.40 diff -u -r1.40 Makefile.am --- mono/mono/jit/Makefile.am 29 Oct 2002 12:42:09 -0000 1.40 +++ mono/mono/jit/Makefile.am 29 Oct 2002 13:50:53 -0000 @@ -5,6 +5,8 @@ libmono_la_LDFLAGS=-Wl,-version-script=$(srcdir)/ldscript +mono_CFLAGS = $(AM_CFLAGS) + if X86 if PLATFORM_WIN32 export HOST_CC -- Duncan Mak From miguel@ximian.com Wed Oct 30 03:51:37 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 29 Oct 2002 22:51:37 -0500 Subject: [Mono-list] Disassembler/bytecode manipulation In-Reply-To: <1035904330.3dbea54a43480@webmail.unige.ch> References: <1035904330.3dbea54a43480@webmail.unige.ch> Message-ID: <1035949897.5074.414.camel@erandi.boston.ximian.com> > I found a tool included in MS .Net SDK (ILDASM.exe)... Is there an > equivalent tool planned in Mono? monodis. > > I'm not familiar with C#/Mono, so I don't know if it is possible to modify > C# bytecode at load-time. (Is there a "loader" class accessible to the user?) You can generate your own code on the flight using system.reflection.emit > The idea is to implement a tool written in C#, which is capable to introduce > a set of instructions in a compiled application (which does not modify the > behavior of the application), and to generate a new executable that can be > executed normally (the additional instructions are typically used for > accounting). Then you want to look into Mono.PEToolkit. Miguel From miguel@ximian.com Wed Oct 30 03:52:13 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 29 Oct 2002 22:52:13 -0500 Subject: [Mono-list] C# question In-Reply-To: References: Message-ID: <1035949933.5068.416.camel@erandi.boston.ximian.com> Hello Zoltan, > It compiles fine with MS csc, but not with msc. Is the above > code invalid or should I file a bug report? It is most likely a bug in MCS, please file a bug report, I will try to fix it soon. From miguel@ximian.com Wed Oct 30 03:54:15 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 29 Oct 2002 22:54:15 -0500 Subject: [Mono-list] Possible bug with casting struct pointers In-Reply-To: <200210280243.06864.alan@alanz.com> References: <200210280243.06864.alan@alanz.com> Message-ID: <1035950054.5074.420.camel@erandi.boston.ximian.com> Hello, > Thanks Daniel for that tip, got it built and experience the same compile error > from mcs and mono source I got just a couple of hours ago... It just seems > like quite a fundamental feature so I dunno if I'm just doing something > wrong, but it seems valid to me. The code is compiled fine if the cast and > struct replaced with something like an int*. So speculating on the bug - is > it only checking internal types??? This bug is now fixed. There was a bug in the grammar. miguel From Ben@roadrunner.uk.com Wed Oct 30 09:37:10 2002 From: Ben@roadrunner.uk.com (Ben Clewett) Date: Wed, 30 Oct 2002 09:37:10 +0000 Subject: [Mono-list] MS.VB.DLL Message-ID: <3DBFA846.90600@roadrunner.uk.com> Dear Mono, I am trying to get a 'Hello World' to work under VB.NET. I can get the same code to work from C# perfectly. In both cases using MS VS.NET for full code generation. However, anything I do in VB complaines I need the DLL: 'Microsoft.VisualBasic.DLL'. I have no reference to this name space, and can't find any system reference. The excelent Mono FAQ states clearly that vb.net code does work, yet I can't make it do so. If anybody has got some vb.net to run under Mono, I would be interested in hearing from them, and knowing how they did it. Ben -- --------------------------------------------------------------------- Ben Clewett, B.Clewett@roadrunner.uk.com From groith@tcrz.net Wed Oct 30 09:47:43 2002 From: groith@tcrz.net (Guenther Roith) Date: Wed, 30 Oct 2002 10:47:43 +0100 Subject: [Mono-list] RE: MS.VB.DLL Message-ID: <000b01c27ff9$65bd8a60$0200a8c0@roithw2k> Hi! Maybe, it doesn't compile by default. Download and copy this to /usr/lib, or wherever you've put the mono libraries. http://www.sport-huettn.de/Microsoft.VisualBasic.dll Johannes From groith@tcrz.net Wed Oct 30 09:57:25 2002 From: groith@tcrz.net (Guenther Roith) Date: Wed, 30 Oct 2002 10:57:25 +0100 Subject: [Mono-list] DirectX 9 <--> OpenGL Message-ID: <000b01c27ffa$c0aadd50$0200a8c0@roithw2k> Hi! Having no experience with 3D APIs and related things, I would like to know, if it is possible to somehow wrap the DirectX 9 API to OpenGL? MS will include DirectX 9 C#-bindings in the 2.0 Framework, and mono will have OpenGL-bindings. DirectX is not only used for games, but also for sound output, or advanced graphic applications, with 3D effects. Johannes From Ben@roadrunner.uk.com Wed Oct 30 10:10:16 2002 From: Ben@roadrunner.uk.com (Ben Clewett) Date: Wed, 30 Oct 2002 10:10:16 +0000 Subject: [Mono-list] Re: Re: MS.VB.DLL, It Works!! In-Reply-To: <000b01c27ff9$65bd8a60$0200a8c0@roithw2k> References: <000b01c27ff9$65bd8a60$0200a8c0@roithw2k> Message-ID: <3DBFB008.6030607@roadrunner.uk.com> Thanks Guenther, it works. Great!! May I ask why when yesterday I downloaded the mono .RPM, this was not included? Is this a beta module, and should I therefore be aware of anthing? Guenther Roith wrote: > Hi! > > Maybe, it doesn't compile by default. Download and copy this to > /usr/lib, or > wherever you've put the mono libraries. > > http://www.sport-huettn.de/Microsoft.VisualBasic.dll > > Johannes -- --------------------------------------------------------------------- Ben Clewett, B.Clewett@roadrunner.uk.com From mark@thedumbterminal.co.uk Tue Oct 29 19:12:26 2002 From: mark@thedumbterminal.co.uk (Mark Terry) Date: Tue, 29 Oct 2002 19:12:26 +0000 Subject: [Mono-list] Setup question Message-ID: <200210291854.SAA23183@www.smartdecisiondotnet.ltd.uk> All, I would like to know if it is possible to have mono working with apache2 on a i386 linux platform, currently i am running java servlets and, php. I am new to mono, as i have only checked out the site today. i would like to provide .net to our customers without getting in a MS server. Thanks in advance, Mark -- -------------------------------- http://www.thedumbterminal.co.uk From tux.slave@gmx.at Tue Oct 29 22:13:01 2002 From: tux.slave@gmx.at (ruch) Date: Tue, 29 Oct 2002 23:13:01 +0100 Subject: [Mono-list] gtk# Message-ID: <200210292213.g9TMDG328477@trna.ximian.com> hello everybody... i have some problems to set up the gtk# on my system,...mono is running excellent...but when i try to compile the helloworld.cs from the gtk# sample directory( # mcs HelloWorld.cs) the compiler allwas tells me: HelloWorld.cs(26) error CS0246: Cannot find type `DeleteEventArgs' Compilation failed: 1 error(s), 0 warnings and i do not know what the problem is... have i to configure a conf file manually with the right path? thanx a lot... chris From alex00james@adelphia.net Tue Oct 29 21:06:01 2002 From: alex00james@adelphia.net (Alex James) Date: Tue, 29 Oct 2002 16:06:01 -0500 Subject: [Mono-list] mcs compile error Message-ID: <000501c27f8e$fd399c50$b201a8c0@winbooklew> I'm getting this error, does anybody know why? I'm using cgywin, with the downloadable script to build mono. cp ../../mcs/mcs/mcs.exe . cp ../../mcs/monoresgen/monoresgen.exe . cp: cannot stat `../../mcs/monoresgen/monoresgen.exe': No such file or directory make[2]: *** [mcs.exe] Error 1 make[2]: Leaving directory `/home/alex/p/mono/runtime' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/home/alex/p/mono' make: *** [all-recursive-am] Error 2 Thanks, alex From simon@psionics.demon.co.uk Wed Oct 30 11:39:29 2002 From: simon@psionics.demon.co.uk (Simon Waite) Date: Wed, 30 Oct 2002 11:39:29 -0000 Subject: [Mono-list] in the "news" today Message-ID: <01a201c28009$027617f0$fa01010a@lan.doosh.net> http://www.theregister.co.uk/content/4/27839.html Now this *is* the Reg we're talking about, so I'm not sure of how accurate it is. -S From Ben@roadrunner.uk.com Wed Oct 30 12:59:02 2002 From: Ben@roadrunner.uk.com (Ben Clewett) Date: Wed, 30 Oct 2002 12:59:02 +0000 Subject: [Mono-list] System.Xml.XmlTextReader Bug Message-ID: <3DBFD796.5000700@roadrunner.uk.com> Dear Mono, There is a terminal inconsistency between the way the System.Xml.XmlTextReader.Read() functions on a Network Stream, between Mono and MS. On the site http://go-mono.com, I can't see a method of reporting bugs. The list of non-implemented methods makes no reference of this problem, and pressing CRTL-Click on the class takes me to a blank page.... Can somebody let me know the correct method of reporting bugs please??? Ben --------------------------------------------------------------------- Ben Clewett, B.Clewett@roadrunner.uk.com From Piyush.Garyali@honeywell.com Wed Oct 30 09:02:54 2002 From: Piyush.Garyali@honeywell.com (Piyush, Garyali (IE10)) Date: Wed, 30 Oct 2002 03:02:54 -0600 Subject: [Mono-list] how is the compiler / class libraries compiled over Linux? Message-ID: Hi, I had a doubt: In case of Cygwin we use the .NET Framework's 'csc' to build the 'mcs' and then 'mcs' is used to build the class libraries. In case of Linux we don't have the .NET Framework, so how does the compiler [mcs] get built?? [as it is purely is C#] Thx in adv, ~pg From pokey@linuxmail.org Wed Oct 30 13:35:44 2002 From: pokey@linuxmail.org (Pokey the Penguin) Date: 30 Oct 2002 13:35:44 +0000 Subject: [Mono-list] how is the compiler / class libraries compiled over Linux? In-Reply-To: References: Message-ID: <1035984944.1122.4.camel@star> On Wed, 2002-10-30 at 09:02, Piyush, Garyali (IE10) wrote: > In case of Cygwin we use the .NET Framework's 'csc' to build the 'mcs' and > then 'mcs' is used to build the class libraries. > > In case of Linux we don't have the .NET Framework, so how does the compiler > [mcs] get built?? [as it is purely is C#] You bootstrap using a version of Mono compiled somewhere else. If you know someone who has a working Mono setup, ask them to do a make -f makefile.gnu dist, which will compile and create a 'monocharge' tarball, or just use the files provided with an official Mono release. -- .---. | o_o | | \_/ | // \ \ penguins (| mono | ) do it best /'\_ _/`\ \___)==(___/ From jmallett@FreeBSD.ORG Wed Oct 30 13:39:15 2002 From: jmallett@FreeBSD.ORG (Juli Mallett) Date: Wed, 30 Oct 2002 05:39:15 -0800 Subject: [Mono-list] how is the compiler / class libraries compiled over Linux? In-Reply-To: ; from Piyush.Garyali@honeywell.com on Wed, Oct 30, 2002 at 03:02:54AM -0600 References: Message-ID: <20021030053915.B2565@FreeBSD.org> * De: "Piyush, Garyali (IE10)" [ Data: 2002-10-30 ] [ Subjecte: [Mono-list] how is the compiler / class libraries compiled over Linux? ] > > In case of Linux we don't have the .NET Framework, so how does the compiler > [mcs] get built?? [as it is purely is C#] > Well, we can run CIL, you see, so as MCS is a CIL executable, it can be bootstrapped using a binary-only version of itself. The releases and snapshots include an mcs.exe for this purpose. -- Juli Mallett | FreeBSD: The Power To Serve Will break world for fulltime employment. | finger jmallett@FreeBSD.org http://people.FreeBSD.org/~jmallett/ | Support my FreeBSD hacking! From gonzalo@ximian.com Wed Oct 30 14:01:21 2002 From: gonzalo@ximian.com (Gonzalo Paniagua Javier) Date: 30 Oct 2002 15:01:21 +0100 Subject: [Mono-list] System.Xml.XmlTextReader Bug In-Reply-To: <3DBFD796.5000700@roadrunner.uk.com> References: <3DBFD796.5000700@roadrunner.uk.com> Message-ID: <1035986482.756.4.camel@lalo2.micasa> El mié, 30-10-2002 a las 13:59, Ben Clewett escribió: > > On the site http://go-mono.com, I can't see a method of reporting bugs. > The list of non-implemented methods makes no reference of this > problem, and pressing CRTL-Click on the class takes me to a blank page.... > > Can somebody let me know the correct method of reporting bugs please??? http://www.go-mono.com/contributing.html (see "Bug reporting") -Gonzalo From pluto@tipic.com Wed Oct 30 12:25:53 2002 From: pluto@tipic.com (Francesco Delfino) Date: Wed, 30 Oct 2002 13:25:53 +0100 Subject: [Mono-list] Re: DirectX 9 <--> OpenGL References: <000b01c27ffa$c0aadd50$0200a8c0@roithw2k> Message-ID: <1035980620.877315@tigri.napoli.consorzio-cini.it> OpenGL is used also in Windows for great success games and is mapped (on windows) directly on the hardware by harware vendors, so I think an OpenGL# will be eventually portable. (e.g. I think Quake uses OpenGL instead of DirectX). Regards, Francesco Delfino Tipic Inc. http://www.tipic.com e-mail & Jabber: pluto@tipic.com blog: http://www.tipic.com/blog/pluto@tipic.com "Guenther Roith" wrote in message news:000b01c27ffa$c0aadd50$0200a8c0@roithw2k... > Hi! > > Having no experience with 3D APIs and related things, I would like to know, > if it is possible to somehow wrap the DirectX 9 API to OpenGL? > > MS will include DirectX 9 C#-bindings in the 2.0 Framework, and mono will > have OpenGL-bindings. DirectX is not only used for games, but also for sound > output, or advanced graphic applications, with 3D effects. > > Johannes > > > _______________________________________________ > Mono-list maillist - Mono-list@ximian.com > http://lists.ximian.com/mailman/listinfo/mono-list > --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.408 / Virus Database: 230 - Release Date: 24/10/2002 From DaveS@Webree.com Wed Oct 30 11:09:58 2002 From: DaveS@Webree.com (Dave Searle) Date: Wed, 30 Oct 2002 11:09:58 -0000 Subject: [Mono-list] Borland thinks Mono for open source .NET challenge Message-ID: <61C4A7965BB9D311901C00508B8B9A7D163860@ThisAddressDoesNotExist> http://www.theregister.co.uk/content/4/27839.html > Dave Searle > Internet Application Developer > Webree.com (PO Box 162, Portsmouth, PO1 2XL) > Email: dave@webree.com > Phone: 02392 738000 > Fax: 02392 739000 This email and any files transmitted with it are confidential and intended solely for the use of the individual or entity to whom they are addressed. It may contain information which is privileged. If you are not the intended addressee, you must not disclose, forward, copy or take any action in reliance of this e-mail or attachments. Webree.com do not accept legal responsibility for the contents of this message. Any views or opinions presented are solely those of the author and do not necessarily represent those of Webree.com. If you have received this e-mail in error, please notify our IT Manager as soon as possible at Webree.com PO Box 162 Portsmouth Hants PO1 2XL Tel: 44 (0) 2392 738000. E-mail IT@webree.com From mwh@sysrq.dk Wed Oct 30 14:50:28 2002 From: mwh@sysrq.dk (Martin Willemoes Hansen) Date: 30 Oct 2002 15:50:28 +0100 Subject: [Mono-list] gtk# In-Reply-To: <200210292213.g9TMDG328477@trna.ximian.com> References: <200210292213.g9TMDG328477@trna.ximian.com> Message-ID: <1035989429.182.12.camel@spiril> On Tue, 2002-10-29 at 23:13, ruch wrote: > hello everybody... > i have some problems to set up the gtk# on my system,...mono is running > excellent...but when i try to compile the helloworld.cs from the gtk# sample > directory( # mcs HelloWorld.cs) the compiler allwas tells me: > > HelloWorld.cs(26) error CS0246: Cannot find type `DeleteEventArgs' > Compilation failed: 1 error(s), 0 warnings > > and i do not know what the problem is... > have i to configure a conf file manually with the right path? try this code: using Gtk; using GtkSharp; using System; public class HelloWorld { public static void Main() { Application.Init(); Window win = new Window ("Hello, World!"); win.DeleteEvent += new DeleteEventHandler (WindowDelete); win.ShowAll(); Application.Run(); } static void WindowDelete (object o, DeleteEventArgs args) { Application.Quit(); args.RetVal = true; } } -- Martin Willemoes Hansen -------------------------------------------------------- E-Mail mwh@sysrq.dk Website mwh.sysrq.dk IRC MWH, freenode.net -------------------------------------------------------- From husemann@cox-internet.com Wed Oct 30 16:08:14 2002 From: husemann@cox-internet.com (Douglas and Elena Husemann) Date: Wed, 30 Oct 2002 10:08:14 -0600 Subject: [Mono-list] DirectX 9 <--> OpenGL References: <000b01c27ffa$c0aadd50$0200a8c0@roithw2k> Message-ID: <068e01c2802e$8d6fcac0$6401a8c0@office1> Guenther, There is a Implementation of OpenGL with c# bindings already for the .Net Framework, I would have to search for it again to find it but it already exists to some extents. Now on the mono side, Not sure how the DX9 api for the areas that OpenGL don't cover, (sound, networking etc etc) will be implemented. perhaps in the realm of the Winforms project?? Douglas ----- Original Message ----- From: "Guenther Roith" To: "mono-list" Sent: Wednesday, October 30, 2002 3:57 AM Subject: [Mono-list] DirectX 9 <--> OpenGL > Hi! > > Having no experience with 3D APIs and related things, I would like to know, > if it is possible to somehow wrap the DirectX 9 API to OpenGL? > > MS will include DirectX 9 C#-bindings in the 2.0 Framework, and mono will > have OpenGL-bindings. DirectX is not only used for games, but also for sound > output, or advanced graphic applications, with 3D effects. > > Johannes > > > _______________________________________________ > Mono-list maillist - Mono-list@ximian.com > http://lists.ximian.com/mailman/listinfo/mono-list From Pedro.Figueiredo@4SIR.COM Wed Oct 30 17:05:03 2002 From: Pedro.Figueiredo@4SIR.COM (Pedro Figueiredo) Date: Wed, 30 Oct 2002 17:05:03 -0000 Subject: [Mono-list] DirectX 9 <--> OpenGL Message-ID: <8525FB582E7EA045B2DC525055B9426D7643EE@Navision> This message is in MIME format. Since your mail reader does not understand this format, some or all of this message may not be legible. ------_=_NextPart_001_01C28036.7D1D59A0 Content-Type: text/plain; charset="ISO-8859-1" http://csgl.sourceforge.net/ ? -----Original Message----- From: Douglas and Elena Husemann [mailto:husemann@cox-internet.com] Sent: quarta-feira, 30 de Outubro de 2002 16:08 To: Guenther Roith; mono-list Subject: Re: [Mono-list] DirectX 9 <--> OpenGL Guenther, There is a Implementation of OpenGL with c# bindings already for the .Net Framework, I would have to search for it again to find it but it already exists to some extents. Now on the mono side, Not sure how the DX9 api for the areas that OpenGL don't cover, (sound, networking etc etc) will be implemented. perhaps in the realm of the Winforms project?? Douglas ----- Original Message ----- From: "Guenther Roith" To: "mono-list" Sent: Wednesday, October 30, 2002 3:57 AM Subject: [Mono-list] DirectX 9 <--> OpenGL > Hi! > > Having no experience with 3D APIs and related things, I would like to know, > if it is possible to somehow wrap the DirectX 9 API to OpenGL? > > MS will include DirectX 9 C#-bindings in the 2.0 Framework, and mono will > have OpenGL-bindings. DirectX is not only used for games, but also for sound > output, or advanced graphic applications, with 3D effects. > > Johannes > > > _______________________________________________ > Mono-list maillist - Mono-list@ximian.com > http://lists.ximian.com/mailman/listinfo/mono-list _______________________________________________ Mono-list maillist - Mono-list@ximian.com http://lists.ximian.com/mailman/listinfo/mono-list ------_=_NextPart_001_01C28036.7D1D59A0 Content-Type: text/html; charset="ISO-8859-1" Content-Transfer-Encoding: quoted-printable RE: [Mono-list] DirectX 9 <--> OpenGL

http://csgl.sourceforge.net/ ?


-----Original Message-----
From: Douglas and Elena Husemann [mailto:husemann@cox-internet.c= om]
Sent: quarta-feira, 30 de Outubro de 2002 = 16:08
To: Guenther Roith; mono-list
Subject: Re: [Mono-list] DirectX 9 <--> = OpenGL


Guenther,

There is a Implementation of OpenGL with c# bindings = already for
the .Net Framework, I would have to search for it = again to find it but
it already exists to some extents. 

Now on the mono side, Not sure how the DX9 api for = the areas that
OpenGL don't cover, (sound, networking etc = etc)  will be implemented.
perhaps in the realm of the Winforms = project??

Douglas
----- Original Message -----
From: "Guenther Roith" = <groith@tcrz.net>
To: "mono-list" = <mono-list@ximian.com>
Sent: Wednesday, October 30, 2002 3:57 AM
Subject: [Mono-list] DirectX 9 <--> = OpenGL


> Hi!
>
> Having no experience with 3D APIs and related = things, I would like to know,
> if it is possible to somehow wrap the DirectX 9 = API to OpenGL?
>
> MS will include DirectX 9 C#-bindings in the = 2.0 Framework, and mono will
> have OpenGL-bindings. DirectX is not only used = for games, but also for sound
> output, or advanced graphic applications, with = 3D effects.
>
> Johannes
>
>
> = _______________________________________________
> Mono-list maillist  -  = Mono-list@ximian.com
> http://lists.ximian.com/mailman/listinfo/mono-list=

_______________________________________________
Mono-list maillist  -  = Mono-list@ximian.com
http://lists.ximian.com/mailman/listinfo/mono-list=

------_=_NextPart_001_01C28036.7D1D59A0-- From Ben@roadrunner.uk.com Wed Oct 30 17:18:35 2002 From: Ben@roadrunner.uk.com (Ben Clewett) Date: Wed, 30 Oct 2002 17:18:35 +0000 Subject: [Mono-list] Problems with nightly snapshot. Message-ID: <3DC0146B.30803@roadrunner.uk.com> In the nightly snapshot: In ./mono/runtime/ there are two files: System.XML.dll in 110,529 bytes. System.Xml.dll in 392,192 bytes. If unzipped using WinZip on a Windows box, these two conflict, and the correct System.Xml.dll is overwritten by the other. This could be confusing for some users. Ben --------------------------------------------------------------------- Ben Clewett, B.Clewett@roadrunner.uk.com From Alex.Villazon@cui.unige.ch Wed Oct 30 17:20:27 2002 From: Alex.Villazon@cui.unige.ch (Alex.Villazon@cui.unige.ch) Date: Wed, 30 Oct 2002 18:20:27 +0100 Subject: [Mono-list] Compiling IL code Message-ID: <1035998427.3dc014db142ec@webmail.unige.ch> Hi all, I compiled a small program and I used "monodis" to obtain the IL code. Now I want to modify the generated IL code by hand (add some assembly code), and recompile it. Which tool do I have to use to do this? mcs? Is there a manual for the disassembler/assembler? Thanks, Alex From gonzalo@ximian.com Wed Oct 30 17:27:08 2002 From: gonzalo@ximian.com (Gonzalo Paniagua Javier) Date: 30 Oct 2002 18:27:08 +0100 Subject: [Mono-list] Compiling IL code In-Reply-To: <1035998427.3dc014db142ec@webmail.unige.ch> References: <1035998427.3dc014db142ec@webmail.unige.ch> Message-ID: <1035998830.764.101.camel@lalo2.micasa> El mié, 30-10-2002 a las 18:20, Alex.Villazon@cui.unige.ch escribió: > Which tool do I have to use to do this? mcs? Is there a manual for the > disassembler/assembler? Sergey's ilasm (mcs/ilasm). From danmorg@sc.rr.com Wed Oct 30 17:31:46 2002 From: danmorg@sc.rr.com (Daniel Morgan) Date: Wed, 30 Oct 2002 12:31:46 -0500 Subject: [Mono-list] mcs compile error In-Reply-To: <000501c27f8e$fd399c50$b201a8c0@winbooklew> Message-ID: You could just go into mono/runtime/Makefile and where you see this line monobins_DATA = mcs.exe monoresgen.exe remove monoresgen.exe If you already have a working mcs and mono, and you have he mcs source, cd to mcs/monoresgen on Linux, type: make -f makefile.gnu on Windows with .NET Framework, type: make From cvs or any tarballs, both mcs and mono sources should be placed in a common directory, such as, mono. . mono (common directory) . | . --------------- . | | . mono mcs . |- data |- class . |- doc |- doc . |- docs |- doctools . |- libffi |- errors . ... ... . |- runtime |- monoresgen I find this monoresgen thing to be annoying, luckily I already had mcs binaries on my computer. -----Original Message----- From: mono-list-admin@ximian.com [mailto:mono-list-admin@ximian.com]On Behalf Of Alex James Sent: Tuesday, October 29, 2002 4:06 PM To: Mono List Subject: [Mono-list] mcs compile error I'm getting this error, does anybody know why? I'm using cgywin, with the downloadable script to build mono. cp ../../mcs/mcs/mcs.exe . cp ../../mcs/monoresgen/monoresgen.exe . cp: cannot stat `../../mcs/monoresgen/monoresgen.exe': No such file or directory make[2]: *** [mcs.exe] Error 1 make[2]: Leaving directory `/home/alex/p/mono/runtime' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/home/alex/p/mono' make: *** [all-recursive-am] Error 2 Thanks, alex _______________________________________________ Mono-list maillist - Mono-list@ximian.com http://lists.ximian.com/mailman/listinfo/mono-list From miguel@ximian.com Wed Oct 30 17:38:37 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 30 Oct 2002 12:38:37 -0500 Subject: [Mono-list] Problems with nightly snapshot. In-Reply-To: <3DC0146B.30803@roadrunner.uk.com> References: <3DC0146B.30803@roadrunner.uk.com> Message-ID: <1035999516.5077.620.camel@erandi.boston.ximian.com> Hello! > In ./mono/runtime/ there are two files: > > System.XML.dll in 110,529 bytes. > System.Xml.dll in 392,192 bytes. > > If unzipped using WinZip on a Windows box, these two conflict, and the > correct System.Xml.dll is overwritten by the other. This could be > confusing for some users. Thanks for pointing this out, I have now fixed this, the next snapshot should have these problems corrected. From miguel@ximian.com Wed Oct 30 17:39:22 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 30 Oct 2002 12:39:22 -0500 Subject: [Mono-list] Compiling IL code In-Reply-To: <1035998830.764.101.camel@lalo2.micasa> References: <1035998427.3dc014db142ec@webmail.unige.ch> <1035998830.764.101.camel@lalo2.micasa> Message-ID: <1035999562.5074.624.camel@erandi.boston.ximian.com> Hello, > El mié, 30-10-2002 a las 18:20, Alex.Villazon@cui.unige.ch escribió: > > Which tool do I have to use to do this? mcs? Is there a manual for the > > disassembler/assembler? > > Sergey's ilasm (mcs/ilasm). Although we have not yet got the updated version of Ilasm from Sergey, and this one is known to have problems. Miguel. From miguel@ximian.com Wed Oct 30 17:52:27 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 30 Oct 2002 12:52:27 -0500 Subject: [Mono-list] Setup question In-Reply-To: <200210291854.SAA23183@www.smartdecisiondotnet.ltd.uk> References: <200210291854.SAA23183@www.smartdecisiondotnet.ltd.uk> Message-ID: <1036000346.5075.642.camel@erandi.boston.ximian.com> Hello, > I would like to know if it is possible to have mono working with apache2 on > a i386 linux platform, currently i am running java servlets and, php. > > I am new to mono, as i have only checked out the site today. i would like to > provide .net to our customers without getting in a MS server. Look at mod_haydn. Miguel From brianlouise@mail.dk Wed Oct 30 18:34:30 2002 From: brianlouise@mail.dk (Brian og Louise) Date: Wed, 30 Oct 2002 19:34:30 +0100 Subject: [Mono-list] glib2, configure and Mac OS X Message-ID: <5.1.0.14.0.20021030185755.00b60090@pop3.mail.dk> Hello all Since there is a certain lack of instructions on getting mono running on Mac OS X, I thougt I would throw my self at the task and see how far I got. First of I downloaded the 0.16 version of the distribution, and noted that it required glib version 2, which I then downloaded from the GTK website. This again required pkgconfig (using version 0.14.0), which fortunatly is part of fink for OS X. So after downloading and installing fink I went to the task of trying to compile glib2. This did not go so well ... as in it failed. To make a long story short it missed the library "libiconv" and the header files "libintl.h" and "iconv.h". Since I am not so well known around the gnu auto tools and especially in combination with Mac OS X, I went about it in the following way: Since all the above mentioned files is part of fink I just made symbolic links from them to /usr/lib and /usr/include, where I guessed configure would look. This is done as follows: (pwd == /usr/lib/) sudo ln -s /sw/lib/libiconv.2.0.4.dylib libiconv.dylib (pwd == /usr/include/) sudo ln -s /sw/include/libintl.h libintl.h sudo ln -s /sw/include/iconv.h This is how far I have come at this point in time, since now the make process is complaining! But if anybody want to have a go at getting mono up and running on OS X, this is a start, and hopefully somebody on this list can tell me if this is the right direction or not. Regards Brian From cwoodruff@openpenguin.com Wed Oct 30 18:47:01 2002 From: cwoodruff@openpenguin.com (Chris Woodruff) Date: Wed, 30 Oct 2002 13:47:01 -0500 Subject: [Mono-list] Borland exploring using Mono in Kylix Message-ID: <003a01c28044$bc00dda0$6501a8c0@ATLANTIC> http://www.theregister.co.uk/content/4/27839.html I am new to the list but wanted to send this out. It seems that Borland is exploring using Mono in future versions of Kylix to have a crossplatform .NET solution. Being a Delphi, CBuilder developer on Win32 and Kylix on Linux, I find this an excellent thing. Anyone on the list know more details? If anyone does not know what Kylix is here is the link http://www.borland.com/kylix/ Chris Woodruff cwoodruff@openpenguin.com From groith@tcrz.net Wed Oct 30 19:08:27 2002 From: groith@tcrz.net (Guenther Roith) Date: Wed, 30 Oct 2002 20:08:27 +0100 Subject: [Mono-list] Borland exploring using Mono in Kylix References: <003a01c28044$bc00dda0$6501a8c0@ATLANTIC> Message-ID: <003a01c28047$bac76be0$0200a8c0@roithw2k> Hi! Hopefully they don't read the GPL license agreement. Embedding the mono C# compiler will make Kylix GPL!! :-P Johannes ----- Original Message ----- From: "Chris Woodruff" To: Sent: Wednesday, October 30, 2002 7:47 PM Subject: [Mono-list] Borland exploring using Mono in Kylix > http://www.theregister.co.uk/content/4/27839.html > > I am new to the list but wanted to send this out. It seems that Borland is > exploring using Mono in future versions of Kylix to have a crossplatform > .NET solution. Being a Delphi, CBuilder developer on Win32 and Kylix on > Linux, I find this an excellent thing. Anyone on the list know more > details? > > If anyone does not know what Kylix is here is the link > http://www.borland.com/kylix/ > > Chris Woodruff > cwoodruff@openpenguin.com > > > > _______________________________________________ > Mono-list maillist - Mono-list@ximian.com > http://lists.ximian.com/mailman/listinfo/mono-list From steve.mentzer@mullinconsulting.com Wed Oct 30 19:08:50 2002 From: steve.mentzer@mullinconsulting.com (Steve Mentzer) Date: Wed, 30 Oct 2002 11:08:50 -0800 Subject: [Mono-list] glib2, configure and Mac OS X Message-ID: I have been fighting many of the same battles. I know of at least two developers attempting to get mono up on darwin. All have been met with challenges. What is frustrating is the lack of public information. I am **so** ready to start working on the darwin port, but I am unsure where to start. Given the fact that my available time is limited (as with everyone here), I don't want to waste time repeating the same learning curve that someone else struggled with. I really do think that there needs to be a clean, unambiguous and *current* FAQ for getting mono up and running on darwin & os/x. That way, folks that wish to contribute will be able to minimize pain! I would gladly volunteer to piece together the relevant information. But where is it? -----Original Message----- From: Brian og Louise [mailto:brianlouise@mail.dk] Sent: Wednesday, October 30, 2002 10:35 AM To: mono-list@ximian.com Subject: [Mono-list] glib2, configure and Mac OS X Hello all Since there is a certain lack of instructions on getting mono running on Mac OS X, I thougt I would throw my self at the task and see how far I got. First of I downloaded the 0.16 version of the distribution, and noted that it required glib version 2, which I then downloaded from the GTK website. This again required pkgconfig (using version 0.14.0), which fortunatly is part of fink for OS X. So after downloading and installing fink I went to the task of trying to compile glib2. This did not go so well ... as in it failed. To make a long story short it missed the library "libiconv" and the header files "libintl.h" and "iconv.h". Since I am not so well known around the gnu auto tools and especially in combination with Mac OS X, I went about it in the following way: Since all the above mentioned files is part of fink I just made symbolic links from them to /usr/lib and /usr/include, where I guessed configure would look. This is done as follows: (pwd == /usr/lib/) sudo ln -s /sw/lib/libiconv.2.0.4.dylib libiconv.dylib (pwd == /usr/include/) sudo ln -s /sw/include/libintl.h libintl.h sudo ln -s /sw/include/iconv.h This is how far I have come at this point in time, since now the make process is complaining! But if anybody want to have a go at getting mono up and running on OS X, this is a start, and hopefully somebody on this list can tell me if this is the right direction or not. Regards Brian _______________________________________________ Mono-list maillist - Mono-list@ximian.com http://lists.ximian.com/mailman/listinfo/mono-list From brianlouise@mail.dk Wed Oct 30 19:38:54 2002 From: brianlouise@mail.dk (B&L) Date: Wed, 30 Oct 2002 20:38:54 +0100 Subject: [Mono-list] glib2, configure and Mac OS X In-Reply-To: Message-ID: <5.1.0.14.0.20021030203400.00bd0898@pop3.mail.dk> I concur, which is why I wrote that email. This way somebody else could possible get a bit further without having to use time on something that have already been done. I did find someone mentioning that he had something up and running in the list archives and tried to contact him - but no response. So maybe some activity on the list regarding OSX could bring them forward. But any progress that I do make will be posted to the list immediatly. /Brian At 11:08 30-10-2002 -0800, Steve Mentzer wrote: >I have been fighting many of the same battles. > >I know of at least two developers attempting to get mono up on darwin. All >have been met with challenges. What is frustrating is the lack of public >information. > >I am **so** ready to start working on the darwin port, but I am unsure >where to start. Given the fact that my available time is limited (as with >everyone here), I don't want to waste time repeating the same learning >curve that someone else struggled with. > >I really do think that there needs to be a clean, unambiguous and >*current* FAQ for getting mono up and running on darwin & os/x. That way, >folks that wish to contribute will be able to minimize pain! > >I would gladly volunteer to piece together the relevant information. But >where is it? From danmorg@sc.rr.com Wed Oct 30 19:40:44 2002 From: danmorg@sc.rr.com (Daniel Morgan) Date: Wed, 30 Oct 2002 14:40:44 -0500 Subject: [Mono-list] ADO.NET for Oracle on mono? In-Reply-To: <20021030190718.C443F3DED@xmxpita.excite.com> Message-ID: Hi Arnold, You can download a current tarball of libgda from http://www.gnome-db.org/ and untar this to your hard drive. Take a look in the providers/oracle subdirectory, there you will find the implementation for the Oracle provider for GDA. This will help you see how OCI is being used. In the configure.in script for libgda, you will see how libgda checks for the Oracle client libraries. Also, go to http://www.oracle.com/ and do a Search for OCI, and you will find lots of information there. You can start on the Oracle provider in Mono if you wish. No one has started on this. It would be in its own assembly System.Data.OracleClient and namespace System.Data.OracleClient just like Microsoft .NET has. For verison 1.0 of Microsoft .NET Framework, System.Data.OracleClient is a separate download, but version 1.1 beta includes it. In both versions, System.Data.OracleClient exists in its own assembly. Interop marshalling works real good in Mono right now. Platform Invoke works real good in Mono too. However, there is no support for COM interop. This does not matter since COM does not exist on Linux anyways. Work has started for CORBA interop though. Daniel -----Original Message----- From: akpoon@excite.com [mailto:akpoon@excite.com] Sent: Wednesday, October 30, 2002 2:07 PM To: danmorg@sc.rr.com Subject: RE: [Mono-list] ADO.NET for Oracle on mono? Hi I know some OCI and have worked with some OCI driver for oracle (not an expert by any means). A lot of interop marshalling will be necessary with an Oracle driver if you do it with OCI (is there any other way? I don't know). The C# layer would be more standard and we might be able to borrow some logic from Coleman. The C OCI call will need someone with Oracle OCI experience. Arnold --- On Fri 10/25, Daniel Morgan < danmorg@sc.rr.com > wrote: From: Daniel Morgan [mailto: danmorg@sc.rr.com] To: akpoon@excite.com Date: Fri, 25 Oct 2002 16:25:10 -0400 Subject: RE: [Mono-list] ADO.NET for Oracle on mono? > > Hi > Arnold > There > are plans for creating an Oracle .NET provider in Mono for Oracle 8i and > Oracle > 9i databases. However, nobody is working on an Oracle provider right > > now. Currently, you can connect to Oracle using Mono via the > System.Data.Odbc or System.Data.OleDb providers. If you are willing > to > work on this, you are welcome to do so. > Just > let me know. It probably will be in assembly > System.Data.OracleClient and > namespace System.Data.OracleClient just like the Oracle .NET provider is > in .NET > Framework 1.1 beta. > Tim > Coleman created an Oracle provider for GDA which is used for the > implementation > for Mono's System.Data.OleDb on Linux. He plans on creating an > Oracle > provider after he has got System.Data.SqlClient and other TDS providers > like > Mono.Data.SybaseClient and Mono.Data.TdsClient providers > working. > I do > not think a 100% pure C# .net provider for Oracle can be provided due to > the > fact that the Oracle client software is proprietary. Both the Oracle .NET > > providers create by Microsoft and Oracle use the Oracle client > software. > Microsoft's Oracle .net provider can connect to Oracle 8i and Oracle 9i > databases while Oracle's Oracle.net provider can only connect to Oracle 9i > > databases. Oracle's Oracle .net provider includes the Oracle > client > software while Microsoft's Oracle .net provider does not. > > Do you > know OCI (Oracle Call-level Interface) which is the C API used to access > Oracle > databases? -----Original Message----- From: > mono-list-admin@ximian.com > [mailto:mono-list-admin@ximian.com]On Behalf Of > akpoon@excite.com Sent: Wednesday, October 23, 2002 8:18 > PM To: mono-list@ximian.com Subject: [Mono-list] > ADO.NET > for Oracle on mono? Hi all, Just > > wondering if there is any plan (not just from mono) for a native driver > for > Oracle? Is there any demand for such a driver at all? Will such a > > driver be helpful to the community? Arnold From cwoodruff@openpenguin.com Wed Oct 30 19:41:53 2002 From: cwoodruff@openpenguin.com (Chris Woodruff) Date: Wed, 30 Oct 2002 14:41:53 -0500 Subject: [Mono-list] Borland exploring using Mono in Kylix References: <003a01c28044$bc00dda0$6501a8c0@ATLANTIC> <003a01c28047$bac76be0$0200a8c0@roithw2k> Message-ID: <004c01c2804c$662907b0$6501a8c0@ATLANTIC> Actually the component framework (CLX) Kylix uses is open sourced. There is a sourceforge project that has the CLX in CVS. Now Borland has done a bad job bringing developers into this project but the code is there. The IDE Kylix uses is not GPL so that is the distinction between the 2 halves. There is also a personal version of Kylix that is free (as in beer) and can be used only to develop GPL applications for Linux. Because of this I do not see anything that will not keep Borland from incorporating Mono framework into the CLX framework. I don't think they have to embed the C# compiler into Kylix just have the IDE call the compiler. Chris Woodruff ----- Original Message ----- From: "Guenther Roith" To: "Chris Woodruff" Cc: "mono-list" Sent: Wednesday, October 30, 2002 2:08 PM Subject: Re: [Mono-list] Borland exploring using Mono in Kylix > Hi! > > Hopefully they don't read the GPL license agreement. > Embedding the mono C# compiler will make Kylix GPL!! :-P > > Johannes > ----- Original Message ----- > From: "Chris Woodruff" > To: > Sent: Wednesday, October 30, 2002 7:47 PM > Subject: [Mono-list] Borland exploring using Mono in Kylix > > > > http://www.theregister.co.uk/content/4/27839.html > > > > I am new to the list but wanted to send this out. It seems that Borland > is > > exploring using Mono in future versions of Kylix to have a crossplatform > > .NET solution. Being a Delphi, CBuilder developer on Win32 and Kylix on > > Linux, I find this an excellent thing. Anyone on the list know more > > details? > > > > If anyone does not know what Kylix is here is the link > > http://www.borland.com/kylix/ > > > > Chris Woodruff > > cwoodruff@openpenguin.com > > > > > > > > _______________________________________________ > > Mono-list maillist - Mono-list@ximian.com > > http://lists.ximian.com/mailman/listinfo/mono-list > > > _______________________________________________ > Mono-list maillist - Mono-list@ximian.com > http://lists.ximian.com/mailman/listinfo/mono-list > > From miguel@ximian.com Wed Oct 30 19:13:55 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 30 Oct 2002 14:13:55 -0500 Subject: [Mono-list] Borland exploring using Mono in Kylix In-Reply-To: <003a01c28044$bc00dda0$6501a8c0@ATLANTIC> References: <003a01c28044$bc00dda0$6501a8c0@ATLANTIC> Message-ID: <1036005234.5074.683.camel@erandi.boston.ximian.com> Hello, > I am new to the list but wanted to send this out. It seems that Borland is > exploring using Mono in future versions of Kylix to have a crossplatform > .NET solution. Being a Delphi, CBuilder developer on Win32 and Kylix on > Linux, I find this an excellent thing. Anyone on the list know more > details? Maybe this is a chance to help build some missing classes from the class library, you can help us: http://www.go-mono.com/contributing.html Miguel From husemann@cox-internet.com Wed Oct 30 19:54:07 2002 From: husemann@cox-internet.com (Douglas and Elena Husemann) Date: Wed, 30 Oct 2002 13:54:07 -0600 Subject: [Mono-list] DirectX 9 <--> OpenGL References: <8525FB582E7EA045B2DC525055B9426D7643EE@Navision> Message-ID: <095201c2804e$1be0b1b0$6401a8c0@office1> This is a multi-part message in MIME format. ------=_NextPart_000_094F_01C2801B.D0F53B80 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable RE: [Mono-list] DirectX 9 <--> OpenGLyep that would be it. Douglas ----- Original Message -----=20 From: Pedro Figueiredo=20 To: mono-list=20 Sent: Wednesday, October 30, 2002 11:05 AM Subject: RE: [Mono-list] DirectX 9 <--> OpenGL http://csgl.sourceforge.net/ ?=20 -----Original Message-----=20 From: Douglas and Elena Husemann [mailto:husemann@cox-internet.com]=20 Sent: quarta-feira, 30 de Outubro de 2002 16:08=20 To: Guenther Roith; mono-list=20 Subject: Re: [Mono-list] DirectX 9 <--> OpenGL=20 Guenther,=20 There is a Implementation of OpenGL with c# bindings already for=20 the .Net Framework, I would have to search for it again to find it but = it already exists to some extents. =20 Now on the mono side, Not sure how the DX9 api for the areas that=20 OpenGL don't cover, (sound, networking etc etc) will be implemented.=20 perhaps in the realm of the Winforms project??=20 Douglas=20 ----- Original Message -----=20 From: "Guenther Roith" =20 To: "mono-list" =20 Sent: Wednesday, October 30, 2002 3:57 AM=20 Subject: [Mono-list] DirectX 9 <--> OpenGL=20 > Hi!=20 >=20 > Having no experience with 3D APIs and related things, I would like = to know,=20 > if it is possible to somehow wrap the DirectX 9 API to OpenGL?=20 >=20 > MS will include DirectX 9 C#-bindings in the 2.0 Framework, and mono = will=20 > have OpenGL-bindings. DirectX is not only used for games, but also = for sound=20 > output, or advanced graphic applications, with 3D effects.=20 >=20 > Johannes=20 >=20 >=20 > _______________________________________________=20 > Mono-list maillist - Mono-list@ximian.com=20 > http://lists.ximian.com/mailman/listinfo/mono-list=20 _______________________________________________=20 Mono-list maillist - Mono-list@ximian.com=20 http://lists.ximian.com/mailman/listinfo/mono-list=20 ------=_NextPart_000_094F_01C2801B.D0F53B80 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable RE: [Mono-list] DirectX 9 <--> OpenGL
yep that would be it.
 
Douglas
----- Original Message -----
From:=20 Pedro Figueiredo
Sent: Wednesday, October 30, = 2002 11:05=20 AM
Subject: RE: [Mono-list] = DirectX 9=20 <--> OpenGL

http://csgl.sourceforge.net/ ?


-----Original Message-----
From:=20 Douglas and Elena Husemann [mailto:husemann@cox-internet.co= m]=20
Sent: quarta-feira, 30 de Outubro de 2002 = 16:08=20
To: Guenther Roith; mono-list
Subject: Re: [Mono-list] DirectX 9 <--> OpenGL =


Guenther,

There is a Implementation of OpenGL with c# bindings = already=20 for
the .Net Framework, I would have to = search for it=20 again to find it but
it already exists to = some=20 extents. 

Now on the mono side, Not sure how the DX9 api for = the areas=20 that
OpenGL don't cover, (sound, networking = etc=20 etc)  will be implemented.
perhaps in = the realm=20 of the Winforms project??

Douglas
----- Original = Message -----=20
From: "Guenther Roith" = <groith@tcrz.net>=20
To: "mono-list" <mono-list@ximian.com> =
Sent: Wednesday, October 30, 2002 3:57 AM
Subject: [Mono-list] DirectX 9 <--> OpenGL =


> Hi!
> =
> Having no experience with 3D APIs and related things, I = would like=20 to know,
> if it is possible to somehow = wrap the=20 DirectX 9 API to OpenGL?
> =
> MS will include DirectX 9 C#-bindings in the 2.0 = Framework, and=20 mono will
> have OpenGL-bindings. DirectX = is not=20 only used for games, but also for sound
> = output,=20 or advanced graphic applications, with 3D effects.
>
> Johannes
>=20
>
>=20 _______________________________________________
>=20 Mono-list maillist  -  Mono-list@ximian.com
> http://lists.ximian.com/mailman/listinfo/mono-list=20

_______________________________________________=20
Mono-list maillist  -  = Mono-list@ximian.com=20
http://lists.ximian.com/mailman/listinfo/mono-list=20

------=_NextPart_000_094F_01C2801B.D0F53B80-- From miguel@ximian.com Wed Oct 30 19:54:09 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 30 Oct 2002 14:54:09 -0500 Subject: [Mono-list] Borland exploring using Mono in Kylix In-Reply-To: <003a01c28047$bac76be0$0200a8c0@roithw2k> References: <003a01c28044$bc00dda0$6501a8c0@ATLANTIC> <003a01c28047$bac76be0$0200a8c0@roithw2k> Message-ID: <1036007648.5068.705.camel@erandi.boston.ximian.com> Hello, > Hopefully they don't read the GPL license agreement. > Embedding the mono C# compiler will make Kylix GPL!! :-P My guess from the various reports out there is that Borland is developing a compiler that will generate CIL bytecodes and they could use the mono runtime which is LGPL for running the resulting binaries. Miguel. From webmaster@ajlopez.com Wed Oct 30 20:19:35 2002 From: webmaster@ajlopez.com (Angel "Java" Lopez) Date: Wed, 30 Oct 2002 17:19:35 -0300 Subject: [Mono-list] Borland exploring using Mono in Kylix References: <003a01c28044$bc00dda0$6501a8c0@ATLANTIC> <003a01c28047$bac76be0$0200a8c0@roithw2k> <004c01c2804c$662907b0$6501a8c0@ATLANTIC> Message-ID: <01d801c28051$ab55d2f0$4d00000a@travelrock.com> Hi, people! I think that Borland wants to use the libraries, not the compiler. The referenced article, say nothing about Mono compiler. And Borland people, said internally: "our tools will generate .Net code in every platform". Then, Kylix == Delphi (on .Net space). Borland wants to generate CIL code, in every compiler. They can generate CIL code, with internal tools, I think. But they needs a framework library on Linux. Angel "Java" Lopez ----- Original Message ----- From: "Chris Woodruff" To: "Guenther Roith" Cc: "mono-list" Sent: Wednesday, October 30, 2002 4:41 PM Subject: Re: [Mono-list] Borland exploring using Mono in Kylix > Actually the component framework (CLX) Kylix uses is open sourced. From sean@earthtribe.net Wed Oct 30 21:20:33 2002 From: sean@earthtribe.net (Sean Gies) Date: Wed, 30 Oct 2002 13:20:33 -0800 Subject: [Mono-list] Borland exploring using Mono in Kylix References: <003a01c28044$bc00dda0$6501a8c0@ATLANTIC> <003a01c28047$bac76be0$0200a8c0@roithw2k> Message-ID: <015801c2805a$2e77f2a0$d37c6f90@amer.ads.autodesk.com> Couldn't they get around that by not including mcs in their distribution? What's to stop them from implementing the Mono.CSharp compiler interface with dummy code, linking against it and then shipping? If done in that way, they have not touched, included, or linked against the mcs project---but it would still work with mcs. -Sean ----- Original Message ----- From: "Guenther Roith" To: "Chris Woodruff" Cc: "mono-list" Sent: Wednesday, October 30, 2002 11:08 AM Subject: Re: [Mono-list] Borland exploring using Mono in Kylix > Hi! > > Hopefully they don't read the GPL license agreement. > Embedding the mono C# compiler will make Kylix GPL!! :-P > > Johannes > ----- Original Message ----- > From: "Chris Woodruff" > To: > Sent: Wednesday, October 30, 2002 7:47 PM > Subject: [Mono-list] Borland exploring using Mono in Kylix > > > > http://www.theregister.co.uk/content/4/27839.html > > > > I am new to the list but wanted to send this out. It seems that Borland > is > > exploring using Mono in future versions of Kylix to have a crossplatform > > .NET solution. Being a Delphi, CBuilder developer on Win32 and Kylix on > > Linux, I find this an excellent thing. Anyone on the list know more > > details? > > > > If anyone does not know what Kylix is here is the link > > http://www.borland.com/kylix/ > > > > Chris Woodruff > > cwoodruff@openpenguin.com > > > > > > > > _______________________________________________ > > Mono-list maillist - Mono-list@ximian.com > > http://lists.ximian.com/mailman/listinfo/mono-list > > > _______________________________________________ > Mono-list maillist - Mono-list@ximian.com > http://lists.ximian.com/mailman/listinfo/mono-list > From Neale.Ferguson@SoftwareAG-USA.com Wed Oct 30 21:39:27 2002 From: Neale.Ferguson@SoftwareAG-USA.com (Ferguson, Neale) Date: Wed, 30 Oct 2002 14:39:27 -0700 Subject: [Mono-list] monocharge Message-ID: <9A4FC925410C024792B85198DF1E97E403F45BCC@usmsg03.sagus.com> I've lost the URL of the latest monocharge tar balls, would someone refresh my mind please? From gonzalo@ximian.com Thu Oct 31 00:48:21 2002 From: gonzalo@ximian.com (Gonzalo Paniagua Javier) Date: 31 Oct 2002 01:48:21 +0100 Subject: [Mono-list] monocharge In-Reply-To: <9A4FC925410C024792B85198DF1E97E403F45BCC@usmsg03.sagus.com> References: <9A4FC925410C024792B85198DF1E97E403F45BCC@usmsg03.sagus.com> Message-ID: <1036025302.764.110.camel@lalo2.micasa> El mié, 30-10-2002 a las 22:39, Ferguson, Neale escribió: > I've lost the URL of the latest monocharge tar balls, would someone refresh > my mind please? There are nightly snapshots at http://www.go-mono.com/snapshots/ I also upload from time to time a monocharge to http://www.gnome-db.org/~gonzalo/mono/ -Gonzalo From jrhwork@hotmail.com Thu Oct 31 01:16:48 2002 From: jrhwork@hotmail.com (Jackson Harper) Date: Wed, 30 Oct 2002 17:16:48 -0800 Subject: [Mono-list] DirectX 9 <--> OpenGL Message-ID: I believe WINE has implemented allot of DirectX functionality using SDL. DirectX is a very large API and the 3D component is very different from OpenGL, it would be allot of work to wrap. Jackson _________________________________________________________________ Unlimited Internet access -- and 2 months free!  Try MSN. http://resourcecenter.msn.com/access/plans/2monthsfree.asp From ranger@befunk.com Thu Oct 31 02:21:34 2002 From: ranger@befunk.com (Benjamin Reed) Date: Wed, 30 Oct 2002 21:21:34 -0500 Subject: [Mono-list] glib2, configure and Mac OS X In-Reply-To: <5.1.0.14.0.20021030185755.00b60090@pop3.mail.dk> Message-ID: <79B89F23-EC77-11D6-99F4-00039357AAEE@befunk.com> On Wednesday, October 30, 2002, at 01:34 PM, Brian og Louise wrote: > This is how far I have come at this point in time, since now the make > process is complaining! > But if anybody want to have a go at getting mono up and running on OS > X, this is a start, and hopefully somebody on this list can tell me if > this is the right direction or not. I've got parts of it building already, see the list archives for my patch (couple of weeks ago). It doesn't quite work yet, though, feel free to pick up where I left off... From mark@talios.com Thu Oct 31 06:34:44 2002 From: mark@talios.com (Mark Derricutt) Date: Thu, 31 Oct 2002 19:34:44 +1300 Subject: [Mono-list] Borland exploring using Mono in Kylix In-Reply-To: <1036007648.5068.705.camel@erandi.boston.ximian.com> References: <003a01c28044$bc00dda0$6501a8c0@ATLANTIC> <003a01c28047$bac76be0$0200a8c0@roithw2k> <1036007648.5068.705.camel@erandi.boston.ximian.com> Message-ID: <3340000.1036046084@spawn.se7en.org> Shipped with Borland Delphi 7 is a preview of their .NET compiler for Delphi. So you can compile Object Pascal code directly to .NET. I'd envision them using that under linux more than C#. Also, Borland are apparantly also working on -another- language aimed at "web services", what that means, god only knows. Mark --On Wednesday, October 30, 2002 14:54:09 -0500 Miguel de Icaza wrote: > My guess from the various reports out there is that Borland is > developing a compiler that will generate CIL bytecodes and they could > use the mono runtime which is LGPL for running the resulting binaries. -- \m/ -- ...in 29 days - The Odyssey begins... www.symphonyx.com mark@talios.com - ICQ: 1934853 JID: talios@myjabber.net From Ben@roadrunner.uk.com Thu Oct 31 09:22:43 2002 From: Ben@roadrunner.uk.com (Ben Clewett) Date: Thu, 31 Oct 2002 09:22:43 +0000 Subject: [Mono-list] GUI Namespace. Message-ID: <3DC0F663.6070305@roadrunner.uk.com> If Borland produce code for .NET, does this mean there will be a choice of three Namespace's for CGI? (Micosoft.Forms, Gtk, and something like Borland.Forms) Would KDE also require another Namespace if they chose Mono for their GUI RAD development? --------------------------------------------------------------------- Ben Clewett, B.Clewett@roadrunner.uk.com From scott@intermap.co.za Thu Oct 31 08:19:16 2002 From: scott@intermap.co.za (Scott Ainslie) Date: Thu, 31 Oct 2002 10:19:16 +0200 Subject: [Mono-list] ASP.Net Message-ID: This is a multi-part message in MIME format. ------=_NextPart_000_0030_01C280C6.F7D904B0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit I am an ASP.Net developer and would like to test my applications on mono. I am fairly new to linux but would love to host my asp.net applications on linux and not MS IIS. As far as contributing to the project I would only be able to supply the issues I come accross while trying to get my applications to run. My current development platform is WindowsXP, MS SQL Server, VisualStudio.Net Enterprise Architect and developmend is done mostly with VB.Net and code behind. I Dual Boot to RedHat8.0. What I would like to see in mono: 1) Install whatever on RedHat 2) Setup whatever web server and copy my compiled code behind dll (bin directory) and my aspx files to the web server. 3) Edit the web.config (is ADO.Net up enough to just put my MS SQL connection string here, The SQL Server is on the same IP sub net as the redhat box) 4) Start browsing my application. Is mono at a place where this can be done? Is there any documentation clear enough for a windows admin to set this up and test? Thanks PS: I am very excited about the prospect of running my applications on Linux, keep up the good work! Scott Ainslie Intermap (PTY) Ltd P.O.Box 13672 Cascades 3202 South Africa www.intermap.co.za scott@intermap.co.za +27 82 444 1204 (Cell) +27 33 3456981 (Tel) ------=_NextPart_000_0030_01C280C6.F7D904B0 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
I am = an ASP.Net=20 developer and would like to test my applications on mono. I am fairly = new to=20 linux but would love to host my asp.net applications on linux and not MS = IIS. As=20 far as contributing to the project I would only be able to supply the = issues I=20 come accross while trying to get my applications to = run.
 
My = current=20 development platform is WindowsXP, MS SQL Server, VisualStudio.Net = Enterprise=20 Architect and developmend is done mostly with VB.Net and code behind. I = Dual=20 Boot to RedHat8.0.
 
What I = would like to=20 see in mono:
1) = Install whatever=20 on RedHat
2) = Setup whatever=20 web server and copy my compiled code behind dll (bin directory) and my = aspx=20 files to the web server.
3) = Edit the=20 web.config (is ADO.Net up enough to just put my MS SQL connection string = here,=20 The SQL Server is on the same IP sub net as the redhat = box)
4) = Start browsing my=20 application.
 
Is = mono at a place=20 where this can be done?
Is = there any=20 documentation clear enough for a windows admin to set this up and=20 test?
 
Thanks
 
PS: I am very=20 excited about the prospect of running my applications on Linux, keep up = the good=20 work!

Scott = Ainslie

Intermap (PTY) = Ltd=20
P.O.Box = 13672=20
Cascades = 3202=20
South = Africa

 www.intermap.co.za
scott@intermap.co.za =
+27 82 444 1204 = (Cell)
=20
+27 33 3456981=20 (Tel)

 
------=_NextPart_000_0030_01C280C6.F7D904B0-- From mark@talios.com Thu Oct 31 09:47:03 2002 From: mark@talios.com (Mark Derricutt) Date: Thu, 31 Oct 2002 22:47:03 +1300 Subject: [Mono-list] GUI Namespace. In-Reply-To: <3DC0F663.6070305@roadrunner.uk.com> References: <3DC0F663.6070305@roadrunner.uk.com> Message-ID: <14600000.1036057623@[10.0.0.3]> >From what I understand, Borland are writing a VCL.NET which code wise looks like Delphis existing VCL, but underneath is Windows Forms. But thats likely all subject to change... --On Thursday, October 31, 2002 09:22:43 +0000 Ben Clewett wrote: > If Borland produce code for .NET, does this mean there will be a choice > of three Namespace's for CGI? (Micosoft.Forms, Gtk, and something like > Borland.Forms) > > Would KDE also require another Namespace if they chose Mono for their GUI > RAD development? -- \m/ -- ...in 29 days - The Odyssey begins... www.symphonyx.com mark@talios.com - ICQ: 1934853 JID: talios@myjabber.net From alex00james@adelphia.net Thu Oct 31 03:02:47 2002 From: alex00james@adelphia.net (Alex James) Date: Wed, 30 Oct 2002 22:02:47 -0500 Subject: [Mono-list] sync Message-ID: <000501c28089$fdda6b20$b201a8c0@winbooklew> I just built mcs, and mono out of cvs in cgywin. I'm just running a simple "hello" program, and i am getting an out of sync warning. How do I change that? built by "make" in /mcs, and mono-build-w32.sh both with updated cvs (just before build time) Thanks, alex $ mono hello_world.exe ** (hello_world.exe:1660): WARNING **: cant resolve internal call to "System.Typ e::get_property(System.Type,string,System.Type[])" (tested without signature als o) Your mono runtime and corlib are out of sync. When you update one from cvs you need to update, compile and install the other too. Do not report this as a bug unless you're sure you have updated correctly: you probably have a broken mono install. If you see other errors or faults after this message they are probably related and you need to fix your mono install first. Hello World! From rsemail@zoominternet.net Thu Oct 31 04:43:40 2002 From: rsemail@zoominternet.net (Ron Steiger) Date: Wed, 30 Oct 2002 23:43:40 -0500 Subject: [Mono-list] iSeries port? Message-ID: <004401c28098$1587f090$0c01a8c0@medina.home.com> This is a multi-part message in MIME format. ------=_NextPart_000_0041_01C2806E.2C80ED80 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hello, Is anybody porting .Net to iSeries (AS/400)? Ron ------=_NextPart_000_0041_01C2806E.2C80ED80 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Hello,
Is anybody porting .Net to iSeries=20 (AS/400)?
Ron
------=_NextPart_000_0041_01C2806E.2C80ED80-- From groith@tcrz.net Thu Oct 31 11:11:43 2002 From: groith@tcrz.net (Guenther Roith) Date: Thu, 31 Oct 2002 12:11:43 +0100 Subject: [Mono-list] sync References: <000501c28089$fdda6b20$b201a8c0@winbooklew> Message-ID: <002001c280ce$4b8634a0$0200a8c0@roithw2k> Hi! It has to do, what you compile first (mono or mcs). There are mono charge tarballs at http://www.gnome-db.org/~gonzalo/mono/ . Copy the dlls to your lib-directory. Johannes ----- Original Message ----- From: "Alex James" To: "Mono List" Sent: Thursday, October 31, 2002 4:02 AM Subject: [Mono-list] sync > I just built mcs, and mono out of cvs in cgywin. I'm just running a simple > "hello" program, and i am getting an out of sync warning. How do I change > that? > > built by "make" in /mcs, and mono-build-w32.sh > both with updated cvs (just before build time) > > Thanks, > alex > > $ mono hello_world.exe > > ** (hello_world.exe:1660): WARNING **: cant resolve internal call to > "System.Typ > e::get_property(System.Type,string,System.Type[])" (tested without signature > als > o) > > Your mono runtime and corlib are out of sync. > When you update one from cvs you need to update, compile and install > the other too. > Do not report this as a bug unless you're sure you have updated correctly: > you probably have a broken mono install. > If you see other errors or faults after this message they are probably > related > and you need to fix your mono install first. > Hello World! > > > > _______________________________________________ > Mono-list maillist - Mono-list@ximian.com > http://lists.ximian.com/mailman/listinfo/mono-list > From miguel@ximian.com Thu Oct 31 16:54:42 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 31 Oct 2002 11:54:42 -0500 Subject: [Mono-list] ASP.Net In-Reply-To: References: Message-ID: <1036083282.5068.765.camel@erandi.boston.ximian.com> Hello, > I am an ASP.Net developer and would like to test my applications on > mono. I am fairly new to linux but would love to host my asp.net > applications on linux and not MS IIS. As far as contributing to the > project I would only be able to supply the issues I come accross while > trying to get my applications to run. More likely the upcoming release of Mono will have something easy to install for you to try on. The current state of ASP requires a lot of expertise to get it working. You definitely want to wait for us to get another release out, and iron out the little problems. As for your help, it will be very welcomed. We need people who can submit good bug reports, and investigate the sources of the problem, so the developers can be more productive. So any kind of assistance you can provide will aid the project. Documentation, tests, regression tests, documentation, bug reports, documentation are some examples of things you can do. > 1) Install whatever on RedHat > 2) Setup whatever web server and copy my compiled code behind dll (bin > directory) and my aspx files to the web server. > 3) Edit the web.config (is ADO.Net up enough to just put my MS SQL > connection string here, The SQL Server is on the same IP sub net as > the redhat box) > 4) Start browsing my application. > > Is mono at a place where this can be done? Yes, but you need to wait a little, there is no release currently that would allow you to do this easily, we are on the case though. But you can still help us in other areas while we work on getting this done. > Is there any documentation clear enough for a windows admin to set > this up and test? What will happen is that you will just download a Linux package, install it, and perform the four or so steps you listed above. Miguel From kums@gmx.net Thu Oct 31 18:30:06 2002 From: kums@gmx.net (G.Kumaraguru) Date: Fri, 1 Nov 2002 00:00:06 +0530 Subject: [Mono-list] .NET 'trounces' Java Message-ID: <000001c2810b$8bbbcfc0$d0f5c7cb@kums> This is a multi-part message in MIME format. ------=_NextPart_000_0001_01C28139.A5759260 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit http://www.theregister.co.uk/content/4/27833.html .NET significantly outperformed the J2EE version on 2,4 and 8-way machines on all three suites: the web benchmarks, TP and web services. In one case, the J2EE Pet Store couldn't handle the transactions at all. ------=_NextPart_000_0001_01C28139.A5759260 Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable

http://www.the= register.co.uk/content/4/27833.html

 

.NET significantly = outperformed the J2EE version on 2,4 and 8-way machines on = all three suites: the web benchmarks, TP and web services. In one case, the J2EE = Pet Store couldn't handle the transactions at = all.

 

 

------=_NextPart_000_0001_01C28139.A5759260-- From steve.mentzer@mullinconsulting.com Thu Oct 31 19:01:25 2002 From: steve.mentzer@mullinconsulting.com (Steve Mentzer) Date: Thu, 31 Oct 2002 11:01:25 -0800 Subject: [Mono-list] .NET 'trounces' Java Message-ID: This is a multi-part message in MIME format. ------_=_NextPart_001_01C2810F.E906509D Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable You know the old saying.. =20 "There are lies, damned lies and benchmarks". =20 I am not saying that the results aren't accurate, but people need to = realize that there is no "silver bullet" in software development. No one = platform is perfect for any situation. The Java advocates are already = jumping all over this in a vain attempt to discredit the results when = what they should be doing is constructing their own test suites that = highlight the strengths of Java.=20 =20 I personally believe that Java is the pascal of the 21st century. But = then again, that is just my opinion. Great for a teaching language, but = a little purist for my day-to-day needs. c# certainly isn't perfect. And = the entire .net framework is strikingly similar to the java namespaces. =20 Above everything else, software development is still a human and largely = manual process. A clueless moron can take their program, throw it = through the best compiler, run it on the fastest computer in existence = and still get crappy results. =20 Programmer competence carries much more weight than "raw platform" speed = in my book. =20 -----Original Message----- From: G.Kumaraguru [mailto:kums@gmx.net] Sent: Thursday, October 31, 2002 10:30 AM To: mono-list@ximian.com Subject: [Mono-list] .NET 'trounces' Java http://www.theregister.co.uk/content/4/27833.html =20 .NET significantly outperformed the J2EE version on 2,4 and 8-way = machines on all three suites: the web benchmarks, TP and web services. = In one case, the J2EE Pet Store couldn't handle the transactions at all. =20 =20 ------_=_NextPart_001_01C2810F.E906509D Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
You=20 know the old saying..
 
"There=20 are lies, damned lies and benchmarks".
 
I am=20 not saying that the results aren't accurate, but people need to realize = that=20 there is no "silver bullet" in software development. No one platform is = perfect=20 for any situation. The Java advocates are already jumping all over this = in a=20 vain attempt to discredit the results when what they should=20 be doing is constructing their own test suites that highlight the = strengths of=20 Java.
 
I=20 personally believe that Java is the pascal of the 21st century. But then = again,=20 that is just my opinion. Great for a teaching language, but a little = purist for=20 my day-to-day needs. c# certainly isn't perfect. And the entire .net = framework=20 is strikingly similar to the java namespaces.
 
Above=20 everything else, software development is still a human and largely = manual=20 process. A clueless moron can take their program, throw it through the = best=20 compiler, run it on the fastest computer in existence and still get = crappy=20 results.
 
Programmer competence carries much more weight than "raw = platform" speed=20 in my book.
 
-----Original Message-----
From: G.Kumaraguru=20 [mailto:kums@gmx.net]
Sent: Thursday, October 31, 2002 10:30 = AM
To: mono-list@ximian.com
Subject: [Mono-list] = .NET=20 'trounces' Java

http://www.the= register.co.uk/content/4/27833.html

 

.NET=20 significantly outperformed the J2EE version on 2,4=20 and 8-way machines on all three suites: the web benchmarks, TP and web = services. In one case, the J2EE Pet Store couldn't handle the = transactions at=20 all.

 

 

------_=_NextPart_001_01C2810F.E906509D-- From miguel@ximian.com Thu Oct 31 19:07:15 2002 From: miguel@ximian.com (Miguel de Icaza) Date: 31 Oct 2002 14:07:15 -0500 Subject: [Mono-list] .NET 'trounces' Java In-Reply-To: <000001c2810b$8bbbcfc0$d0f5c7cb@kums> References: <000001c2810b$8bbbcfc0$d0f5c7cb@kums> Message-ID: <1036091235.5074.811.camel@erandi.boston.ximian.com> Hello! > http://www.theregister.co.uk/content/4/27833.html > > > > .NET significantly outperformed the J2EE version on 2,4 and 8-way > machines on all three suites: the web benchmarks, TP and web services. > In one case, the J2EE Pet Store couldn't handle the transactions at > all. Somewhere I read that the new Pet Store written in .NET was indeed faster, but it was possible to perform transactions that would actually leave the database in an inconsistent state. I do not know where I read this, but someone was analyzing the code and came up with that. Anyways, the subject has been beaten to death on Slashdot lets give this a rest. Miguel. From richard.torkar@htu.se Thu Oct 31 19:59:58 2002 From: richard.torkar@htu.se (Richard Torkar) Date: 31 Oct 2002 20:59:58 +0100 Subject: [Mono-list] .NET 'trounces' Java In-Reply-To: <1036091235.5074.811.camel@erandi.boston.ximian.com> References: <000001c2810b$8bbbcfc0$d0f5c7cb@kums> <1036091235.5074.811.camel@erandi.boston.ximian.com> Message-ID: <1036094398.20286.1.camel@torkar.dyndns.org> --=-UXTBW/ALhEb5/v/ctYmj Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable On Thu, 2002-10-31 at 20:07, Miguel de Icaza wrote: > Hello! >=20 > > http://www.theregister.co.uk/content/4/27833.html > >=20 > > =20 > >=20 > > .NET significantly outperformed the J2EE version on 2,4 and 8-way > > machines on all three suites: the web benchmarks, TP and web services. > > In one case, the J2EE Pet Store couldn't handle the transactions at > > all. >=20 > Somewhere I read that the new Pet Store written in .NET was indeed > faster, but it was possible to perform transactions that would actually > leave the database in an inconsistent state. I do not know where I > read this, but someone was analyzing the code and came up with that.=20 >=20 > Anyways, the subject has been beaten to death on Slashdot lets give this > a rest. >=20 Agree, lets give it a rest. The benchamrks where so flawed that it would probably make a B.Sc. thesis fail in an exam. And it was paied by MIcrosoft as well. /Richard --=20 Ph.D. Student Dept. of Informatics and Mathematics University of Trollh=E4ttan/Uddevalla --=-UXTBW/ALhEb5/v/ctYmj Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.7 (GNU/Linux) iD8DBQA9wYu+mTD+ECRI4eERAnjDAKCcdhtXbKdElMyhpvCV1u+XssOcuACeLW6H nn2aSw0YoN/xej6Z4ro0jRY= =US3E -----END PGP SIGNATURE----- --=-UXTBW/ALhEb5/v/ctYmj-- From blackhawk@ivanhawkes.com Wed Oct 30 04:42:57 2002 From: blackhawk@ivanhawkes.com (Ivan Hawkes) Date: Wed, 30 Oct 2002 05:42:57 +0100 Subject: [Mono-list] [off-topic] What editor do you use? In-Reply-To: <1063673312.21672.4.camel@saturno.marblestation.homeip.net> References: <1063673312.21672.4.camel@saturno.marblestation.homeip.net> Message-ID: <3DBF6351.2050305@ivanhawkes.com> Sergio Blanco Cuaresma wrote: >Hello! > >While I was speaking with a friend about Mono, he asked me what editor >is commonly used by mono developers and I didn't know what to answer, I >just said that I use jEdit. So, I would like to know which is your >favourite editor for programming with Mono, specially on Linux. > >Thanks! > > > I use pico for a bit of quick shell work and Kate for more serious stuff. Kate is quite nice since it is just a simple editor with syntax highlighting and other useful programming features. I think it is also the default embedded editor for KDevelop, but I may be wrong on this. vi is a last gasp resort when all else fails since I don't have enough "mad vi skillz" to really make it work for me. From blackhawk@ivanhawkes.com Wed Oct 30 04:57:14 2002 From: blackhawk@ivanhawkes.com (Ivan Hawkes) Date: Wed, 30 Oct 2002 05:57:14 +0100 Subject: [Mono-list] Problems with asynchronous web requests In-Reply-To: <1063732526.1631.12.camel@jason-mobile> References: <1063732526.1631.12.camel@jason-mobile> Message-ID: <3DBF66AA.9010302@ivanhawkes.com> Jason Boutwell wrote: >Has anyone else had a problem making asynchronous web requests using the >Mono runtime? > >I tried the sample code on the MSDN site, which works fine on the MS >runtime, but fails on Mono. It appears that you can't make an >asynchronous Stream.BeginRead() call from within another BeginRead. Not >sure exactly. My knowledge of the .Net threading model is limited. > >http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconmakingasynchronousrequests.asp > >I filed a report on bugzilla, but was just curious if anyone else had >noticed this behavior. It seems a fairly significant threading problem >to me. > >Jason > > I have definitely had threading related issues with the XSP web server. The code I am trying to port (slowly, it's my spare time) uses the XML libraries to XSLT some XML into nice little web pages. The code to do this doesn't return from a system call (into the XML lib) until after the thread (or whatever) returns with an error. Net result, calls to transform XML do not work. NOTE: I haven't tried this in a few weeks so it may be fixed. From vegeta.z@gmail.com Wed Oct 9 04:56:16 2002 From: vegeta.z@gmail.com (daniel narf) Date: Tue, 08 Oct 2002 23:56:16 -0400 Subject: [Mono-list] Re: mono scripting? References: Message-ID: Woot i have tried boo and it looks awesome,thanks!