Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: master
Fetching contributors…

Cannot retrieve contributors at this time

file 421 lines (386 sloc) 21.645 kb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421
2005-04-12 Jonathan Pryor <jonpryor@vt.edu>
* type-reflector.exe.config: Change fully-qualified name of the Gtk# type
displayer (namespace had to change).
* TypeFactory.cs: protect against a null entry (if no suck key exists).

2005-02-09

* type-reflector.in: Added; used so the installed script knows which
type-reflector program to launch.
* Makefile: Rewrite install/uninstall to be a better Linux citizen.
We shouldn't install type-reflector.exe into $prefix/bin; that's evil.
Instead, install it into $prefix/share/type-reflector/, and install a
script $prefix/bin/type-reflector which invokes the .exe.

2004-09-18 Jonathan Pryor <jonpryor@vt.edu>
+ Summary: Add new command-line argument, -r, which takes assembly partial
names instead of assembly file names. This allows us to load assembly "by
name" from the GAC, such as mscorlib, Mono.Posix, and gtk-sharp, without
needing to load *everything* (via --load-default-assemblies), or knowing
the actual path to the GAC (to explicity load the assemblies).
* Makefile: Update TARGETS so that it references the correct temporary
files. This allows ``make clean'' to actually clean up the appropriate
files, permitting proper rebuilds.
* TypeLoader.cs: Add assembly references collection, and use
Assembly.LoadWithPartialName() to load referenced assemblies. Change
internal collection type from IList<string> to IList<Assembly>.
* TypeReflectorApp.cs: Add handling of referenced assemby information.
* TypeReflectorOptions.cs: Add referenceAssembies argument, and change
showInheritedMembers option so referenceAssemblies can use -r. This
provides a command-line parameter more similar to mcs, etc.
* displayers/gtk/GtkTypeDisplayer.cs: Don't store uints in the TreeStore,
just ints. This removes a number of Gtk-WARNING messages.
* type-reflector: Permit spaces to be in the script filename.

2004-06-02 Jonathan Pryor <jonpryor@vt.edu>
* Makefile: Update GUI_GTK_LIBS variable for new mcs syntax (-pkg:...).

2004-03-07 Jonathan Pryor <jonpryor@vt.edu>
* Makefile: The "gui" target needs to use the "gtkui" and "swfui" sub-target
names; the gtk and swf targets no longer exist.

2003-11-30 Jonathan Pryor <jonpryor@vt.edu>
* Makefile: change names of gtk & swf targets. Prior versions of
type-reflector didn't have a `dispayers' directory, but had
`displayers/gtk', etc., as top-level dirs.
Since these files are touched during the build process, this creates a CVS
update conflict (CVS expects a `gtk' directory, but a `gtk' file may
exist).
Change the names of the files generated (hence, the target names) to avoid
this conflict.

2003-11-23 Jonathan Pryor <jonpryor@vt.edu>
* Makefile: Add rule to create TestTypes.dll, used in testing.

2003-10-25 Jonathan Pryor <jonpryor@vt.edu>
* Makefile: Add displayers/gtk/AppWindowManager.cs to build.

2003-??-?? Jonathan Pryor <jonpryor@vt.edu>
* Makefile: Merged contents of Makefile & makefile.gnu & makefile.core.
This simplifies building (only 1 Makefile), and makes it easier to be a
part of mono-tools. Also added new targets, such as "dist", "distdir".
* makefile.core: removed
* makefile.gnu: removed

2003-09-28 Jonathan Pryor <jonpryor@vt.edu>
* TypeReflectorApp.cs: Update Version, Cope with ITypeDisplayer changes.
* makefile.core: add artwork resources
* type-reflector.exe.config: add Gtk# Displayer trace switch

2003-08-10 Jonathan Pryor <jonpryor@vt.edu>
* TypeReflectorApp.cs: Update Version, more debugging information.

2003-07-05 Jonathan Pryor <jonpryor@vt.edu>
* TypeReflectorApp.cs: Ensure that TraceListeners are flushed before program
exit. This ensures that any TraceListeners added in the .config file will
get everything they should.
* TypeReflectorOptions.cs: Remove "Experimental" wording, and make sure that
the right information is displayed.
* type-reflector.exe.config: Add additional examples (use of <assert/>).

2003-07-03 Jonathan Pryor <jonpryor@vt.edu>
* IPolicy.cs: New File. Root interface for all "policies" -- things that can
change, such as INodeFinder, and INodeFormatter.
* Policy.cs: Default implementation of IPolicy interface.
* README: updated documentation
* TODO: Updated TODO list
* TypeFactory.cs: I don't want the Gtk# GUI displaying "short names" for
finders, formatters, etc. For example, to get C# formatting, you'd
normally pass `--formatter=csharp'. I don't want Gtk# showing "csharp," I
want it to show "C#". Furthermore, I don't want to update the GUI
whenever I add a new language. The solution is to add extra information
to the type-reflector.exe.config file. Now, instead of having the "key"
contain the actual factory key, it includes both the key and the
description, in the format "key:description," so the C# formatter can be
described as "csharp:C#". This could have been done with the "value"
instead of the "key", but ':' could be special in assembly names.
- Introduce TypeFactoryEntry, which contains the factory Key (everything
before the ':'), the Description (everything after the ':'), and the Type
(the value of the .config-file entry).
- TypeFactory is now a map from string -> TypeFactoryEntry (instead of
string -> Type).
* TypeLoader.cs: Allow directories to be specified. This requires expanding
directories into a list of .dll's and .exe's to open. Alternatively, we
could just open *all* files in the directory, but this seems safer for
now. Also, it's *not* recursive. This could change in the future.
* TypeReflectorApp.cs: Update version number, update for TypeFactory
changes, make '.' the default Type search character (instead of requiring
it as a parameter), ITypeDisplayer changes
* TypeReflectorOptions.cs: More far-reaching changes. It didn't make sense
to default to opening all assemblies -- this took forever -- and not
provide a default type search, so now it's flipped -- there are no default
assemblies (one must be provided, through -a), but the default Type search
is '.', which is the only sensible default. Update documentation.
* makefile.core: Cope with new files, install type-reflector script.
* type-reflector: shell script for Unix-like systems so that typing
type-reflector.exe isn't necessary. Script idea initially proposed on
mono-list, IIRC.
* type-reflector.exe.config: Add descriptions for various policies
(displayers and formatters).

2003-06-26 Jonathan Pryor <jonpryor@vt.edu>
* TypeFactory.cs: Make a Factory look like a Dictionary. Useful for
enumerating over factory contents (e.g. debugging)
* TypeLoader.cs: Print the regex out before constructing the Regex. Useful
when the Regex constructor throws an exception.
* TypeReflectorApp.cs: Misc. Changes:
- Added static Version propery, which is used in the Gtk# About dialog
- Add/Remove some diagnostics messages
- Provide overloads for CreateFinder & CreateFormatter. These are used in
the Gtk# front-end to permit dynamic language selection.
* makefile.core: simplify the resource name for the Gtk# .glade file, add
the gnome-sharp.dll library for Gtk#.

2003-02-19 Jonathan Pryor <jonpryor@vt.edu>
* TestTypes.cs: Added test cases.
* makefile.core: Re-enabled debugging as default

2003-01-16 Jonathan Pryor <jonpryor@vt.edu>
* makefile.core: Fix the multiple-build problem. Again. Hopefully it'll
stay fixed this time...

2003-01-14 Jonathan Pryor <jonpryor@vt.edu>
- General: massive file movement. I felt it would be cleaner if related
files were in the same directory, instead of (nearly) everything
cluttering up the root directory. Since the current architecture seems
pretty final (I don't see any major changes; it works) I split things up
among namespace boundaries.
* ConsoleTypeDisplayer.cs: moved to displayers/
* ITypeDisplayer.cs: moved to displayers/
* TypeDisplayer.cs: moved to displayers/
* IndentingTextWriter.cs: moved to displayers/
* gtk/: moved to displayers/
* swf/: moved to displayers/
* ExplicitNodeFinder.cs: moved to finders/
* GroupingNodeFinder.cs: moved to finders/
* INodeFinder.cs: moved to finders/
* NodeFinder.cs: moved to finders/
* ReflectionNodeFinder.cs: moved to finders/
* INodeFormatter.cs: moved to formatters/
* NodeFormatter.cs: moved to formatters/
* DefaultNodeFormatter.cs: moved to formatters/
* CSharpNodeFormatter.cs: moved to formatters/
* VBNodeFormatter.cs: moved to formatters/
* makefile.core: update for new file locations.

2003-01-12 Jonathan Pryor <jonpryor@vt.edu>
* makefile.core: Add dependencies to `gui' target so it doesn't rebuild when
it doesn't need to. Reported by gonzalo.

2003-01-10 Jonathan Pryor <jonpryor@vt.edu>
* CSharpNodeFormatter.cs: New properties required by LanguageNodeFormatter
* LanguageNodeFormatter.cs: Allow more declarative control over generation
of Property members.
* ReflectionNodeFinder.cs: Make sure the instance is appropriate. This
allows us to view static property values when using the
ReflectionNodeFinder.
* VBNodeFormatter.cs: New properties required by LanguageNodeFormatter

2003-01-10 Jonathan Pryor <jonpryor@vt.edu>
- General: Specify the order of displayers to use in the .config file. This
allows us to have "intelligent" defaults, so that (by default) GUI
front-ends are preferred to console output. If no GUI is supported, then
fallback to console output.
* README: Updates
* TypeReflectorApp.cs: Follow the "displayer-order" when finding the default
displayer.
* TypeReflectorOptions.cs: Change default Displayer to "" so that we know if
the user has specified a preferred displayer.
* type-reflector.exe.config: Specify the default displayer ordering.

2003-01-10 Jonathan Pryor <jonpryor@vt.edu>
* TypeReflectorApp.cs: Don't always require that types be specified on the
command line. This isn't necessary for the GUI front-ends, as the user
can just open an assembly from within the app after it's running.
* IndentingTextWriter.cs: Move to Mono.TypeReflector.Displayers.

2003-01-10 Jonathan Pryor <jonpryor@vt.edu>
- General: Namespace partitioning. It was getting annoying (when using
type-reflector to display itself) to have ~70 classes in a single
namespace. So I split up the classes into namespace according to
function. For example, Finders (ExplicitNodeFinder, ReflectionNodeFinder)
went into Mono.TypeReflector.Finders.
* CSharpNodeFormatter.cs: Moved into Mono.TypeReflector.Formatters.
* ConsoleTypeDisplayer.cs: Moved into Mono.TypeReflector.Displayers.
* DefaultNodeFormatter.cs: Moved into Mono.TypeReflector.Formatters.
* ExplicitNodeFormatter.cs: Moved into Mono.TypeReflector.Formatters.
* Factories.cs: Reference the appropriate namespaces.
* GroupingNodeFinder.cs: Moved into Mono.TypeReflector.Finders.
* INodeFinder.cs: Moved into Mono.TypeReflector.Finders.
* INodeFormatter.cs: Moved into Mono.TypeReflector.Formatters.
* ITypeDisplayer.cs: Moved into Mono.TypeReflector.Displayers.
* LanguageNodeFormatter.cs: Moved into Mono.TypeReflector.Formatters.
* Node.cs: Reference the appropriate namespaces.
* NodeFinder.cs: Moved into Mono.TypeReflector.Finders.
* NodeFormatter.cs: Moved into Mono.TypeReflector.Formatters.
* NodeGrouper.cs: Moved into Mono.TypeReflector.Finders.
* ReflectionNodeFinder.cs: Moved into Mono.TypeReflector.Finders.
* TypeDisplayer.cs: Moved into Mono.TypeReflector.Displayers.
* TypeReflectorApp.cs: Reference the appropriate namespaces.
* VBNodeFormatter.cs: Moved into Mono.TypeReflector.Formatters.
* type-refelctor.exe.config: Update type names.

2003-01-09 Jonathan Pryor <jonpryor@vt.edu>
  - General: Do the most hackish thing I've ever thought of. OK, perhaps not
    the *most*, but it must be up there...
  - Problem: type-reflector supports multiple GUI toolkits. However, I don't
    want to require the existance of any one of them to compile. Because of
    this, the default has been to support only console output. Nothing else
    was supported by the default build.
  - Solution: Try to build everything. Literally. Due to the wonders of the
    shell's || operator, if one build fails we can provide another build as a
    backup. This boils down to doing the following:

      make gui-all || make gtk || make swf || make console

    The "make console" is to ensure that, at the very least, console-support
    is built-in. If no GUI toolkit is available, we'll at least have
    something.
  - Good news: this works, and will support as many toolkits as the build
    platform supports.
  - Bad news: It may invoke several compilations. For example, my Windows box
    doesn't have Gtk# support, so "gui-all" and "gtk" both fail before "swf"
    successfully compiles. That's two failed compilation efforts, resulting
    in additional overhead.
  * Makefile: provide a MAKEFILE variable so that makefile.core can invoke the
    correct top-level makefile for its sub-makes (see description above)
  * makefile.core:
    - "all" invokes the "gui" target, not "console". "gui", in turn,
      carries out the process described above. It isn't pretty.
    - removed support for "linux" target. This hasn't been used for awhile.
  * makefile.gnu: provide a MAKEFILE variable so that makefile.core can invoke
    the correct top-level makefile for its sub-makes (see description above)

2003-01-09 Jonathan Pryor <jonpryor@vt.edu>
* TypeReflectorApp.cs: Remove hard-coded factory initialization and #ifdef
preprocessor use. Factory information is located in
type-reflector.exe.config now. This removes dependence on the
preprocessor, simplifies addition of new formatters/etc. (For example, if
you want to add a new formatter, you can just edit
type-reflector.exe.config with the appropriate type.)
* makefile.core:
- Remove -d:SYMBOL compiler arguments for GUI support
- Due to above, we can simplify GUI targets to use $(CSC_INVOKE). (I
would have done this before, but bug 36410 prevented this from working.)
* type-reflector.exe.config: Provide new sections to specify the displayers,
finders, and formatters that can be used.

2003-01-08 Jonathan Pryor <jonpryor@vt.edu>
* AssemblyInfo.cs: New; Assembly Information (version, etc.)
* DefaultNodeFormatter.cs: Use AddMethodReturnValue to invoke methods
* ITypeDisplayer.cs: Provide a way to display error messages
* LanguageNodeFormatter.cs: Use AddMethodReturnValue to invoke methods
* Makefile: Since I need to use csc.exe to compile System.Windows.Forms
support, I need a way to use directory separators in a (reasonably)
portable fashion. Hennce the DS (Directory Separator) variable, which
holds the directory separator of the current platform. Set it to
backslash for Windows.
* NodeFormatter.cs:
- Provide an option to enable/disable invoking methods. See README for a
short discussion of why this is needed. (Search for [1].)
- Minor formatting changes.
- Add AddMethodReturnValue() function. This is used by derived classes,
instead of directly invoking a method, if invocation is permitted.
* README: Updates.
* TypeDisplayer.cs:
- Check for a null namespace. This apparently can happen under .NET.
I'm not sure why, but handle it.
- Provide default implementation of ITypeDisplayer.ShowError().
* TypeFactory.cs: Remove Console messages, clean formatting.
* TypeReflectorApp.cs:
- There's > 1 factory now. Change names so it makes more sense.
- Add "swf" displayer.
- Use ITypeDisplayer.ShowError() for errors
- Handle new program options for formatter objects
* TypeReflectorOptions.cs: Add option to enable method invocation. Clean up
formatting.
* makefile.core:
- Add "swf" target for System.Windows.Forms display:
- csc.exe wants ".dll" appended to referenced assemblies. Add this.
- csc.exe wants a colon, not a space, after -r. Fix.
- Add new files (AssemblyInfo.cs, swf/*.cs)
- Use $(DS) where appropriate.
* makefile.gnu: Add $(DS) variable
* type-reflector.exe.config: Comment out default listeners, enable
type-factory messages by default.

2003-01-02 Jonathan Pryor <jonpryor@vt.edu>
* NodeFormatter.cs: Change formatting of error message.
* NodeInfo.cs: Nested types are MemberTypes.NestedType; set as
NodeTypes.Type so we don't get error messages under .NET.

2002-12-31 Jonathan Pryor <jonpryor@vt.edu>
* ConsoleTypeDisplayer.cs: New; Display reflection information to the console
* CSharpNodeFormatter.cs: Most formatting information was moved to
LanguageNodeFormatter.cs (to permit sharing with the VBNodeFormatter)
* ExplicitNodeFinder.cs: Updates due to NodeFinder changes.
* Factories.cs: Add new "Displayer" factory, remove "Factory" from name of
factory objects; the fact they're in a "Factories" class should be
sufficient.
* IndentingTextWriter.cs: Ensure that if a string sent to Write or WriteLine
contains embedded newlines, that we indent the text after the newlines
appropriately.
* ITypeDisplayer.cs: New; Abstraction for displaying reflection information
* LanguageNodeFormatter.cs: Massive cleanup & Consolidation of features.
Now works as a control class for generating Language-like output,
simplifying C# and VB.NET language formatting.
* Makefile: Most contents moved to `makefile.core'; just sets variables and
forwards operation to `makefile.core'.
* Node.cs: Debugging ToString() implementation
* NodeFinder.cs: Change virtual Get* methods to Add* methods, as
they're supposed to Add stuff to the Collection object passed as the first
paramter, not actually return ("get") anything; Removed `maxDepth', as
it's not used in the NodeFinder.
* NodeFormatter.cs: Move language-like attribute formatting to
LanguageNodeFormatter; check that base type isn't null before accessing
its name; recent CVS snapshots have the base object of interfaces as the
null object (before it was System.Object); this may be a mono bug.
* NodeInfo.cs: Debugging ToString() implementation
* ProgramOptions.cs: Make classes public, not internal
* README: Updates
* ReflectionNodeFinder.cs: Updates due to NodeFinder changes.
* TestTypes.cs: More tests
* TypeDisplayer.cs: New; Helper implementation for ITypeDisplayer
* TypeFactory.cs: Trace/log the exception generated when creating a new
object
* TypeLoader.cs: Take a list of types to search for, not just a single type.
This simplifies looking for types, as we can do a single search for all
types, instead of separate searches for each type. Also improves
performance.
* TypeReflectorApp.cs: New; Formerly ConsoleOutput.cs; sets things in motion
* TypeReflectorOptions.cs: Make public; Add --displayer argument
* VBNodeFormatter.cs: New; Displayer reflection information in VB.NET
* gtk: new directory for Gtk# front-end
* makefile.core: New; Common makefile rules shared between Makefile,
makefile.gnu
* makefile.gnu: New; makefile used on Linux, used by tools/makefile.gnu for
recursive makes.
* type-reflector.exe.config: Add new switch, sample listener

2002-12-21 Jonathan Pryor <jonpryor@vt.edu>
* ConsoleOutput.cs: Use a Switch for trace messages.
* ExplicitNodeFinder.cs: Use a Switch for trace messages.
* GroupingNodeFinder.cs: Use a Switch for trace messages.
* IndentingTextWriter.cs: Use a Switch for trace messages; remove copyright
statement.
* NodeFinder.cs: Use a Switch for trace messages.
* TypeLoader.cs: Use a Switch for trace messages; remove copyright
statement.
* type-reflector.exe.config: default .config file (disable all trace
messages)

2002-12-10 Jonathan Pryor <jonpryor@vt.edu>
* TestTypes.cs: Use a different attribute type for [return:] attribute on
TestClass.PublicMethod, as mcs doesn't support [return:] attributes yet
and it was generating an error for the two "MyAttribute" attributes.

2002-12-08 Jonathan Pryor <jonpryor@vt.edu>
* DESIGN: Read this to understand the new design that was implemented.
* ConsoleOutput.cs: Deal with "new world order" of Node objects
* Makefile: minor cleanup
* TestTypes.cs: additional tests
* TypeReflectorOptions.cs: new options
* CSharpTypeDisplayer.cs: removed
* ExplicitTypeDisplayer.cs: removed
* IndentingTypeDisplayer.cs: removed
* ReflectionTypeDisplayer.cs: removed
* TypeDisplayer.cs: removed
* TypeDisplayerFactory.cs: removed
* CSharpNodeFormatter.cs: new file
* DefaultNodeFormatter.cs: new file
* ExplicitNodeFinder.cs: new file
* Factories.cs: new file
* GroupingNodeFinder.cs: new file
* INodeFinder.cs: new file
* INodeFormatter.cs: new file
* LICENSE: new file
* LanguageNodeFormatter.cs: new file
* Node.cs: new file
* NodeFinder.cs: new file
* NodeFormatter.cs: new file
* NodeGrouper.cs: new file
* NodeInfo.cs: new file
* NodeTypes.cs: new file
* ReflectionNodeFinder.cs: new file
* TypeFactory.cs: new file

2002-09-04 Jonathan Pryor <jonpryor@vt.edu>
* CSharpTypeDisplayer.cs: Better attribute output
* TestTypes.cs: Improve test cases

2002-09-03 Jonathan Pryor <jonpryor@vt.edu>
* ChangeLog: Added
* ConsoleOutput.cs: s/parse/display; makes more sense
* ExplicitTypeDisplayer.cs: Add additional output
* IndentingTextWriter.cs: Allow indenting to be specified
* ProgramOptions.cs: Allow more space for program options in output
* ReflectionTypeDisplayer.cs: Formatting changes
* TypeDisplayer.cs: Trivial formatting changes
* TypeReflectorOptions.cs: Re-enable program option, formatting changes

# vim: noexpandtab
Something went wrong with that request. Please try again.