diff --git a/collects/browser/private/html.ss b/collects/browser/private/html.ss
index 41ec85c3a3..d386e5bc76 100644
--- a/collects/browser/private/html.ss
+++ b/collects/browser/private/html.ss
@@ -9,6 +9,7 @@
(lib "string.ss")
(lib "port.ss")
(lib "url-sig.ss" "net")
+ (lib "url-structs.ss" "net")
(only (lib "html.ss" "html") read-html-as-xml)
(only (lib "html.ss" "html") read-html-comments)
(only (lib "html.ss" "html") use-html-spec)
diff --git a/collects/browser/private/hyper.ss b/collects/browser/private/hyper.ss
index 11c7f79e2a..7f7d7d188a 100644
--- a/collects/browser/private/hyper.ss
+++ b/collects/browser/private/hyper.ss
@@ -38,6 +38,7 @@ A test case:
(lib "string.ss")
(lib "etc.ss")
(lib "url-sig.ss" "net")
+ (lib "url-structs.ss" "net")
(lib "head.ss" "net")
(lib "mred-sig.ss" "mred")
(lib "framework.ss" "framework")
diff --git a/collects/games/parcheesi/moves.ss b/collects/games/parcheesi/moves.ss
index 0ded421123..4bc1e0bcaa 100644
--- a/collects/games/parcheesi/moves.ss
+++ b/collects/games/parcheesi/moves.ss
@@ -3,6 +3,15 @@
(lib "contract.ss")
(lib "list.ss"))
+ ;; a move is either:
+ ;; - (make-enter-piece pawn)
+ ;; - (make-move-piece-main pawn start distance)
+ ;; - (make-move-piece-home pawn start distance)
+ (define-struct move () (make-inspector))
+ (define-struct (enter-piece move) (pawn) (make-inspector))
+ (define-struct (move-piece-main move) (pawn start distance) (make-inspector))
+ (define-struct (move-piece-home move) (pawn start distance) (make-inspector))
+
(provide/contract
(struct enter-piece ((pawn pawn?)))
(struct move-piece-main ([pawn pawn?] [start number?] [distance number?]))
@@ -36,15 +45,6 @@
(define bop-bonus 20)
(define home-bonus 10)
-
- ;; a move is either:
- ;; - (make-enter-piece pawn)
- ;; - (make-move-piece-main pawn start distance)
- ;; - (make-move-piece-home pawn start distance)
- (define-struct move () (make-inspector))
- (define-struct (enter-piece move) (pawn) (make-inspector))
- (define-struct (move-piece-main move) (pawn start distance) (make-inspector))
- (define-struct (move-piece-home move) (pawn start distance) (make-inspector))
;; moves-dice : moves -> (listof number)
;; does not return the die moves that correspond to entering pawns
diff --git a/collects/help/private/gui.ss b/collects/help/private/gui.ss
index 8d8d73a1e0..0cfa0db013 100644
--- a/collects/help/private/gui.ss
+++ b/collects/help/private/gui.ss
@@ -14,6 +14,7 @@
(lib "browser-sig.ss" "browser")
(lib "url-sig.ss" "net")
+ (lib "url-structs.ss" "net")
"sig.ss"
"../bug-report.ss"
(lib "bday.ss" "framework" "private")
diff --git a/collects/help/private/tcp-intercept.ss b/collects/help/private/tcp-intercept.ss
index f7ea6639fd..602e1263ce 100644
--- a/collects/help/private/tcp-intercept.ss
+++ b/collects/help/private/tcp-intercept.ss
@@ -6,6 +6,7 @@
(lib "sig.ss" "web-server")
(lib "tcp-sig.ss" "net")
(lib "url-sig.ss" "net")
+ (lib "url-structs.ss" "net")
"internal-hp.ss")
(define-syntax (redefine stx)
@@ -33,35 +34,18 @@
[(and (equal? (url-port url) internal-port)
(equal? (url-host url) internal-host))
(let* ([long
- (raw:url->string
- (raw:make-url ""
- (raw:url-user url)
- ""
- #f
- (raw:url-path url)
- (raw:url-query url)
- (raw:url-fragment url)))])
+ (url->string
+ (make-url ""
+ (url-user url)
+ ""
+ #f
+ (url-path url)
+ (url-query url)
+ (url-fragment url)))])
(substring long 3 (string-length long)))]
[else (raw:url->string url)]))
- (redefine make-url
- struct:url
- url-scheme set-url-scheme!
- url-user set-url-user!
- url-host set-url-host!
- url-port set-url-port!
- url-path set-url-path!
- url-query set-url-query!
- url-fragment set-url-fragment!
- url?
-
- struct:path/param
- make-path/param
- path/param-path set-path/param-path!
- path/param-param set-path/param-param!
- path/param?
-
- get-pure-port
+ (redefine get-pure-port
get-impure-port
post-pure-port
post-impure-port
diff --git a/collects/net/url-sig.ss b/collects/net/url-sig.ss
index bc13e18160..7094f19e41 100644
--- a/collects/net/url-sig.ss
+++ b/collects/net/url-sig.ss
@@ -3,9 +3,7 @@
(provide net:url^)
(define-signature net:url^
- ((struct url (scheme user host port path query fragment))
- (struct path/param (path param))
- get-pure-port
+ (get-pure-port
get-impure-port
post-pure-port
post-impure-port
diff --git a/collects/net/url-unit.ss b/collects/net/url-unit.ss
index 9aec7803f7..82a3220fd9 100644
--- a/collects/net/url-unit.ss
+++ b/collects/net/url-unit.ss
@@ -13,6 +13,7 @@
(require (lib "file.ss")
(lib "unitsig.ss")
(lib "port.ss")
+ "url-structs.ss"
"uri-codec.ss"
"url-sig.ss"
"tcp-sig.ss")
@@ -60,9 +61,6 @@
args)))))
(raise (make-url-exception s (current-continuation-marks))))))
- (define-struct url (scheme user host port path query fragment))
- (define-struct path/param (path param))
-
(define url->string
(lambda (url)
(let ((scheme (url-scheme url))
diff --git a/collects/net/url.ss b/collects/net/url.ss
index 53e3df90f1..a82a90f402 100644
--- a/collects/net/url.ss
+++ b/collects/net/url.ss
@@ -1,6 +1,7 @@
(module url mzscheme
(require (lib "unitsig.ss")
(lib "contract.ss")
+ "url-struct.ss"
"url-sig.ss"
"url-unit.ss"
"tcp-sig.ss"
@@ -15,16 +16,17 @@
[U : net:url^ (url@ T)])
(export (open U))))
+ (provide
+ (struct url (scheme
+ user
+ host
+ port
+ path
+ query
+ fragment))
+ (struct path/param (path param)))
+
(provide/contract
- (struct url ([scheme (union false/c string?)]
- [user (union false/c string?)]
- [host (union false/c string?)]
- [port (union false/c number?)]
- [path (listof (union string? path/param?))]
- [query (listof (cons/c symbol? string?))]
- [fragment (union false/c string?)]))
- (struct path/param ([path string?]
- [param string?]))
(string->url ((union bytes? string?) . -> . url?))
(url->string (url? . -> . string?))