[e-cvs] cvs commit: e/src/jsrc/org/erights/e/meta/org/erights/e/elib/tables EListGuardSugar.java
markm@eros.cs.jhu.edu
markm@eros.cs.jhu.edu
Sun, 11 Nov 2001 18:32:18 -0500
markm 01/11/11 18:32:18
Modified: src/esrc/com/skyhunter/e/lang vatMakerAuthor.emaker
src/esrc/com/skyhunter/ex/swing capFrameMakerAuthor.emaker
dialogVowMakerAuthor.emaker
src/esrc/com/skyhunter/installer
agreedCapsPetsVowMakerAuthor.emaker
src/esrc/org/erights/e/elang/interp require.emaker
src/esrc/scripts eBrowser.e eConfig.e eDeskPlus.e echat.e
src/jsrc/net/captp/jcomm ImportDesc.java IncomingDesc.java
NewFarDesc.java NewRemotePromiseDesc.java
NonceLocator.java
src/jsrc/org/erights/e/elang/interp Loader.java
LoaderScope.java PackageScope.java
UnsafeLoaderScope.java
src/jsrc/org/erights/e/elang/syntax PrettyFeeder.java
src/jsrc/org/erights/e/elib/base ClassDesc.java
src/jsrc/org/erights/e/elib/deflect Deflector.java
src/jsrc/org/erights/e/elib/prim E.java
src/jsrc/org/erights/e/meta/java/lang ArrayGuardSugar.java
ByteGuardSugar.java ClassGuardSugar.java
DoubleGuardSugar.java FloatGuardSugar.java
IntegerGuardSugar.java InterfaceGuardSugar.java
LongGuardSugar.java ShortGuardSugar.java
StringGuardSugar.java ThrowableGuardSugar.java
VoidGuardSugar.java
src/jsrc/org/erights/e/meta/java/math
BigIntegerGuardSugar.java
src/jsrc/org/erights/e/meta/org/erights/e/elib/base
TypeDescGuardSugar.java
src/jsrc/org/erights/e/meta/org/erights/e/elib/ref
RefGuardSugar.java
src/jsrc/org/erights/e/meta/org/erights/e/elib/slot
SlotGuardGuardSugar.java ValueGuardGuardSugar.java
src/jsrc/org/erights/e/meta/org/erights/e/elib/tables
EListGuardSugar.java
Log:
reformed 'require'
Revision Changes Path
1.6 +3 -3 e/src/esrc/com/skyhunter/e/lang/vatMakerAuthor.emaker
Index: vatMakerAuthor.emaker
===================================================================
RCS file: /cvs/e/src/esrc/com/skyhunter/e/lang/vatMakerAuthor.emaker,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- vatMakerAuthor.emaker 2001/09/12 00:01:50 1.5
+++ vatMakerAuthor.emaker 2001/11/11 23:32:16 1.6
@@ -15,14 +15,14 @@
# <p>
# This is a very early draft of the concept, and is expected to change
# radically in non-upwards compatible ways.
-#
+#
# @author Marc Stiegler
# @author Mark S. Miller
# @author Terry Stanley
def vatMakerAuthor(unsafe__uriGetter, introducer, traceln) :near {
- # XXX Kludge: The sourceCode expression must not print to stdout or
- # stderr when it's evaluated, although the objects it spawns may do
+ # XXX Kludge: The sourceCode expression must not print to stdout or
+ # stderr when it's evaluated, although the objects it spawns may do
# so later
class vatMaker(sourceCode, args, props, vatName) :near {
def io__uriGetter := <unsafe:java.io.*>
1.4 +1 -1 e/src/esrc/com/skyhunter/ex/swing/capFrameMakerAuthor.emaker
Index: capFrameMakerAuthor.emaker
===================================================================
RCS file: /cvs/e/src/esrc/com/skyhunter/ex/swing/capFrameMakerAuthor.emaker,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- capFrameMakerAuthor.emaker 2001/11/10 19:40:36 1.3
+++ capFrameMakerAuthor.emaker 2001/11/11 23:32:16 1.4
@@ -51,7 +51,7 @@
def contentPane := <swing:JPanel> new()
def powerPane := <swing:JPanel> new()
def innerPane := JPanel`$contentPane.Y
- $powerPane`
+ $powerPane`
innerFrame getContentPane() add(innerPane)
powerboxController reactToPowerbar(powerPane)
def capFrame {
1.3 +2 -2 e/src/esrc/com/skyhunter/ex/swing/dialogVowMakerAuthor.emaker
Index: dialogVowMakerAuthor.emaker
===================================================================
RCS file: /cvs/e/src/esrc/com/skyhunter/ex/swing/dialogVowMakerAuthor.emaker,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- dialogVowMakerAuthor.emaker 2001/11/10 19:40:36 1.2
+++ dialogVowMakerAuthor.emaker 2001/11/11 23:32:16 1.3
@@ -64,8 +64,8 @@
def buttonPane := uiTools makeGridRow(buttons)
def dialogPane :=
JPanel`$labelScrollPane.X.Y
- $myTextField
- $buttonPane `
+ $myTextField
+ $buttonPane `
#traceln("made buttons")
def border := <awt:BorderLayout> new()
mainPane setLayout(border)
1.4 +7 -7 e/src/esrc/com/skyhunter/installer/agreedCapsPetsVowMakerAuthor.emaker
Index: agreedCapsPetsVowMakerAuthor.emaker
===================================================================
RCS file: /cvs/e/src/esrc/com/skyhunter/installer/agreedCapsPetsVowMakerAuthor.emaker,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- agreedCapsPetsVowMakerAuthor.emaker 2001/11/10 19:40:37 1.3
+++ agreedCapsPetsVowMakerAuthor.emaker 2001/11/11 23:32:16 1.4
@@ -100,7 +100,7 @@
def helpLabel := <swing:JLabel> new(stringDataKit getUrlProtocolHelp())
def urlProtocolsMainPanel :=
JPanel`$urlProtocolsListPanel
- $helpLabel.Y`
+ $helpLabel.Y`
urlProtocolsMainPanel setName("Web")
capTabsPane add(urlProtocolsMainPanel)
}
@@ -141,10 +141,10 @@
def helpLabel := <swing:JLabel> new(stringDataKit getPetHelp())
def petListPanel :=
JPanel`$petNameLabel $petNameField.X
- ${lbl(" ")} ${lbl(" ")}
- $petSuffixLabel $petSuffixField
- ${lbl(" ")} ${lbl(" ")}
- $petIconLabel $petIconField`
+ ${lbl(" ")} ${lbl(" ")}
+ $petSuffixLabel $petSuffixField
+ ${lbl(" ")} ${lbl(" ")}
+ $petIconLabel $petIconField`
def petMainPanel :=
JPanel`$petListPanel
$helpLabel.Y`
@@ -196,8 +196,8 @@
def spacer := <swing:JLabel> new(" ")
def realPane :=
JPanel`$capTabsPane.Y
- $spacer
- $grantButton `
+ $spacer
+ $grantButton `
frame getContentPane() add(realPane)
frame pack()
frame setSize(600,600)
1.10 +21 -4 e/src/esrc/org/erights/e/elang/interp/require.emaker
Index: require.emaker
===================================================================
RCS file: /cvs/e/src/esrc/org/erights/e/elang/interp/require.emaker,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- require.emaker 2001/03/11 04:32:56 1.9
+++ require.emaker 2001/11/11 23:32:16 1.10
@@ -3,13 +3,24 @@
# condition isn't true, the complaint is thrown
#
+def EE := <import:org.erights.e.elib.prim.E>
+
def require0 {
- to (cond, aThunk) {
- if (! cond) { throw(aThunk()) }
- }
to (cond) {
- require0(cond, thunk{"required condition failed"})
+ EE require(cond)
+ }
+ to (cond, problem) {
+ EE require(cond, problem)
}
+ match [`run`, [cond, prob0] + probRest] {
+ if (! cond) {
+ var problem := prob0
+ for prob in probRest {
+ problem := problem + prob
+ }
+ EE require(false, problem)
+ }
+ }
}
? require(2 == 3, thunk{"foo"})
@@ -29,3 +40,9 @@
# <interp> evalPrint(e`require run(Ref same(2, 3))`)
? require(2 == 2)
+ ? require(2 == 3, "foobar")
+ # problem: foobar
+ #
+ # <import:org.erights.e.elib.prim.E> require(false, "foobar")
+ # <require0>(false, "foobar")
+ # <interactive interp> evalPrint(e`require run(equalizer isSame(2, 3), "foobar")`)
1.47 +2 -2 e/src/esrc/scripts/eBrowser.e
Index: eBrowser.e
===================================================================
RCS file: /cvs/e/src/esrc/scripts/eBrowser.e,v
retrieving revision 1.46
retrieving revision 1.47
diff -u -r1.46 -r1.47
--- eBrowser.e 2001/11/10 23:51:51 1.46
+++ eBrowser.e 2001/11/11 23:32:16 1.47
@@ -680,8 +680,8 @@
JPanel`$saveButton $reformatButton $s1 $pasteUpdocButton $elmerButton $s2 $runHiLiteButton $runButton $s3 $gotoButton $findButton $searchField.X`
def realPane :=
JPanel`$buttonPane
- $outLineSplitter.X.Y
- $statusPane `
+ $outLineSplitter.X.Y
+ $statusPane `
# def text replacer function
def replaceSelectionHilite(replacement) {
1.15 +1 -1 e/src/esrc/scripts/eConfig.e
Index: eConfig.e
===================================================================
RCS file: /cvs/e/src/esrc/scripts/eConfig.e,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- eConfig.e 2001/03/26 19:39:44 1.14
+++ eConfig.e 2001/11/11 23:32:16 1.15
@@ -86,7 +86,7 @@
<swing:SwingConstants> CENTER()])
root getContentPane() add(JPanel`$label.Y
- ${JPanel``} $okButton ${JPanel``}`)
+ ${JPanel``} $okButton ${JPanel``}`)
def ClassLoader := <unsafe:java.lang.ClassLoader>
def iconURL := <resource:org/erights/e/icons/carrot2.gif>
1.3 +2 -2 e/src/esrc/scripts/eDeskPlus.e
Index: eDeskPlus.e
===================================================================
RCS file: /cvs/e/src/esrc/scripts/eDeskPlus.e,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- eDeskPlus.e 2001/08/08 05:39:17 1.2
+++ eDeskPlus.e 2001/11/11 23:32:16 1.3
@@ -523,8 +523,8 @@
JPanel`$refreshButton $upButton $homeButton $gotoButton $fullPathTextField.X `
def realPane :=
JPanel`$toolbarPane
- $filesDirsSplitPane.Y
- $statusPanel`
+ $filesDirsSplitPane.Y
+ $statusPanel`
mainPane add(realPane)
traceln("about to call refreshLocal")
refreshLocal()
1.13 +5 -6 e/src/esrc/scripts/echat.e
Index: echat.e
===================================================================
RCS file: /cvs/e/src/esrc/scripts/echat.e,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- echat.e 2001/08/20 05:07:43 1.12
+++ echat.e 2001/11/11 23:32:16 1.13
@@ -178,12 +178,11 @@
def sendMessageButton := newButton("Send", "send")
sendMessageButton setEnabled(false)
- chatPane add(JPanel`
- $setNameButton
- $offerChatButton $findFriendButton
- $chatScroller.Y
- $nextMessageBox
- $sendMessageButton`)
+ chatPane add(JPanel`$setNameButton
+ $offerChatButton $findFriendButton
+ $chatScroller.Y
+ $nextMessageBox
+ $sendMessageButton`)
chatWin pack()
chatWin show()
1.7 +3 -3 e/src/jsrc/net/captp/jcomm/ImportDesc.java
Index: ImportDesc.java
===================================================================
RCS file: /cvs/e/src/jsrc/net/captp/jcomm/ImportDesc.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- ImportDesc.java 2001/10/02 01:29:17 1.6
+++ ImportDesc.java 2001/11/11 23:32:16 1.7
@@ -21,6 +21,7 @@
import org.erights.e.develop.trace.Trace;
import org.erights.e.elib.ref.Ref;
+import org.erights.e.elib.prim.E;
/**
* The re-encoding of an exported reference. <p>
@@ -41,9 +42,8 @@
*
*/
private void validate() {
- if (myImportPos <= 0) {
- throw new RuntimeException("must be positive: " + myImportPos);
- }
+ E.requireSI(myImportPos >= 1,
+ "must be positive: ", myImportPos);
}
/**
1.7 +3 -4 e/src/jsrc/net/captp/jcomm/IncomingDesc.java
Index: IncomingDesc.java
===================================================================
RCS file: /cvs/e/src/jsrc/net/captp/jcomm/IncomingDesc.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- IncomingDesc.java 2001/10/02 01:29:17 1.6
+++ IncomingDesc.java 2001/11/11 23:32:16 1.7
@@ -20,6 +20,7 @@
*/
import org.erights.e.develop.trace.Trace;
+import org.erights.e.elib.prim.E;
/**
* The encoding of an remote ref over the wire to the ref's
@@ -42,10 +43,8 @@
*
*/
private void validate() {
- if (myIncomingPos == 0) {
- throw new RuntimeException("can't directly reify nonce locator: "
- + myIncomingPos);
- }
+ E.requireSI(myIncomingPos != 0,
+ "can't directly reify nonce locator: ", myIncomingPos);
}
/**
1.8 +5 -8 e/src/jsrc/net/captp/jcomm/NewFarDesc.java
Index: NewFarDesc.java
===================================================================
RCS file: /cvs/e/src/jsrc/net/captp/jcomm/NewFarDesc.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- NewFarDesc.java 2001/10/02 01:29:17 1.7
+++ NewFarDesc.java 2001/11/11 23:32:16 1.8
@@ -21,6 +21,7 @@
import org.erights.e.develop.trace.Trace;
import org.erights.e.elib.ref.Ref;
+import org.erights.e.elib.prim.E;
import java.math.BigInteger;
@@ -46,14 +47,10 @@
*
*/
private void validate() {
- if (myImportPos <= 0) {
- throw new RuntimeException("importPos must be positive: " +
- myImportPos);
- }
- if (null == mySwissHash || mySwissHash.signum() <= 0) {
- throw new RuntimeException("swissHash must be positive: " +
- mySwissHash);
- }
+ E.requireSI(myImportPos >= 1,
+ "importPos must be positive: ", myImportPos);
+ E.require(null != mySwissHash && mySwissHash.signum() >= 1,
+ "swissHash must be positive: ", mySwissHash);
}
/**
1.5 +7 -12 e/src/jsrc/net/captp/jcomm/NewRemotePromiseDesc.java
Index: NewRemotePromiseDesc.java
===================================================================
RCS file: /cvs/e/src/jsrc/net/captp/jcomm/NewRemotePromiseDesc.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- NewRemotePromiseDesc.java 2001/10/02 01:29:17 1.4
+++ NewRemotePromiseDesc.java 2001/11/11 23:32:16 1.5
@@ -20,6 +20,7 @@
*/
import org.erights.e.develop.trace.Trace;
+import org.erights.e.elib.prim.E;
import java.math.BigInteger;
@@ -46,18 +47,12 @@
*
*/
private void validate() {
- if (myImportPos <= 0) {
- throw new RuntimeException("importPos must be positive: " +
- myImportPos);
- }
- if (myRdrPos >= 0) {
- throw new RuntimeException("rdrPos must be negative: " +
- myRdrPos);
- }
- if (null == myRdrBase || myRdrBase.signum() <= 0) {
- throw new RuntimeException("rdrBase must be positive: " +
- myRdrBase);
- }
+ E.requireSI(myImportPos >= 1,
+ "importPos must be positive: ", myImportPos);
+ E.requireSI(myRdrPos <= -1,
+ "rdrPos must be negative: ", myRdrPos);
+ E.require(null != myRdrBase && myRdrBase.signum() >= 1,
+ "rdrBase must be positive: ", myRdrBase);
}
/**
1.10 +4 -6 e/src/jsrc/net/captp/jcomm/NonceLocator.java
Index: NonceLocator.java
===================================================================
RCS file: /cvs/e/src/jsrc/net/captp/jcomm/NonceLocator.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- NonceLocator.java 2001/10/02 01:29:17 1.9
+++ NonceLocator.java 2001/11/11 23:32:16 1.10
@@ -102,16 +102,14 @@
BigInteger nonce,
BigInteger swissHash)
{
- if (! Ref.isNear(gift)) {
- throw new RuntimeException("not Near: " + gift);
- }
+ E.require(Ref.isNear(gift),
+ "Must be Near: ", gift);
//If gift isn't Selfish, this will throw an exception,
//which is as it should be.
BigInteger giftSwiss = mySwissTable.getIdentity(gift);
BigInteger giftHash = BigIntegerSugar.cryptoHash(giftSwiss);
- if (! giftHash.equals(swissHash)) {
- throw new RuntimeException("wrong hash: " + swissHash);
- }
+ E.require(giftHash.equals(swissHash),
+ "wrong hash: ", swissHash);
return myNGifts.provideFor(gift, recipID, nonce, swissHash);
}
1.4 +1 -9 e/src/jsrc/org/erights/e/elang/interp/Loader.java
Index: Loader.java
===================================================================
RCS file: /cvs/e/src/jsrc/org/erights/e/elang/interp/Loader.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- Loader.java 2001/11/10 23:51:51 1.3
+++ Loader.java 2001/11/11 23:32:16 1.4
@@ -25,19 +25,11 @@
import java.io.IOException;
/**
- * Provides access to the java fully-qualified class namespace as a scope
+ * Provides access to the java fully-qualified class namespace
*
* @author <a href="mailto:markm@erights.org">Mark S. Miller</a>
*/
public abstract class Loader implements EPrintable {
public abstract Object get(String name);
-
- /**
- *
- */
- public void printOn(TextWriter out) throws IOException {
- out.print("<import:*>");
- }
-
}
1.38 +1 -2 e/src/jsrc/org/erights/e/elang/interp/LoaderScope.java
Index: LoaderScope.java
===================================================================
RCS file: /cvs/e/src/jsrc/org/erights/e/elang/interp/LoaderScope.java,v
retrieving revision 1.37
retrieving revision 1.38
diff -u -r1.37 -r1.38
--- LoaderScope.java 2001/11/11 00:15:30 1.37
+++ LoaderScope.java 2001/11/11 23:32:16 1.38
@@ -39,7 +39,7 @@
import java.net.URL;
/**
- * Provides access to the java fully-qualified class namespace as a scope
+ * The Loader bound to import__uriGetter.
*
* @author <a href="mailto:markm@erights.org">Mark S. Miller</a>
*/
@@ -200,5 +200,4 @@
public void printOn(TextWriter out) throws IOException {
out.print("<import:*>");
}
-
}
1.24 +3 -2 e/src/jsrc/org/erights/e/elang/interp/PackageScope.java
Index: PackageScope.java
===================================================================
RCS file: /cvs/e/src/jsrc/org/erights/e/elang/interp/PackageScope.java,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -r1.23 -r1.24
--- PackageScope.java 2001/11/11 00:15:30 1.23
+++ PackageScope.java 2001/11/11 23:32:16 1.24
@@ -24,7 +24,7 @@
import java.io.IOException;
/**
- * Provides access to the java fully-qualified class namespace as a scope
+ * The subtree of a Loader under a package-prefix.
*
* @author <a href="mailto:markm@erights.org">Mark S. Miller</a>
*/
@@ -41,7 +41,8 @@
*/
/*package*/ PackageScope(Loader substrate,
String protocol,
- String fqName) {
+ String fqName)
+ {
mySubstrate = substrate;
myProtocol = protocol;
if (!fqName.endsWith(".*")) {
1.11 +1 -1 e/src/jsrc/org/erights/e/elang/interp/UnsafeLoaderScope.java
Index: UnsafeLoaderScope.java
===================================================================
RCS file: /cvs/e/src/jsrc/org/erights/e/elang/interp/UnsafeLoaderScope.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- UnsafeLoaderScope.java 2001/11/11 00:15:30 1.10
+++ UnsafeLoaderScope.java 2001/11/11 23:32:16 1.11
@@ -32,7 +32,7 @@
import java.io.IOException;
/**
- * Provides access to the java fully-qualified class namespace as a scope
+ * The Loader bound to unsafe__uriGetter.
*
* @author <a href="mailto:markm@erights.org">Mark S. Miller</a>
*/
1.4 +2 -2 e/src/jsrc/org/erights/e/elang/syntax/PrettyFeeder.java
Index: PrettyFeeder.java
===================================================================
RCS file: /cvs/e/src/jsrc/org/erights/e/elang/syntax/PrettyFeeder.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- PrettyFeeder.java 2001/11/10 19:40:42 1.3
+++ PrettyFeeder.java 2001/11/11 23:32:17 1.4
@@ -52,8 +52,8 @@
PrettyFeeder feeder = new PrettyFeeder(sourceCode);
ELexer lexer = new ELexer(feeder, true, false);
- //XXX once we get rid of parser-to-lexer feedback, pretty() should
- //only require the lexer.
+ //XXX now that we've gotten rid of parser-to-lexer feedback, pretty()
+ //should only require the lexer.
EParser parser = new EParser(lexer);
try {
parser.parse(); //don't care about the result
1.28 +0 -9 e/src/jsrc/org/erights/e/elib/base/ClassDesc.java
Index: ClassDesc.java
===================================================================
RCS file: /cvs/e/src/jsrc/org/erights/e/elib/base/ClassDesc.java,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -r1.27 -r1.28
--- ClassDesc.java 2001/11/10 19:40:43 1.27
+++ ClassDesc.java 2001/11/11 23:32:17 1.28
@@ -275,15 +275,6 @@
}
/**
- * For use by subclasses. XXX should move to a more general place.
- */
- static protected void require(boolean cond, String msg) {
- if (!cond) {
- throw new RuntimeException(msg);
- }
- }
-
- /**
*
*/
static private final Class[] IntegralTypeList = {
1.13 +2 -4 e/src/jsrc/org/erights/e/elib/deflect/Deflector.java
Index: Deflector.java
===================================================================
RCS file: /cvs/e/src/jsrc/org/erights/e/elib/deflect/Deflector.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- Deflector.java 2001/11/10 19:40:44 1.12
+++ Deflector.java 2001/11/11 23:32:17 1.13
@@ -101,9 +101,7 @@
/**
* Deflects target to face by wrapping it in a Deflector, and wrapping
- * that in a deflection (a Proxy). If face is or extends EventListener,
- * then we use an EventualDeflector. Otherwise we use an
- * ImmediateDeflector. target must be NEAR.
+ * that in a deflection (a Proxy). target must be NEAR.
*/
static public Object deflect(Object target, Class face) {
target = Ref.resolution(target);
@@ -132,7 +130,7 @@
/**
* Makes a deflector which will wrap and deflect a Callable.
*/
- public Deflector(Callable target) {
+ private Deflector(Callable target) {
myDeflected = target;
}
1.61 +77 -0 e/src/jsrc/org/erights/e/elib/prim/E.java
Index: E.java
===================================================================
RCS file: /cvs/e/src/jsrc/org/erights/e/elib/prim/E.java,v
retrieving revision 1.60
retrieving revision 1.61
diff -u -r1.60 -r1.61
--- E.java 2001/11/10 19:40:45 1.60
+++ E.java 2001/11/11 23:32:17 1.61
@@ -24,6 +24,8 @@
import org.erights.e.elib.base.Callable;
import org.erights.e.elib.base.ClassDesc;
import org.erights.e.elib.base.Script;
+import org.erights.e.elib.base.Thunk;
+import org.erights.e.elib.base.Ejector;
import org.erights.e.elib.eio.TextWriter;
import org.erights.e.elib.ref.Ref;
import org.erights.e.elib.ref.Resolver;
@@ -567,5 +569,80 @@
*/
static public RuntimeException asRTE(Object problem) {
return (RuntimeException)as(problem, RuntimeException.class);
+ }
+
+ /**
+ * 'problem' defaults to "required condition failed"
+ */
+ static public void require(boolean cond) {
+ require(cond, "required condition failed");
+ }
+
+ /**
+ * If cond isn't true, report problem or problem().
+ * <p>
+ * If problem coerces to a Thunk, then reassign problem to be the result
+ * of calling this thunk with 'run()'. Then, in either case, coerce this
+ * problem to a RuntimeException and throw it.
+ */
+ static public void require(boolean cond, Object problem) {
+ if (cond) {
+ return;
+ }
+ Thunk optThunk = null;
+ Ejector ej = new Ejector();
+ try {
+ optThunk = (Thunk)E.as(problem, Thunk.class, ej);
+ } catch (Throwable t) {
+ //rethrows if not this Ejector's Ejection
+ ej.result(t);
+ //do nothing
+ } finally {
+ ej.disable();
+ }
+ if (null != optThunk) {
+ problem = optThunk.run();
+ }
+ throw asRTE(problem);
+ }
+
+ /**
+ * If cond isn't true, then 'require(false, prob0 + prob1)'
+ */
+ static public void require(boolean cond,
+ Object prob0,
+ Object prob1)
+ {
+ if (cond) {
+ return;
+ }
+ require(false, E.call(prob0, "add", prob1));
+ }
+
+ /**
+ * For use only from Java: Optimizes for a common special case -- require
+ * with a <bold>S</bold>tring and an <bold>i</bold>nt.
+ */
+ static public void requireSI(boolean cond, String prob, int i) {
+ if (cond) {
+ return;
+ }
+ require(false, prob + i);
+ }
+
+ /**
+ * If cond isn't true, then 'require(false, prob0 + prob1 + prob2)'
+ */
+ static public void require(boolean cond,
+ Object prob0,
+ Object prob1,
+ Object prob2)
+ {
+ if (cond) {
+ return;
+ }
+ require(false, E.call(E.call(prob0, "add", prob1),
+ "add",
+ prob2));
}
}
1.9 +2 -2 e/src/jsrc/org/erights/e/meta/java/lang/ArrayGuardSugar.java
Index: ArrayGuardSugar.java
===================================================================
RCS file: /cvs/e/src/jsrc/org/erights/e/meta/java/lang/ArrayGuardSugar.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- ArrayGuardSugar.java 2001/10/02 23:38:32 1.8
+++ ArrayGuardSugar.java 2001/11/11 23:32:17 1.9
@@ -41,8 +41,8 @@
*/
public ArrayGuardSugar(Class clazz) {
super(clazz);
- require(clazz.isArray(),
- "internal: " + clazz + " must be an array type");
+ E.require(clazz.isArray(),
+ "internal: " + clazz + " must be an array type");
}
/**
1.10 +3 -2 e/src/jsrc/org/erights/e/meta/java/lang/ByteGuardSugar.java
Index: ByteGuardSugar.java
===================================================================
RCS file: /cvs/e/src/jsrc/org/erights/e/meta/java/lang/ByteGuardSugar.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- ByteGuardSugar.java 2001/11/10 19:40:50 1.9
+++ ByteGuardSugar.java 2001/11/11 23:32:17 1.10
@@ -23,6 +23,7 @@
import org.erights.e.elib.base.ClassDesc;
import org.erights.e.elib.util.OneArgFunc;
+import org.erights.e.elib.prim.E;
/**
*
@@ -36,8 +37,8 @@
*/
public ByteGuardSugar(Class clazz) {
super(clazz);
- require(Byte.class == clazz,
- "internal: " + clazz + " must represent the 'byte' type");
+ E.require(Byte.class == clazz,
+ "internal: " + clazz + " must represent the 'byte' type");
}
/**
1.8 +3 -2 e/src/jsrc/org/erights/e/meta/java/lang/ClassGuardSugar.java
Index: ClassGuardSugar.java
===================================================================
RCS file: /cvs/e/src/jsrc/org/erights/e/meta/java/lang/ClassGuardSugar.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- ClassGuardSugar.java 2001/09/06 09:55:55 1.7
+++ ClassGuardSugar.java 2001/11/11 23:32:17 1.8
@@ -24,6 +24,7 @@
import org.erights.e.elib.base.Callable;
import org.erights.e.elib.base.ClassDesc;
import org.erights.e.elib.util.OneArgFunc;
+import org.erights.e.elib.prim.E;
/**
*
@@ -42,8 +43,8 @@
*/
public ClassGuardSugar(Class clazz) {
super(clazz);
- require(Class.class == clazz,
- "internal: " + clazz + " must be Class.class");
+ E.require(Class.class == clazz,
+ "internal: " + clazz + " must be Class.class");
}
/**
1.11 +3 -2 e/src/jsrc/org/erights/e/meta/java/lang/DoubleGuardSugar.java
Index: DoubleGuardSugar.java
===================================================================
RCS file: /cvs/e/src/jsrc/org/erights/e/meta/java/lang/DoubleGuardSugar.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- DoubleGuardSugar.java 2001/11/10 19:40:50 1.10
+++ DoubleGuardSugar.java 2001/11/11 23:32:17 1.11
@@ -23,6 +23,7 @@
import org.erights.e.elib.base.ClassDesc;
import org.erights.e.elib.util.OneArgFunc;
+import org.erights.e.elib.prim.E;
/**
*
@@ -36,8 +37,8 @@
*/
public DoubleGuardSugar(Class clazz) {
super(clazz);
- require(Double.class == clazz,
- "internal: " + clazz + " must represent the 'double' type");
+ E.require(Double.class == clazz,
+ "internal: " + clazz + " must represent the 'double' type");
}
/**
1.11 +3 -2 e/src/jsrc/org/erights/e/meta/java/lang/FloatGuardSugar.java
Index: FloatGuardSugar.java
===================================================================
RCS file: /cvs/e/src/jsrc/org/erights/e/meta/java/lang/FloatGuardSugar.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- FloatGuardSugar.java 2001/11/10 19:40:50 1.10
+++ FloatGuardSugar.java 2001/11/11 23:32:17 1.11
@@ -23,6 +23,7 @@
import org.erights.e.elib.base.ClassDesc;
import org.erights.e.elib.util.OneArgFunc;
+import org.erights.e.elib.prim.E;
/**
*
@@ -36,8 +37,8 @@
*/
public FloatGuardSugar(Class clazz) {
super(clazz);
- require(Float.class == clazz,
- "internal: " + clazz + " must be a float32 type");
+ E.require(Float.class == clazz,
+ "internal: " + clazz + " must be a float32 type");
}
/**
1.10 +3 -2 e/src/jsrc/org/erights/e/meta/java/lang/IntegerGuardSugar.java
Index: IntegerGuardSugar.java
===================================================================
RCS file: /cvs/e/src/jsrc/org/erights/e/meta/java/lang/IntegerGuardSugar.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- IntegerGuardSugar.java 2001/11/10 19:40:50 1.9
+++ IntegerGuardSugar.java 2001/11/11 23:32:17 1.10
@@ -23,6 +23,7 @@
import org.erights.e.elib.base.ClassDesc;
import org.erights.e.elib.util.OneArgFunc;
+import org.erights.e.elib.prim.E;
/**
*
@@ -36,8 +37,8 @@
*/
public IntegerGuardSugar(Class clazz) {
super(clazz);
- require(Integer.class == clazz,
- "internal: " + clazz + " must be an 'int' (int32) type");
+ E.require(Integer.class == clazz,
+ "internal: " + clazz + " must be an 'int' (int32) type");
}
/**
1.11 +3 -2 e/src/jsrc/org/erights/e/meta/java/lang/InterfaceGuardSugar.java
Index: InterfaceGuardSugar.java
===================================================================
RCS file: /cvs/e/src/jsrc/org/erights/e/meta/java/lang/InterfaceGuardSugar.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- InterfaceGuardSugar.java 2001/10/02 23:38:32 1.10
+++ InterfaceGuardSugar.java 2001/11/11 23:32:17 1.11
@@ -25,6 +25,7 @@
import org.erights.e.elib.base.ClassDesc;
import org.erights.e.elib.deflect.Deflector;
import org.erights.e.elib.util.OneArgFunc;
+import org.erights.e.elib.prim.E;
/**
* {@link Callable}s (eg, objects defined in the E language) coerce to
@@ -40,8 +41,8 @@
*/
public InterfaceGuardSugar(Class clazz) {
super(clazz);
- require(clazz.isInterface(),
- "internal: " + clazz + " must be an interface type");
+ E.require(clazz.isInterface(),
+ "internal: " + clazz + " must be an interface type");
}
/**
1.10 +3 -2 e/src/jsrc/org/erights/e/meta/java/lang/LongGuardSugar.java
Index: LongGuardSugar.java
===================================================================
RCS file: /cvs/e/src/jsrc/org/erights/e/meta/java/lang/LongGuardSugar.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- LongGuardSugar.java 2001/11/10 19:40:50 1.9
+++ LongGuardSugar.java 2001/11/11 23:32:17 1.10
@@ -23,6 +23,7 @@
import org.erights.e.elib.base.ClassDesc;
import org.erights.e.elib.util.OneArgFunc;
+import org.erights.e.elib.prim.E;
/**
*
@@ -36,8 +37,8 @@
*/
public LongGuardSugar(Class clazz) {
super(clazz);
- require(Long.class == clazz,
- "internal: " + clazz + " must be a 'long' type");
+ E.require(Long.class == clazz,
+ "internal: " + clazz + " must be a 'long' type");
}
/**
1.10 +3 -2 e/src/jsrc/org/erights/e/meta/java/lang/ShortGuardSugar.java
Index: ShortGuardSugar.java
===================================================================
RCS file: /cvs/e/src/jsrc/org/erights/e/meta/java/lang/ShortGuardSugar.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- ShortGuardSugar.java 2001/11/10 19:40:50 1.9
+++ ShortGuardSugar.java 2001/11/11 23:32:17 1.10
@@ -23,6 +23,7 @@
import org.erights.e.elib.base.ClassDesc;
import org.erights.e.elib.util.OneArgFunc;
+import org.erights.e.elib.prim.E;
/**
*
@@ -36,8 +37,8 @@
*/
public ShortGuardSugar(Class clazz) {
super(clazz);
- require(Short.class == clazz,
- "internal: " + clazz + " must be a 'short' type");
+ E.require(Short.class == clazz,
+ "internal: " + clazz + " must be a 'short' type");
}
/**
1.9 +3 -2 e/src/jsrc/org/erights/e/meta/java/lang/StringGuardSugar.java
Index: StringGuardSugar.java
===================================================================
RCS file: /cvs/e/src/jsrc/org/erights/e/meta/java/lang/StringGuardSugar.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- StringGuardSugar.java 2001/10/01 08:31:05 1.8
+++ StringGuardSugar.java 2001/11/11 23:32:17 1.9
@@ -24,6 +24,7 @@
import org.erights.e.elib.base.ClassDesc;
import org.erights.e.elib.tables.Twine;
import org.erights.e.elib.util.OneArgFunc;
+import org.erights.e.elib.prim.E;
/**
* Twine coerces to String by becoming bare.
@@ -37,8 +38,8 @@
*/
public StringGuardSugar(Class clazz) {
super(clazz);
- require(String.class == clazz,
- "internal: " + clazz + " must be String.class");
+ E.require(String.class == clazz,
+ "internal: " + clazz + " must be String.class");
}
/**
1.4 +3 -2 e/src/jsrc/org/erights/e/meta/java/lang/ThrowableGuardSugar.java
Index: ThrowableGuardSugar.java
===================================================================
RCS file: /cvs/e/src/jsrc/org/erights/e/meta/java/lang/ThrowableGuardSugar.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- ThrowableGuardSugar.java 2001/11/10 19:40:50 1.3
+++ ThrowableGuardSugar.java 2001/11/11 23:32:17 1.4
@@ -24,6 +24,7 @@
import org.erights.e.elib.tables.Twine;
import org.erights.e.elib.util.OneArgFunc;
import org.erights.e.elib.util.TwineException;
+import org.erights.e.elib.prim.E;
/**
* Coerces Strings, Twine, and Throwables to kinds of Throwbles.
@@ -40,8 +41,8 @@
*/
public ThrowableGuardSugar(Class clazz) {
super(clazz);
- require(Throwable.class.isAssignableFrom(clazz),
- "internal: " + clazz + " must be a type of Throwable");
+ E.require(Throwable.class.isAssignableFrom(clazz),
+ "internal: " + clazz + " must be a type of Throwable");
}
/**
1.8 +3 -2 e/src/jsrc/org/erights/e/meta/java/lang/VoidGuardSugar.java
Index: VoidGuardSugar.java
===================================================================
RCS file: /cvs/e/src/jsrc/org/erights/e/meta/java/lang/VoidGuardSugar.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- VoidGuardSugar.java 2001/11/10 19:40:50 1.7
+++ VoidGuardSugar.java 2001/11/11 23:32:17 1.8
@@ -23,6 +23,7 @@
import org.erights.e.elib.base.ClassDesc;
import org.erights.e.elib.util.OneArgFunc;
+import org.erights.e.elib.prim.E;
/**
*
@@ -36,8 +37,8 @@
*/
public VoidGuardSugar(Class clazz) {
super(clazz);
- require(Void.class == clazz,
- "internal: " + clazz + " must represent the 'void' type");
+ E.require(Void.class == clazz,
+ "internal: " + clazz + " must represent the 'void' type");
}
/**
1.8 +3 -2 e/src/jsrc/org/erights/e/meta/java/math/BigIntegerGuardSugar.java
Index: BigIntegerGuardSugar.java
===================================================================
RCS file: /cvs/e/src/jsrc/org/erights/e/meta/java/math/BigIntegerGuardSugar.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- BigIntegerGuardSugar.java 2001/11/10 19:40:52 1.7
+++ BigIntegerGuardSugar.java 2001/11/11 23:32:17 1.8
@@ -21,6 +21,7 @@
import org.erights.e.elib.base.ClassDesc;
import org.erights.e.elib.util.OneArgFunc;
+import org.erights.e.elib.prim.E;
import java.math.BigInteger;
@@ -36,8 +37,8 @@
*/
public BigIntegerGuardSugar(Class clazz) {
super(clazz);
- require(BigInteger.class == clazz,
- "internal: " + clazz + " must be an integer type");
+ E.require(BigInteger.class == clazz,
+ "internal: " + clazz + " must be an integer type");
}
/**
1.7 +3 -2 e/src/jsrc/org/erights/e/meta/org/erights/e/elib/base/TypeDescGuardSugar.java
Index: TypeDescGuardSugar.java
===================================================================
RCS file: /cvs/e/src/jsrc/org/erights/e/meta/org/erights/e/elib/base/TypeDescGuardSugar.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- TypeDescGuardSugar.java 2001/09/06 09:55:57 1.6
+++ TypeDescGuardSugar.java 2001/11/11 23:32:17 1.7
@@ -24,6 +24,7 @@
import org.erights.e.elib.base.ClassDesc;
import org.erights.e.elib.base.TypeDesc;
import org.erights.e.elib.util.OneArgFunc;
+import org.erights.e.elib.prim.E;
/**
*
@@ -37,8 +38,8 @@
*/
public TypeDescGuardSugar(Class clazz) {
super(clazz);
- require(TypeDesc.class.isAssignableFrom(clazz),
- "internal: " + clazz + " must be a kind of TypeDesc");
+ E.require(TypeDesc.class.isAssignableFrom(clazz),
+ "internal: " + clazz + " must be a kind of TypeDesc");
}
/**
1.4 +3 -2 e/src/jsrc/org/erights/e/meta/org/erights/e/elib/ref/RefGuardSugar.java
Index: RefGuardSugar.java
===================================================================
RCS file: /cvs/e/src/jsrc/org/erights/e/meta/org/erights/e/elib/ref/RefGuardSugar.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- RefGuardSugar.java 2001/09/06 09:55:57 1.3
+++ RefGuardSugar.java 2001/11/11 23:32:17 1.4
@@ -24,6 +24,7 @@
import org.erights.e.elib.base.ClassDesc;
import org.erights.e.elib.ref.Ref;
import org.erights.e.elib.util.OneArgFunc;
+import org.erights.e.elib.prim.E;
/**
* Refines the 'coerce/2' behavior of the Ref type, so that it may be useful
@@ -43,8 +44,8 @@
*/
public RefGuardSugar(Class clazz) {
super(clazz);
- require(Ref.class.isAssignableFrom(clazz),
- "internal: " + clazz + " must be a kind of Ref");
+ E.require(Ref.class.isAssignableFrom(clazz),
+ "internal: " + clazz + " must be a kind of Ref");
}
/**
1.8 +3 -2 e/src/jsrc/org/erights/e/meta/org/erights/e/elib/slot/SlotGuardGuardSugar.java
Index: SlotGuardGuardSugar.java
===================================================================
RCS file: /cvs/e/src/jsrc/org/erights/e/meta/org/erights/e/elib/slot/SlotGuardGuardSugar.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- SlotGuardGuardSugar.java 2001/09/06 09:55:57 1.7
+++ SlotGuardGuardSugar.java 2001/11/11 23:32:17 1.8
@@ -24,6 +24,7 @@
import org.erights.e.elib.base.ClassDesc;
import org.erights.e.elib.slot.SlotGuard;
import org.erights.e.elib.util.OneArgFunc;
+import org.erights.e.elib.prim.E;
import org.erights.e.meta.java.lang.InterfaceGuardSugar;
/**
@@ -38,8 +39,8 @@
*/
public SlotGuardGuardSugar(Class clazz) {
super(SlotGuard.class); //XXX kludge, but must be an interface
- require(SlotGuard.class.isAssignableFrom(clazz),
- "internal: " + clazz + " must be a kind of SlotGuard");
+ E.require(SlotGuard.class.isAssignableFrom(clazz),
+ "internal: " + clazz + " must be a kind of SlotGuard");
}
/**
1.8 +3 -2 e/src/jsrc/org/erights/e/meta/org/erights/e/elib/slot/ValueGuardGuardSugar.java
Index: ValueGuardGuardSugar.java
===================================================================
RCS file: /cvs/e/src/jsrc/org/erights/e/meta/org/erights/e/elib/slot/ValueGuardGuardSugar.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- ValueGuardGuardSugar.java 2001/09/06 09:55:57 1.7
+++ ValueGuardGuardSugar.java 2001/11/11 23:32:17 1.8
@@ -24,6 +24,7 @@
import org.erights.e.elib.base.ClassDesc;
import org.erights.e.elib.slot.ValueGuard;
import org.erights.e.elib.util.OneArgFunc;
+import org.erights.e.elib.prim.E;
import org.erights.e.meta.java.lang.InterfaceGuardSugar;
/**
@@ -38,8 +39,8 @@
*/
public ValueGuardGuardSugar(Class clazz) {
super(ValueGuard.class); //XXX kludge, but must be an interface
- require(ValueGuard.class.isAssignableFrom(clazz),
- "internal: " + clazz + " must be a kind of ValueGuard");
+ E.require(ValueGuard.class.isAssignableFrom(clazz),
+ "internal: " + clazz + " must be a kind of ValueGuard");
}
/**
1.9 +3 -2 e/src/jsrc/org/erights/e/meta/org/erights/e/elib/tables/EListGuardSugar.java
Index: EListGuardSugar.java
===================================================================
RCS file: /cvs/e/src/jsrc/org/erights/e/meta/org/erights/e/elib/tables/EListGuardSugar.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- EListGuardSugar.java 2001/09/06 09:55:57 1.8
+++ EListGuardSugar.java 2001/11/11 23:32:18 1.9
@@ -26,6 +26,7 @@
import org.erights.e.elib.tables.EList;
import org.erights.e.elib.tables.Twine;
import org.erights.e.elib.util.OneArgFunc;
+import org.erights.e.elib.prim.E;
/**
* Refines the 'coerce/2' behavior of the EList type, so that it may be
@@ -40,8 +41,8 @@
*/
public EListGuardSugar(Class clazz) {
super(clazz);
- require(EList.class.isAssignableFrom(clazz),
- "internal: " + clazz + " must be a kind of EList");
+ E.require(EList.class.isAssignableFrom(clazz),
+ "internal: " + clazz + " must be a kind of EList");
}
/**