Changeset 294
- Timestamp:
- 04/28/08 23:13:47 (7 months ago)
- Files:
-
- branches/v2/minid/iolib.d (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
branches/v2/minid/iolib.d
r290 r294 67 67 { 68 68 inputStreamClass = new MDInputStreamClass(_Object); 69 outputStreamClass = new MDOutputStreamClass(_Object);70 69 streamClass = new MDStreamClass(_Object); 70 outputStreamClass = new MDOutputStreamClass(_Object, inputStreamClass, streamClass); 71 71 } 72 72 … … 499 499 { 500 500 private Layout!(char) mLayout; 501 502 public this(MDObject owner) 501 private MDInputStreamClass mInputStreamClass; 502 private MDStreamClass mStreamClass; 503 504 public this(MDObject owner, MDInputStreamClass inputStreamClass, MDStreamClass streamClass) 503 505 { 504 506 super("OutputStream", owner); 505 507 506 508 mLayout = new Layout!(char)(); 509 mInputStreamClass = inputStreamClass; 510 mStreamClass = streamClass; 507 511 508 512 mFields.addList … … 523 527 "writeChars"d, new MDClosure(mFields, &writeChars, "OutputStream.writeChars"), 524 528 "writeJSON"d, new MDClosure(mFields, &writeJSON, "OutputStream.writeJSON"), 525 "flush"d, new MDClosure(mFields, &flush, "OutputStream.flush") 529 "flush"d, new MDClosure(mFields, &flush, "OutputStream.flush"), 530 "copy"d, new MDClosure(mFields, ©, "OutputStream.copy") 526 531 ); 527 532 … … 590 595 { 591 596 s.push(s.safeCode(s.getContext!(MDOutputStream).flush())); 597 return 1; 598 } 599 600 public int copy(MDState s, uint numParams) 601 { 602 auto o = s.getParam!(MDObject)(0); 603 604 InputStream stream; 605 606 if(auto i = cast(MDInputStream)o) 607 stream = i.mInput; 608 else if(auto s = cast(MDStream)o) 609 stream = s.mInput.mInput; 610 else 611 s.throwRuntimeException("object must be either an InputStream or a Stream, not a '{}'", s.getParam(0u).typeString()); 612 613 s.push(s.getContext!(MDOutputStream).copy(stream)); 592 614 return 1; 593 615 } … … 668 690 { 669 691 mOutput.flush(); 692 return this; 693 } 694 695 public MDOutputStream copy(InputStream s) 696 { 697 mOutput.copy(s); 670 698 return this; 671 699 }
