The root of a Please repo is identified by a .plzconfig file. This also has a number of options to control various parts of its behaviour which might be useful to tailor it to your environment.
Please looks in several locations for these files and builds it up bit by bit. In order (from lowest priority to highest):
/etc/please/plzconfig
~/.config/please/plzconfig
.plzconfig
.plzconfig_<arch>
(e.g.
.plzconfig_linux_amd64)
.plzconfig.<profile>
(if the
--profile
flag is passed)
.plzconfig.local
One would normally check in .plzconfig
(and
arch-specific equivalents if needed).
/etc/please/plzconfig
is there to facilitate
per-machine config in cases where the repo is often deleted - this is quite
common in CI systems.
Finally you normally add .plzconfig.local
to
.gitignore to allow people to override settings locally if needed.
The file format is very similar to
Git's config; it's broken into sections by headers in square brackets, and each section
contains option = value
pairs. Comments start with a
semicolon.
We'll list out the various options by section. The option names are all
case-insensitive, the values are of course case sensitive (except in the case
of boolean variables which accept various forms of
true
, false
,
yes
, no
, etc).
Various parameters can be repeated (they're noted as such below); this means
passing them multiple times in their entirety, e.g.
buildfilename = BUILD
buildfilename = BUILD.plz
Comma-separating on the same line won't generally work.
Defines the version of plz that this repo is supposed to use
currently. If it's not present or the version matches the currently
running version no special action is taken; otherwise if
SelfUpdate
is set Please will attempt to
download an appropriate version, otherwise it will issue a warning and
continue.
Note that if this is not set, you can run
plz update
to update to the latest version
available on the server.
Defines a hex-encoded sha256 checksum that the downloaded version must match. Can be specified multiple times to support different architectures.
Defines the directory Please is installed into.
Defaults to ~/.please
but you might want it
to be somewhere else if you're installing via another method.
Sets whether plz will attempt to update itself when the version set in the config file is different.
Defines the location to download Please from when self-updating. Defaults to the Please web server (https://get.please.build), but you can point it to some location of your own if you prefer to keep traffic within your network or use home-grown versions.
This is an arbitrary string that is added to the hash of every build
target. It provides a way to force a rebuild of everything when it's
changed.
We will bump the default of this whenever we think it's required -
although it's been a pretty long time now and we hope that'll
continue.
Number of parallel build operations to run.
Is overridden by the equivalent command-line flag, if that's passed.
Defaults to the number of CPUs plus two.
Location of the please repo to use by default, if not already in a please repo.
Sets the names that Please uses for its build files. Defaults to
BUILD
.
For clarity the documentation refers to them simply as BUILD files but
you could reconfigure them here to be something else.
One case this can be particularly useful is in cases where you have a
subdirectory named
build
on a case-insensitive file system like
HFS+.
Directories to blacklist when recursively searching for BUILD files
(e.g. when using plz build ...
or
similar).
This is generally useful when you have large directories within your
repo that don't need to be searched, especially things like
node_modules
that have come from external
package managers.
Directory containing experimental code. This is subject to some extra restrictions:
Files to preload by the parser before loading any BUILD files.
Since this is done before the first package is parsed they must be
files in the repository, they cannot be
subinclude()
paths.
Subinclude targets to preload by the parser before loading any BUILD files.
Subincludes can be slow so it's recommended to use PreloadBuildDefs where possible.
Contains options relating to display output. These have no impact on build output.
Whether to update the window title as things are built. This is off by default because while many Linux shells will reset it afterwards, others won't and it's not ideal for us to leave it messed up.
Whether or not to show basic system resource usage in the interactive
display. Defaults to False
.
Shell colour scheme mode, dark or light. Adapts interactive display
colours to the colour scheme mode. Defaults to
dark
.
Architecture to compile for. Defaults to the host architecture.
Timeout for build operations, in seconds. Defaults to 600 (ten minutes).
The PATH variable that will be passed to the build processes.
Defaults to /usr/local/bin:/usr/bin:/bin
but
of course can be modified if you need to get binaries from other
locations.
The build config to use when one is not chosen on the command line.
Defaults to opt
.
The build config to use when one is chosen and a required target does
not have one by the same name. Also defaults to
opt
.
A list of environment variables to pass from the current environment
to build rules. For example
PassEnv = HTTP_PROXY
would copy your HTTP_PROXY environment variable to the build env for
any rules.
Similar to PassEnv. A list of environment variables to pass from the
current environment to build rules. For example
PassUnsafeEnv = HTTP_PROXY
would copy your
HTTP_PROXY environment variable to the build env for any rules. Unlike
PassEnv, environment variable values are not used to calculate build
target hashes.
Activates sandboxing for build actions, which isolates them
from network access, IPC and some aspects of the filesystem. Currently
only works on Linux. Defaults to False
.
Deprecated from v16: use sandbox.build instead.
Sets the language passed to build rules when building. This can be
important for some tools (although hopefully not many) - we've mostly
observed it with Sass. Defaults to
en_GB.UTF-8
.
When set, Please will link generated sources back into the source tree. A
.gitignore
can be generated with
plz generate --update_gitignore .gitignore
. This can help with
getting Please to work with IDEs and tooling.
A set of extra environment variables to define for build rules. For example:
[buildenv]
secret-passphrase = 12345
This would become SECRET_PASSPHRASE for any rules. These can be useful for passing secrets into custom rules; any variables containing SECRET or PASSWORD won't be logged.
The binary to use for sandboxing build/test actions. Typically this
is please_sandbox
, which currently only does anything on Linux.
It receives the program to execute and all its arguments in its argv
,
it is expected to do whatever it needs to then exec
the real action.
Activates sandboxing for build actions, which isolates them
from network access, IPC and the repo-local filesystem. Currently
only works on Linux. Defaults to False
.
Activates sandboxing for test actions, which isolates them
from network access, IPC and the repo-local filesystem. Currently
only works on Linux. Defaults to False
.
Directories that the sandbox tool should mask (it's unspecified how, although mounting an
empty filesystem over the top is the current implementation).
These are passed to the tool itself in the SANDBOX_DIRS
env var as a comma-separated list.
This whole section is still experimental; some settings may not work fully and as a whole it's subject to change. Proceed with caution!
Sets the URL to communicate with the remote server on.
Typically this would look something like
<IP_ADDRESS>:8989
, i.e. it is given without a
protocol.
Defines the name of the remote instance to request. Depending on the server implementation or configuration this may be required; if so it must be set here to agree with it.
Defines the number of remote executors to use simultaneously.
A name for this worker instance. This is informational only and attached to artifacts uploaded to remote storage to identify the original machine that created them.
Sets the directory to use for the dir cache.
The default is .plz-cache
, if set to the
empty string the dir cache will be disabled.
Starts cleaning the directory cache when it is over this number of
bytes.
Can also be given with human-readable suffixes like 10G, 200MB etc.
Defaults to 10GiB
.
When cleaning the directory cache, it's reduced to at most this size.
Defaults to 8GiB
.
Base URL of the HTTP cache.
Not set to anything by default which means the cache will be disabled.
If True this plz instance will write content back to the HTTP
cache.
By default it runs in read-only mode.
Timeout for operations contacting the HTTP cache, in seconds.
Base URL of the RPC cache.
Not set to anything by default which means the cache will be disabled.
If True this plz instance will write content back to the RPC cache.
By default it runs in read-only mode.
Timeout for operations contacting the RPC cache, in seconds.
Maximum size of a single message that we'll send to the RPC server.
This should agree with the server's limit, if it's higher the
artifacts will be rejected.
The value is given as a byte size so can be suffixed with M, GB, KiB,
etc.
Sets the default timeout length, in seconds, for any test that isn't explicitly given one. Defaults to 600 (10 minutes).
Activates sandboxing for tests, which isolates them from
network access, IPC and some aspects of the filesystem. Currently only
works on Linux. Defaults to False
.
Deprecated from v16: use sandbox.test instead.
Disables coverage for tests that have any of these labels specified.
URL to upload test results to. The request is a POST containing the results in XML format.
True to use gzip compression when uploading test results. Disabled by default.
True to store the standard output and standard error of successful test cases. Disabled by default.
Extensions of files to consider for coverage.
Defaults to .go
,
.py
, .java
,
.js
, .cc
,
.h
, and .c
.
Extensions of files to exclude from coverage.
Typically this is for generated code; the default is to exclude
protobuf extensions like
.pb.go
, _pb2.py
.
Defaults to .pb.go
,
_pb2.py
, .pb.cc
,
.pb.h
, _test.py
,
_test.go
, _pb.go
,
_bindata.go
, and
_test_main.cc
.
Options relating to use of plz gc
.
Marks targets that gc should always keep. Can include meta-targets
such as //test/...
and
//docs:all
.
Defines a target label to be kept; for example, if you set this to
go
, no Go targets would ever be considered
for deletion.
Properties that affect how the various Go build rules work.
String name of the canonical path of this repository.
This path is used as the prefix of the package name relative to this
please
build directory.
importpath
is commonly used to prepend
github.com/myorg/myrepo
to a project's path.
If set, will set the GOPATH environment variable appropriately during build actions.
If set, the binary name to use to invoke Go & its subtools with.
Defaults to go
.
If set, will set the GOROOT environment variable appropriately during build actions.
Sets the location of CC
while building
cgo_library
and
cgo_test
rules. Defaults to
gcc
Sets CGO_ENABLED to "1" which is used by go tooling to toggle various cgo related features including setting the cgo build flag. Defaults to not being set, which will revert to the go default behavior. This is mostly relevant when cross-compiling. See cgo for more information.
Sets the location of the
please_go_filter
tool that is used to filter
source files against build constraints.
Sets Go binaries to default to static linking. Note that enabling this may have negative consequences for some code, including Go's DNS lookup code in the net module.
When enabled, Please will enter the package directory when running the test binary.
It is useful when a test uses relative paths to files and
remaining compatible with go test
is important.
Properties that affect how the various Python build rules work.
The tool that is invoked during
pip_library
rules. Defaults to
pip3
.
The tool that's invoked to build pexes. Defaults to
please_pex
in the install directory.
The interpreter used for python_binary
and
python_test
rules when none is specified on
the rule itself. Defaults to python3
but you
could of course set it to pypy
.
The test runner used to discover & run Python tests; one of
unittest
,
pytest
or behave
.
Defaults to unittest
.
Defines a directory containing modules from which they can be imported
at the top level.
By default this is empty but by convention we define our
pip_library
rules in
third_party/python
and set this
appropriately. Hence any of those third-party libraries that try
something like import six
will have it work
as they expect, even though it's actually in a different location
within the .pex.
Defines a location for a pip repo to download wheels from.
By default pip_library
uses PyPI (although
see below on that) but you may well want to use this define another
location to upload your own wheels to.
Is overridden by the repo
argument to
pip_library
.
Defines a location for a remote repo that python_wheel rules will download from. See python_wheel for more information.
Whether or not to use PyPI for
pip_library
rules or not. Defaults to
True
, if you disable this you will
presumably want to set DefaultPipRepo to use one of your own.
Is overridden by the use_pypi
argument to
pip_library
.
Defines a custom templatized wheel naming scheme.
Templatized variables should be surrounded in curly braces within the
scheme, and the available options are:
url_base
,
package_name
, and
version
. The default search pattern is
{url_base}/{package_name}-{version}-${{OS}}-${{ARCH}}.whl
along with a few common variants.
Disables injection of vendor specific flags for pip
while using
pip_library
. The option can be useful if you are using
something like Pyenv
, and the passing of additional
flags or configuration that are vendor specific, e.g. --system
,
breaks your build.
Properties that affect how the various Java build rules work.
Defines the tool used for the Java compiler. Defaults to
javac
.
Defines the tool used for the Java linker. Defaults to
jlink
.
Defines the Java home folder.
Defines the tool used to build a .jar. Defaults to
jar
.
Default location to load artifacts from in maven_jar rules.
Defines the .jar containing the JUnit runner. This is built into all
java_test
rules since it's necessary to make
JUnit do anything useful.
Defaults to junit_runner.jar
in the Please
install directory.
The Java classpath to search for functions annotated with
@Test
.
The default Java source level when compiling. Defaults to 8.
The default Java bytecode level to target. Defaults to 8.
The default Java release level when compiling. SourceLevel and TargetLevel are ignored if this is set. Bear in mind that this flag is only supported in Java version 9+.
Properties that affect how the various C++ build rules work.
The tool invoked to compile C code. Defaults to
gcc
but you might want to set it to
clang
, for example.
The tool invoked to compile C++ code. Defaults to
g++
but you might want to set it to
clang++
, for example.
The tool invoked to link object files. Defaults to
ld
but you could also set it to
gold
, for example.
The tool invoked to archive static libraries. Defaults to
ar
.
If true, instructs Please to use the tool set earlier in
ldtool
to link binaries instead of
cctool
.

Generally best to leave this disabled.
Compiler flags passed to all C rules during
opt
builds; these are typically pretty basic
things like what language standard you want to target, warning flags,
etc.
Defaults to
--std=c99 -O3 -DNDEBUG -Wall -Werror
Compiler rules passed to all C rules during
dbg
builds.
Defaults to
--std=c99 -g3 -DDEBUG -Wall -Werror
.
Compiler flags passed to all C++ rules during
opt
builds; these are typically pretty basic
things like what language standard you want to target, warning flags,
etc.
Defaults to
--std=c++11 -O3 -DNDEBUG -Wall -Werror
Compiler rules passed to all C++ rules during
dbg
builds.
Defaults to
--std=c++11 -g3 -DDEBUG -Wall -Werror
.
Linker flags passed to all C++ rules.
By default this is empty.
If true (the default), coverage will be available for C and C++ build
rules.
This is still a little experimental but should work for GCC. Right now
it does
not work for Clang (it likely will in Clang 4.0 which
will likely support --fprofile-dir
) and so
this can be useful to disable it.
It's also useful in some cases for CI systems etc if you'd prefer to
avoid the overhead, since the tests have to be compiled with extra
instrumentation and without optimisation.
Properties that affect how the proto_library
and
grpc_library
rules work.
As noted elsewhere, these rules are fairly complex and do a bunch of things internally, so they correspondingly have a lot of options here.
Obviously the various gRPC-related properties only apply to
grpc_library
rules, whereas
proto_library
rules are affected by all of them.
The binary invoked to compile .proto files. Defaults to
protoc
.
Flags to pass to all protoc invocations. This can be used to set the location of well known types. It is
recommended to use protoc_binary
which will manage the well known types for you, however you may
set this to -I/usr/local/include
or similar to use the well known
types from the host machine.
The binary passed to protoc as a plugin to generate Go code. Defaults
to protoc-gen-go
.
We've found this easier to manage with a
go_get
rule instead though, so you can also
pass a build label here. See the Please repo for an example.
The plugin invoked to compile Python code for
grpc_library
.
Defaults to grpc_python_plugin
.
The plugin invoked to compile Java code for
grpc_library
.
Defaults to protoc-gen-grpc-java
.
Sets the default set of languages that proto rules are built for.
Chosen from the set of {cc
,
java
, go
,
py
}.
Defaults to multiple Language
lines, one
line for each of the following values: cc
,
py
, java
,
go
, and js
.
An in-repo dependency that's applied to any Python targets built.
Defaults to //third_party/python:protobuf
.
An in-repo dependency that's applied to any Java targets built.
Defaults to //third_party/java:protobuf
.
An in-repo dependency that's applied to any Go targets built. Defaults
to //third_party/go:protobuf
.
An in-repo dependency that's applied to any Python gRPC targets built.
Defaults to //third_party/python:grpc
.
An in-repo dependency that's applied to any Java gRPC targets built.
Defaults to /third_party/java:grpc-all
.
An in-repo dependency that's applied to any Go gRPC targets built.
Defaults to //third_party/go:grpc
.
Please has a limited ability to detect licences from third-party code. We obviously can't be 100% sure of these due to the complex nature of dependency management formats and the many, many different forms each licence can be described as. Hopefully though this should offer some help in cases where licences can be detected.
Licences that are accepted in this repository.
When this is empty licences are ignored. As soon as it's set any
licence detected or assigned must be accepted explicitly here.
There's no fuzzy matching, so some package managers (especially PyPI
and Maven, but shockingly not npm which rather nicely uses SPDX) will
generate a lot of slightly different spellings of the same thing,
which will all have to be accepted here. We'd rather that than trying
to "cleverly" match them which might result in matching the wrong
thing.
Licences that are explicitly rejected in this repository.
An astute observer will notice that this is not very different to just
not adding it to the accept section, but it does have the advantage of
explicitly documenting things that the team aren't allowed to use.
This section lets you define arbitrary key-value pairs that can be consumed by custom build rules. For example:
[buildconfig]
rust-toolchain = //third_party/rust:toolchain
The above can then be read in a .build_def or BUILD file as
CONFIG.RUST_TOOLCHAIN
, i.e. they are upper-cased
and hyphens are converted to underscores.
This section can be used to add custom commands to the plz cli. The section
can be repeated multiple times to add many aliases. For example, an alias to
run //deployment:deployer
with the form
plz deploy prod --force //my:target
would look
like this in the config:
[alias "deploy"]
cmd = run //deployment:deployer --
subcommand = dev
subcommand = prod
subcommand = real prod
flag = --force
flag = -f
positionallabels = true
The subcommand, flags, and positionallabels values are optional. They aren't
enforced in anyway but instead provide tab-completion through the standard
Please completions. The positionallabels
field
adds tab-completion for build labels to the alias which can be useful for
those that operate on build targets.
To enable Please completions, add this line to your
.bashrc
or .zshrc
:
source <(plz --completion_script)
Aliases for personal use can be added to your local (personal) please
configuration i.e. .plzconfig.local
.
This section defines some settings to help with limited Bazel
compatibility.
We don't aspire to be fully compatible and mimic all the semantics of their
system, but we hope to ease migration and cross-testing by being able to
parse simple repos.
Currently the only attribute here is
compatibility
, when that is enabled some aspects
of the parser behave a little differently; some of the rule names and flags
change, //visibility:public
is interpreted
specially and WORKSPACE files are parsed to find external dependencies. The
glob
builtin also changes to include hidden files by default.
There is a --bazel_compat
flag to
plz init
which sets this on initialising a new
repo.
We don't have a separate setting for it, but switching this on will also
allow limited Buck compatibility. Specifically
include_defs
becomes available and the various C++
rules gain cxx_
aliases.


Your data don't leave your browser. We recomend use test credit card account numbers
[[responseParsed]]


|
Boat #: {BoatID} Facility #: {FacilityID} Name: {BoatName} Make: {BoatMake} Model: {BoatModel} Year: {BoatYear} Size: {BoatSize} |
| Question & Answer |
|---|
|
Question: {Question}
Answer: {Answer} |
To book or view available dates for this boat click here
Have more questions? Please email or call RentABoat.com! We are looking foward to hearing from you shortly.
Thank you,
RentABoat.com
320 South Country Road - Brookhaven - NY - 11719
631-286-7816
info@RentABoat.com


-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class javax.swing.JPanel
javax.swing.JPanel.AccessibleJPanel
-
Nested classes/interfaces inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
-
-
Field Summary
Fields Modifier and Type Field Description private static java.lang.String
BOLD
(package private) static java.awt.Font
DEFAULT_FONT
private static java.lang.String
FILE_EXTENSION
private static java.lang.String
FONT
private static java.lang.String
ITALIC
private java.lang.String
savedFilePath
private StylizedTextPane
textPane
private static java.lang.String
UNDERLINE
private static java.lang.String
WORD_DELIMITERS
-
Fields inherited from class javax.swing.JComponent
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
-
-
Constructor Summary
Constructors Constructor Description Editor()
Creates a newEditor
with a scrollableStylizedTextPane
which has no soft-wraps.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private void
addAttribute(javax.swing.text.Style style)
Utility function to add a style to the selected text(package private) int
charCount()
Counts the total number of characters in the editor(package private) boolean
confirmClose()
Utility for closing the editor while warning about unsaved changes.(package private) void
copy()
Wrapper for copy(package private) void
cut()
Wrapper for cut(package private) void
findText()
Finds text in the textPane with a dialog for inputprivate boolean
findText(java.lang.String str, boolean caseSensitive, boolean lastIndex)
Finds text in the textPane(package private) java.lang.String
getSavedFilePath()
Returns the path to the file saved.(package private) boolean
isSelectionBold()
Checks if the selected text is bold(package private) boolean
isSelectionItalic()
Checks if the selected text is italic(package private) boolean
isSelectionUnderline()
Checks if the selected text is underlined(package private) void
open()
Opens up a dialog to select theStyledDocument
file to be openedprivate void
open(java.io.File file)
Opens a supported Styled Document Format file(package private) void
paste()
Wrapper for paste(package private) void
replaceText()
Replaces the text in the textPane with a dialog for inputprivate boolean
replaceText(java.lang.String from, java.lang.String to, boolean caseSensitive)
Replaces the first occurrence of the text 'from' to the text 'to'private boolean
replaceText(java.lang.String from, java.lang.String to, boolean caseSensitive, boolean replaceAll)
Replaces the text in the panel while respecting the initial formattingprivate boolean
replaceText(java.lang.String from, java.lang.String to, boolean caseSensitive, int fromIndex)
Replaces the first occurrence of the text 'from' to the text 'to', starting the search from fromIndex(package private) void
save()
Save the current text stored in the textPane as aStyledDocument
.(package private) void
saveAs()
Opens up a dialog to select where to store the file.private void
saveAs(java.lang.String filePath, boolean checkExists)
Internal method which provides the logic for writing the textPane'sStyledDocument
to the given filepath.(package private) int
selectedCharCount()
Counts the number of characters in the selection(package private) int
selectedWordCount()
Counts the number of words in the selection.private boolean
selectionHasAttribute(java.util.function.Function<javax.swing.text.AttributeSet,java.lang.Boolean> propertyChecker)
Checks whether each element of the selection has the property applied.(package private) void
selectionToLowerCase()
Converts the selected text to Lowercase.(package private) void
selectionToUpperCase()
Converts the selected text to Uppercase.(package private) void
setSelectionFont(java.awt.Font font)
Sets the font on the selected text in the editor.private void
toggleAttributeOnSelection(java.lang.String styleName, java.util.function.BiConsumer<javax.swing.text.Style,java.lang.Boolean> attributeSetter, java.util.function.BooleanSupplier selectionAttributeChecker)
Toggles an attribute on the selection.(package private) void
toggleBoldOnSelection()
Toggles the BOLD attribute on the selected text(package private) void
toggleItalicsOnSelection()
Toggles ITALIC on selected text(package private) void
toggleUnderlineOnSelection()
Toggles the UNDERLINE attribute on the selected text.(package private) int
wordCount()
Counts the number of words in the panel-
Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI
-
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
-
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusDownCycle, validate, validateTree
-
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
-
-
-
-
Field Detail
-
DEFAULT_FONT
static final java.awt.Font DEFAULT_FONT
-
FILE_EXTENSION
private static final java.lang.String FILE_EXTENSION
- See Also:
- Constant Field Values
-
WORD_DELIMITERS
private static final java.lang.String WORD_DELIMITERS
- See Also:
- Constant Field Values
-
BOLD
private static final java.lang.String BOLD
- See Also:
- Constant Field Values
-
ITALIC
private static final java.lang.String ITALIC
- See Also:
- Constant Field Values
-
UNDERLINE
private static final java.lang.String UNDERLINE
- See Also:
- Constant Field Values
-
FONT
private static final java.lang.String FONT
- See Also:
- Constant Field Values
-
textPane
private final StylizedTextPane textPane
-
savedFilePath
private java.lang.String savedFilePath
-
-
Constructor Detail
-
Editor
Editor()
Creates a newEditor
with a scrollableStylizedTextPane
which has no soft-wraps.
-
-
Method Detail
-
wordCount
int wordCount()
Counts the number of words in the panel- Returns:
- the total number of words
-
selectedWordCount
int selectedWordCount()
Counts the number of words in the selection.- Returns:
- the number of words in the current selection
-
charCount
int charCount()
Counts the total number of characters in the editor- Returns:
- the total number of characters
-
selectedCharCount
int selectedCharCount()
Counts the number of characters in the selection- Returns:
- the number of characters in the selection
-
saveAs
void saveAs()
Opens up a dialog to select where to store the file.
-
saveAs
private void saveAs(java.lang.String filePath, boolean checkExists)
Internal method which provides the logic for writing the textPane'sStyledDocument
to the given filepath.- Parameters:
filePath
- the path of the file.checkExists
- check for replacing the file if already exists
-
save
void save()
Save the current text stored in the textPane as aStyledDocument
.
-
open
void open()
Opens up a dialog to select theStyledDocument
file to be opened
-
open
private void open(java.io.File file) throws java.io.IOException
Opens a supported Styled Document Format file- Parameters:
file
- the Styled Document File to be opened.- Throws:
java.io.IOException
- when unable to open the file
-
selectionHasAttribute
private boolean selectionHasAttribute(java.util.function.Function<javax.swing.text.AttributeSet,java.lang.Boolean> propertyChecker)
Checks whether each element of the selection has the property applied.- Parameters:
propertyChecker
- aFunction
fromStyleConstants
likeStyleConstants::isBold
- Returns:
- true if all chars in the selection return true for the
propertyChecker
, false otherwise.
-
isSelectionBold
boolean isSelectionBold()
Checks if the selected text is bold- Returns:
- true if every character in the selection is bold. Otherwise false.
-
isSelectionItalic
boolean isSelectionItalic()
Checks if the selected text is italic- Returns:
- true if every character in the selection is italic. Otherwise false.
-
isSelectionUnderline
boolean isSelectionUnderline()
Checks if the selected text is underlined- Returns:
- true if every character in the selection is underline. Otherwise false.
-
toggleAttributeOnSelection
private void toggleAttributeOnSelection(java.lang.String styleName, java.util.function.BiConsumer<javax.swing.text.Style,java.lang.Boolean> attributeSetter, java.util.function.BooleanSupplier selectionAttributeChecker)
Toggles an attribute on the selection. Toggle is based on the value of selectionAttributeChecker.- Parameters:
styleName
- the name for the attribute styleattributeSetter
-BiConsumer
used to set the attribute on the selection, for example, StyleConstants::setBold.selectionAttributeChecker
- checks whether the attribute is currently applied. The value returned by this is used to toggle the attribute.
-
addAttribute
private void addAttribute(javax.swing.text.Style style)
Utility function to add a style to the selected text- Parameters:
style
- the style to be added
-
cut
void cut()
Wrapper for cut
-
copy
void copy()
Wrapper for copy
-
paste
void paste()
Wrapper for paste
-
getSavedFilePath
java.lang.String getSavedFilePath()
Returns the path to the file saved.- Returns:
- null if no file has been saved yet, the path of the file written otherwise
-
findText
void findText()
Finds text in the textPane with a dialog for input
-
findText
private boolean findText(java.lang.String str, boolean caseSensitive, boolean lastIndex)
Finds text in the textPane- Parameters:
str
- the string to be foundcaseSensitive
- find text ignoring case if falselastIndex
- finds last index if true, first index otherwise- Returns:
- true if the text was found, false otherwise.
-
replaceText
private boolean replaceText(java.lang.String from, java.lang.String to, boolean caseSensitive, boolean replaceAll)
Replaces the text in the panel while respecting the initial formatting- Parameters:
from
- the text to be replacedto
- the replaced textcaseSensitive
- replace text ignoring case if falsereplaceAll
- whether to replace all occurrences or just the first- Returns:
- true if replaced successfully, false if unable to replace
-
selectionToUpperCase
void selectionToUpperCase()
Converts the selected text to Uppercase.
-
selectionToLowerCase
void selectionToLowerCase()
Converts the selected text to Lowercase.
-
replaceText
private boolean replaceText(java.lang.String from, java.lang.String to, boolean caseSensitive)
Replaces the first occurrence of the text 'from' to the text 'to'- Parameters:
from
- the text to be replacedto
- the replaced textcaseSensitive
- replace text ignoring case if false- Returns:
- true if able to replace, false otherwise.
-
replaceText
private boolean replaceText(java.lang.String from, java.lang.String to, boolean caseSensitive, int fromIndex)
Replaces the first occurrence of the text 'from' to the text 'to', starting the search from fromIndex- Parameters:
from
- the text to be replacedto
- the replaced textcaseSensitive
- replace text ignoring case if falsefromIndex
- the index from which to start the search- Returns:
- true if able to replace, false otherwise.
-
replaceText
void replaceText()
Replaces the text in the textPane with a dialog for input
-
confirmClose
boolean confirmClose()
Utility for closing the editor while warning about unsaved changes.- Returns:
- true if ready to quit, false otherwise.
-
toggleBoldOnSelection
void toggleBoldOnSelection()
Toggles the BOLD attribute on the selected text
-
toggleItalicsOnSelection
void toggleItalicsOnSelection()
Toggles ITALIC on selected text
-
toggleUnderlineOnSelection
void toggleUnderlineOnSelection()
Toggles the UNDERLINE attribute on the selected text.
-
setSelectionFont
void setSelectionFont(java.awt.Font font)
Sets the font on the selected text in the editor.- Parameters:
font
- the font to be set to the selected text.
-
-


public abstract class AbstractCourse extends java.lang.Object implements Course
| Modifier and Type | Field and Description |
|---|---|
java.util.Collection<AssignmentCategory> |
assignmentCategories
All assignment categories in a course.
|
GradeSchema |
gradeSchema
A GradeSchema contains a function to convert a raw score to a LetterGrade.
|
LatePolicy |
latePolicy
A policy for calculating a grade penalty on late assignments.
|
java.lang.String |
name
Name of the course.
|
RoleManager |
roleManager
Manages user role assignments.
|
Session |
session |
CourseAccessor |
snapShot
A read only version of the course for students.
|
java.util.Collection<StudentRecord> |
studentRecords
Data model for the grade book spreadsheet.
|
| Constructor and Description |
|---|
AbstractCourse() |
| Modifier and Type | Method and Description |
|---|---|
abstract void |
addAssignment(Assignment assignment)
Adds an assignment to the course
|
abstract void |
addAssignmentCategory(AssignmentCategory assignmentCategory)
Adds an assignment category to the course
|
abstract void |
addAssignmentSubmission(AssignmentSubmission submission)
Adds the given
AssignmentSubmission . |
abstract void |
addStudent(User student)
Adds a student to the student record this
AbstractCourse
holds. |
abstract void |
createSnapshot()
Creates a
Snapshot of the course. |
abstract java.util.Collection<AssignmentCategory> |
getAssignmentCategories()
Accessor fot the
AssignmentCategory 's
for this Course . |
abstract AssignmentGrade |
getAssignmentGrade(Assignment assignment,
User student)
Gets the grade the student earned on an assignment
|
abstract java.util.Collection<AssignmentGrade> |
getAssignmentGrades(Assignment assignment)
Accessor for all
AssignmentGrade s for the specified
Assignment . |
abstract java.util.Collection<Assignment> |
getAssignments()
Accessor fot the
Assignment s for this Course . |
abstract AssignmentSubmission |
getAssignmentSubmission(Assignment assignment,
User student)
Accessor for the
AssignmentSubmission of the given
User and Assignment . |
abstract java.util.Collection<AssignmentSubmission> |
getAssignmentSubmissions(Assignment assignment)
Accessor for the
AssignmentSubmission s for the given
Assignment . |
abstract GradeSchema |
getGradeSchema()
Accessor fot the
GradeSchema for this Course . |
abstract LatePolicy |
getLatePolicy()
Accessor fot the
LatePolicy for this Course . |
abstract java.lang.String |
getName()
Accessor for the name of this
Course . |
abstract AbstractCourseSnapshot |
getSnapshot()
Gets the current
AbstractCourseSnapshot . |
abstract StudentRecord |
getStudentRecord(User student)
Accessor fot the
StudentRecord for this Course . |
abstract java.util.Collection<StudentRecord> |
getStudentRecords()
Accessor fot the
StudentRecord s for this Course . |
abstract boolean |
removeStudent(User student)
Removes a student from the student record this
AbstractCourse
holds. |
abstract void |
setGradeSchema(GradeSchema g)
Sets the
GradeSchema for this Course . |
abstract void |
setLatePolicy(LatePolicy l)
Sets the
LatePolicy for this Course . |
abstract void |
setName(java.lang.String n)
Sets the name of this
Course . |
abstract void |
updateAssignment(Assignment assignment)
Updates an specified
Assignment . |
abstract void |
updateAssignmentCategory(AssignmentCategory assignmentCategory)
Updates the
AssignmentCategory as the given one. |
abstract void |
updateAssignmentGrade(AssignmentGrade assignmentGrade)
Updates the
AssignmentGrade as the given one. |
abstract void |
updateAssignmentSubmission(AssignmentSubmission submission)
Updates the
AssignmentSubmission as the given one. |
abstract void |
updateStudentRoster()
Updates the student roster.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
getCourseSnapshot, setCourseSnapshot
public RoleManager roleManager
public Session session
public GradeSchema gradeSchema
public LatePolicy latePolicy
public java.lang.String name
public CourseAccessor snapShot
public java.util.Collection<StudentRecord> studentRecords
public java.util.Collection<AssignmentCategory> assignmentCategories
public abstract java.lang.String getName()
Course
.getName
in interface CourseAccessor
Course
.
pre:
session != null &&
session.currentUser != null &&
roleManager.getPerms(session.currentUser).contains(
)
post:
name' == namepublic abstract void setName(java.lang.String n)
Course
.setName
in interface CourseModifier
n
- desired name of this Course
.
pre:
session != null &&
session.currentUser != null &&
roleManager.getPerms(session.currentUser).contains(PERMISSION_UPDATE_COURSE_NAME )
post:
name' == npublic abstract GradeSchema getGradeSchema()
GradeSchema
for this Course
.getGradeSchema
in interface CourseAccessor
GradeSchema
for this Course
.
pre: session != null &&
session.currentUser != null &&
gradeSchema != null &&
roleManager.getPerms(session.currentUser).contains(
Permission.ACCESS_COURSE_GRADE_SCHEMA)
post:
(gradeSchema' == gradeSchema)public abstract void setGradeSchema(GradeSchema g)
GradeSchema
for this Course
.setGradeSchema
in interface CourseModifier
g
- desired GradeSchema
.
pre:
session != null &&
session.currentUser != null &&
roleManager.getPerms(session.currentUser).contains(
Permission.UPDATE_COURSE_GRADE_SCHEMA)
post:
gradeSchema' == gpublic abstract LatePolicy getLatePolicy()
LatePolicy
for this Course
.getLatePolicy
in interface CourseAccessor
LatePolicy
for this Course
.
pre:
session != null &&
session.currentUser != null &&
latePolicy != null &&
roleManager.getPerms(session.currentUser).contains(
Permission.ACCESS_COURSE_LATE_POLICY)
post:
(latePolicy' == latePolicy)public abstract void setLatePolicy(LatePolicy l)
LatePolicy
for this Course
.setLatePolicy
in interface CourseModifier
l
- desired LatePolicy
.
pre:
session != null &&
session.currentUser != null &&
roleManager.getPerms(session.currentUser).contains(
Permission.UPDATE_COURSE_LATE_POLICY)
post:
latePolicy' == lpublic abstract java.util.Collection<StudentRecord> getStudentRecords()
StudentRecord
s for this Course
.getStudentRecords
in interface CourseAccessor
StudentRecord
s for this Course
.
session != null &&
studentRecords != null &&
session.currentUser != null &&
roleManager.getPerms(session.currentUser).contains(
Permission.ACCESS_STUDENT_GRADE) &&
roleManager.getPerms(session.currentUser).contains(
Permission.ACCESS_STUDENT_PERSONAL_DATA)
post:
studentRecords' == studentRecordpublic abstract StudentRecord getStudentRecord(User student)
StudentRecord
for this Course
.getStudentRecord
in interface CourseAccessor
StudentRecord
for this Course
.
pre:
session != null && session.currentUser != null &&
studentRecords != null && (studentRecords.size() > 0) &&
(student.equals(session.currentUser) ||
(roleManager.getPerms(session.currentUser).contains(
Permission.ACCESS_STUDENT_GRADE) &&
roleManager.getPerms(session.currentUser).contains(
Permission.ACCESS_STUDENT_PERSONAL_DATA)))
post:
studentRecord' == studentRecordpublic abstract java.util.Collection<Assignment> getAssignments()
Assignment
s for this Course
.getAssignments
in interface CourseAccessor
Assignment
s from every
AssignmentCategory
contained in this Course
.
pre:
session != null &&
session.currentUser != null &&
assignmentCategories != null &&
roleManager.getPerms(session.currentUser).contains(
Permission.ACCESS_ASSIGNMENT)
post:public abstract java.util.Collection<AssignmentCategory> getAssignmentCategories()
AssignmentCategory
's
for this Course
.getAssignmentCategories
in interface CourseAccessor
StudentRecord
for this Course
.
pre:
session != null &&
session.currentUser != null &&
assignmentCategories != null &&
roleManager.getPerms(session.currentUser).contains(
Permission.ACCESS_ASSIGNMENT_CATEGORY)
post:
assignmentCategories' == assignmentCategoriespublic abstract java.util.Collection<AssignmentSubmission> getAssignmentSubmissions(Assignment assignment)
AssignmentSubmission
s for the given
Assignment
.getAssignmentSubmissions
in interface CourseAccessor
assignment
- Assignment
that the submissions are under.Assignment
.
pre:
session != null &&
session.currentUser != null &&
assignment != null &&
roleManager.getPerms(session.currentUser).contains(
Permission.ACCESS_ASSIGNMENT_SUBMISSION)
post:
// nonepublic abstract AssignmentSubmission getAssignmentSubmission(Assignment assignment, User student)
AssignmentSubmission
of the given
User
and Assignment
.getAssignmentSubmission
in interface CourseAccessor
assignment
- assignment associated with the submission to get.student
- student who submitted the submission.AssignmentSubmission
for the specified assignment and the student.
pre:
session != null &&
session.currentUser != null &&
(session.currentUser.equals(student) ||
roleManager.getPerms(session.currentUser).contains(
Permission.ACCESS_ASSIGNMENT_SUBMISSION))
post:
// nonepublic abstract java.util.Collection<AssignmentGrade> getAssignmentGrades(Assignment assignment)
AssignmentGrade
s for the specified
Assignment
.getAssignmentGrades
in interface CourseAccessor
assignment
- assignment to access grades for.public abstract AssignmentGrade getAssignmentGrade(Assignment assignment, User student)
getAssignmentGrade
in interface CourseAccessor
assignment
- The assignment that you like to access the grade forstudent
- The student user to access a grade forpublic abstract void createSnapshot()
Snapshot
of the course.
pre:
session != null &&
session.currentUser != null &&
roleManager.getPerms(session.currentUser).contains(
Permission.CREATE_COURSE_SNAPSHOT)
post:
roleManage.equals(snapShot.roleManager) &&
gradeSchema.equals(snapShot.gradeSchema) &&
latePolicy.equals(snapShot.latePolicy) &&
name.equals(snapShot.name) &&
studentRecords.equals(snapShot.studentRecords) &&
assignmentCategories.equals(snapShot.assignmentCategories) &&
roleManage'.equals(snapShot.roleManager) &&
gradeSchema'.equals(snapShot.gradeSchema) &&
latePolicy'.equals(snapShot.latePolicy) &&
name'.equals(snapShot.name) &&
studentRecords'.equals(snapShot.studentRecords) &&
assignmentCategories'.equals(snapShot.assignmentCategories)public abstract void addAssignment(Assignment assignment)
addAssignment
in interface CourseModifier
assignment
- The assignment to add to this course
pre:
session != null &&
session.currentUser != null &&
roleManager.getPerms(session.currentUser).contains(
Permission.ADD_ASSIGNMENT)
post:public abstract void updateAssignment(Assignment assignment)
Assignment
.updateAssignment
in interface CourseModifier
assignment
- The Assignment
to update.
pre:
session != null &&
session.currentUser != null &&
roleManager.getPerms(session.currentUser).contains(
Permission.UPDATE_ASSIGNMENT)
post:public abstract void addAssignmentCategory(AssignmentCategory assignmentCategory)
addAssignmentCategory
in interface CourseModifier
assignmentCategory
- The assignment category to add to this course
pre:
session != null &&
session.currentUser != null &&
roleManager.getPerms(session.currentUser).contains(
Permission.ADD_ASSIGNMENT_CATEGORY)
post:
// nonepublic abstract void updateAssignmentCategory(AssignmentCategory assignmentCategory)
AssignmentCategory
as the given one.updateAssignmentCategory
in interface CourseModifier
assignmentCategory
- new AssignmentCategory
.
pre:
session != null &&
session.currentUser != null &&
roleManager.getPerms(session.currentUser).contains(
Permission.UPDATE_ASSIGNMENT_CATEGORY)
post:
// nonepublic abstract void addAssignmentSubmission(AssignmentSubmission submission)
AssignmentSubmission
.addAssignmentSubmission
in interface CourseModifier
submission
- AssignmentSubmission
to add.
pre:
session != null && session.currentUser != null &&
(
session.currentUser.equals(submission.student) &&
roleManager.getRoles(session.currentUser).contains(STUDENT_ROLE)
) ||
roleManager.getPerms(session.currentUser).contains(PERMISSION_ADD_ASSIGNMENT_SUBMISSION)
post:
// nonepublic abstract void updateAssignmentSubmission(AssignmentSubmission submission)
AssignmentSubmission
as the given one.updateAssignmentSubmission
in interface CourseModifier
submission
- new AssignmentSubmission
.
pre:
session != null &&
session.currentUser != null &&
(session.currentUser.equals(submission.student) &&
if
(
forall
(
Role role;
roleManager.getRoles(session.currentUser).contains(role);
role == STUDENT_ROLE
)
)
submission.student != null &&
submission.student.equals(session.currentUser) &&
roleManager.getPerms(session.currentUser).contains(PERMISSION_UPDATE_ASSIGNMENT_SUBMISSION)
else
roleManager.getPerms(session.currentUser).contains(
Permission.UPDATE_ASSIGNMENT_SUBMISSION))
post:
// nonepublic abstract void updateAssignmentGrade(AssignmentGrade assignmentGrade)
AssignmentGrade
as the given one.updateAssignmentGrade
in interface CourseModifier
assignmentGrade
- new AssignmentGrade
.
pre:
session != null &&
session.currentUser != null &&
roleManager.getPerms(session.currentUser).contains(PERMISSION_UPDATE_ASSIGNMENT_GRADE)
post:
// nonepublic abstract AbstractCourseSnapshot getSnapshot()
AbstractCourseSnapshot
.public abstract void addStudent(User student)
AbstractCourse
holds.student
- student User
to add to this course.
pre:
session != null &&
session.currentUser != null &&
roleManager.getPerms(session.currentUser).contains(PERMISSION_ADD_STUDENT)
post:
studentRecords.size() == studentRecords'.size() - 1 &&
exists (AbstractStudentRecord rec; rec.getStudentUserInfo(student))public abstract boolean removeStudent(User student)
AbstractCourse
holds.student
- student User
to remove from this course.true
if successful, false
otherwise.
pre:
session != null &&
session.currentUser != null &&
roleManager.getPerms(session.currentUser).contains(PERMISSION_REMOVE_STUDENT)
post:
studentRecords.size() == studentRecords'.size() + 1 &&
!exists (AbstractStudentRecord rec; rec.getStudentUserInfo(student))public abstract void updateStudentRoster()


Personalised
Health Warnings
Archive Mode
Smoking
kills
Mum, Bae, Grandad, Dave
Share Pack:
Print Label:
Recently Created
Smoking
kills
You Bro
Smoking
kills
Emma
Smoking
kills
Alan
Smoking
kills
Aleem
Smoking
kills
Jezzy Bear
Smoking
kills
Gran
Oli + Josie
Photo by David Gill
Smoking
kills
Personalise A Health Warning


Verify ISO
Game Code
{{ gameCode }}
This ISO is not Metroid Prime.
This is not a NTSC-USA region ISO.
MD5 Hash
{{ md5Hash }}
Revision
{{ revision }}
Verifying can take a moment. Please wait...


WebDev Assignment A short explanation of Discord and its API, Discord JS, how to install and write your first bot Get Started


-
March 22, 2013: Released version 1.6.0.
New features:
Bug fixes:
-
cilly: use -include only on first preprocessor run.
- Allow large arrays (#3604915).
- Fix caller list in EasyCallGraph.
- Use actual prime numbers in function checksum.
- Make breakString tail recursive.
- Fix parsing of char_signed with –envmachine (thanks to Haihao Shen).
- Fix MSVC build parameters for MSys (thanks to Jim Grundy).
- Various other fixes to Makefiles.
- July 14, 2012: Released version 1.5.1.
New features:
-
Native versions of OCaml tool (thanks to Oliver Schwahn).
Bug fixes:
-
Fixed bug in which pointer difference operations were incorrectly
typed (#3538514, thanks to Jim Grundy).
- Merger: fix integer overflow in pragma.
- Fix various regression tests and doc generation.
- June 14, 2012: Released version 1.5.0.
New features:
-
Incompatible change: introduce a Question variant for
the Cil.exp type (thanks to Elnatan Reisner). Enabled by the
flag --useLogicalOperators.
- Add support for new GCC attributes and builtins (thanks to Ben
Liblit).
- Remove trivial gotos and associated labels in useless variables
elimination.
Bug fixes:
-
Preserve const in function parameters.
- Handle array initialization of arbitrary length.
- Allow single character output file names in Cilly (#3499163).
- Mitigate stack-overflow issues for large case-range in switch statements (#3480417).
- Explicit casting for return value of va_arg (#3463364).
- Avoid spurious warnings in loadBinaryFile (thanks to Jesse Draper).
- Add -WX flag to CFLAGS when using the MSVC compiler (thanks to Jim
Grundy).
- Fix name collisions in global scope (#3532283, thanks to Ed Schwartz).
- Fix types in switch statements (#3481303, thanks to Boris
Yakobowski).
- Minor build improvements (MacOS portability).
- November 4, 2011: Released version 1.4.0. Includes many bug
fixes and a cleanup of obsolete files and Makefile rules. Also fix
support for OCaml 3.12, add support of some gcc builtins.
- May 28, 2009: Improved 64-bit int support (large constants
no longer cause a CIL failure). There’s a new cilint type that
should be used to handle integer C values - cilint is essentially a
big_int so will be able to handle future expansion. To get the value
represented by a CInt64(n, ik, _) constant, call mkCilint ik n
— this will give you the correct value for unsigned 64-bit C
constants stored in a signed OCaml int64.
In a related move, the already deprecated unbox_int_exp,
box_int_to_exp and cil_to_ocaml_int functions have
been removed. And convertInts, isInteger,
truncateInteger64 are now deprecated and will be removed in a
future release.
- April 24, 2009: Released version 1.3.7 (Subversion
revision 10727). Includes change below and other miscellaneous bug fixes.
- April 22, 2009: ocamlbuild make target added (thanks
to Gabriel Kerneis).
- April 21, 2009: __builtin_va_arg_pack support:
calls to this builtin need to remain as the last argument to a
function call. So to prevent CIL’s usual rewriting, we internally
represent calls to __builtin_va_arg_pack as
sizeof(__builtin_va_arg_pack)…
- April 21, 2009: _Bool support, thanks to patches
from Christopher Ian Stern (Sourceforge bug #1497763).
This leads to the addition of a new integer kind, IBool
which you might have to handle in some of your patterns. Note also, for
those not familiar with _Bool, that casts/conversion to _Bool
give the value 1 for non-zero values, and 0 otherwise (i.e.
(_Bool)x behaves like x = 0).
- April 20, 2009: Update builtin support, including
__builtin_strlen (Sourceforge bug #1873374), __builtin_choose_expr,
__builtin_types_compatible_p (Sourceforge bug #1852730).
For the latter two, we evaluate them in CIL (in line with the earlier handling
of __builtin_constant_p).
Note that as part of these fixes, mkAddrOf no longer replaces
&a[0] with a, as this can break typeof (Sourceforge bug
#1852730 involves a use of typeof(&a[0])).
Typo fixes from Gabriel Kerneis.
- April 17, 2009: Update extern inline handling to match
current gcc versions (Sourceforge bug #1689503): the actual
definition is always preferred over the extern inline one. CIL
handles this by suppressing the extern inline definition (replacing
it by a declaration) if it sees a real definition. However, if no
real definition exists, you will get a CIL varinfo for an inline
function with storage class extern…
You can revert to CIL’s previous handling of extern inline by setting
oldstyleExternInline to true.
- April 16, 2009: Add allStmts function to cfg.ml, and
remove public visibility of nodeList and numNodes (Sourceforge bug
#1819746).
- April 15, 2009: Fix Sourceforge bugs #2265867 (bad constant
folding of unary minus), #2134504 (truncation warning), #1811676 (typo).
- April 13, 2009: Recognize gcc’s -m32 and -m64 flags that select
between 32 and 64 bit targets.
- April 8, 2009: Rename libcil.a to libcil.o (ocaml 3.11 forces
us to use the correct extension).
- April 7, 2009: Add LLVM bitcode generator (partial C support, target
32-bit x86 only).
- April 7, 2009: Support enums over greater-than-int types (gcc
extension).
- September 19, 2008: Remove excess newlines in warnings and errors.
- August 30, 2008: Added an install-findlib Make target for
ocamlfind. Thanks to ploc for the patch.
- May 28, 2008: Cross-compilation support: ability to
select a machine model specified in an environment variable (CIL_MACHINE).
See Section 7.4 for details.
- July 2, 2008: Add a --gcc option to cilly to tell it to use
a particular version of gcc (useful for cross-compilation environments).
- February 14, 2008: Fixed a bug in temporary file
creation. Thanks to J. Aaron Pendergrass for the patch.
- November 30, 2007: Fixed a bug in assignment to lvalues that
depend on themselves.
- April 4, 2007: Benjamin Monate fixed a bug in
Cfg for empty loop bodies.
- March 29, 2007: Polyvios Pratikakis fixed a bug in
src/ext/pta/uref.ml.
- March 15, 2007: Added support for
__attribute__((aligned)) and
__attribute__((packed)).
- March 7, 2007: typeOf(StartOf _) now preserves the
attributes of the array.
- February 22, 2007: Added an inliner (ext/inliner.ml)
- February 21, 2007: We now constant-fold bitfield
expressions. Thanks to Virgile Prevosto for the patch.
- February 13, 2007: gcc preprocessor arguments passed
using -Wp are now used only during initial preproccessing, not
for the preprocessing after CIL. This fixes problems in the Linux
makefiles with dependency generation.
- February 6, 2007: Fixed Cil.parseInt for non-32
bit architectures.
- February 5, 2007: Released version 1.3.6 (Subversion
revision 9211)
- February 2, 2007: Improved the way CIL gets configured for the
actual definitions of size_t and wchar_t.
- February 1, 2007: Fixed the parser to support the unused
attribute on labels. For now, we just drop this attribute since
Rmtmps will remove unused labels anyways. Thanks to Peter Hawkins
for the patch.
- January 18, 2007: Require the destination of a Call to
have the same type as the function’s return type, even if it means
inserting a temporary. To get the old behavior, set
Cabs2cil.doCollapseCallCast to true as described in
Section 7.3.
- January 17, 2007: Fix for __builtin_offsetof when
the field name is also a typedef name.
- January 17, 2007: Fixed Cil.loadBinaryFile
(Sourceforge bug #1548894).
You should only use loadBinaryFile if no other code has been loaded
or generated in the current CIL process, since loadBinaryFile needs
to load some global state.
- December 18, 2006: The --stats flag now gets the CPU
speed at runtime rather than configure-time, so binary executables
can be moved to different computers.
- December 14, 2006: Fixed various warnings and errors on
64-bit architectures.
- November 26, 2006: Christoph Spiel added “--no”
options to many of CIL’s command-line flags.
- November 21, 2006: Merged gccBuiltins and
msvcBuiltins into a single table Cil.builtinFunctions
that is initialized by Cil.initCIL.
- October 28, 2006: Added the field vdescr to the
Cil.varinfo struct to remember what value is stored in
certain CIL-introduced temporary variables. For example, if CIL
adds a temporary to store the result of foo(a,b), then the
description will be “foo(a,b)”. The new printer
Cil.descriptiveCilPrinter will substitute descriptions for
the names of temporaries. The result is not necessarily valid C,
but it may let you produce more helpful error messages in your
analysis tools: “The value foo(a,b) may be tainted” vs. “The
value __cil_tmp29 may be tainted.”
- October 27, 2006: Fixed a bug with duplicate entries in
the statement list of Switch nodes, and forbade duplicate
default cases.
- October 12, 2006: Added a new function Cil.expToAttrParam
that attempts to convert an expression into a attribute parameter.
- October 12, 2006: Added an attribute with the length of the array,
when array types of formal arguments are converted to pointer types.
- September 29, 2006: Benjamin Monate fixed a bug in compound
local initializers that was causing duplicate code to be added.
- August 9, 2006: Changed the patcher to print “#line
nnn” directives instead of “# nnn”.
- August 6, 2006: Joseph Koshy patched ./configure for
FreeBSD on amd64.
- July 27, 2006: CIL files now include the prototypes of
builtin functions (such as __builtin_va_arg). This
preserves the invariant that every function call has a corresponding
function or function prototype in the file. However, the prototypes
of builtins are not printed in the output files.
- July 23, 2006: Incorporated some fixes for the constant folding
for lvalues, and fixed grammatical errors. Thanks to Christian Stork.
- July 23, 2006: Changed the way ./configure works. We now generate
the file Makefile.features to record the configuration features. This is
because autoconf does not work properly with multiline substitutions.
- July 21, 2006: Cleaned up the printing of some Lvals. Things that
were printed as “(*i)” before are now printed simply as “*i” (no
parentheses). However, this means that when you use pLval to print lvalues
inside expressions, you must take care about parentheses yourself. Thanks to
Benjamin Monate for pointing this out.
- July 21, 2006: Added new hooks to the Usedef and
Dataflow.BackwardsTransfer APIs. Code that uses these will need to
be changed slightly. Also, updated the Cfg code to
handle noreturn functions.
- July 17, 2006: Fix parsing of attributes on bitfields and
empty attribute lists. Thanks to Peter Hawkins.
- July 10, 2006: Fix Makefile problem for FreeBSD. Thanks
to Joseph Koshy for the patch.
- June 25, 2006: Extended the inline assembly to support named
arguments, as added in gcc 3.0. This changes the types of the input
and output lists from “(string * lval) list” to
“(string option * string * lval) list”. Some existing code
will need to be modified accordingly.
- June 11, 2006: Removed the function Cil.foldLeftCompoundAll.
Use instead Cil.foldLeftCompound with implicit:true.
- June 9, 2006: Extended the definition of the cilVisitor for
initializers to pass more information around. This might result in backward
incompatibilities with code that uses the visitor for initializers.
- June 2, 2006: Added --commPrintLnSparse flag.
- June 1, 2006: Christian Stork provided some fixes for the handling
of variable argument functions.
- June 1, 2006: Added support for x86 performance counters
on 64-bit processors. Thanks to tbergen for the patch.
- May 23, 2006: Benjamin Monate fixed a lexer bug when a
preprocessed file is missing a final newline.
- May 23, 2006: Fix for typeof(e) when e has type
void.
- May 20, 2006: Released version 1.3.5 (Subversion
revision 8093)
- May 19, 2006: Makefile.cil.in/Makefile.cil have
been renamed Makefile.in/Makefile. And maincil.ml has
been renamed main.ml.
- May 18, 2006: Added a new module Cfg to compute the
control-flow graph. Unlike the older Cil.computeCFGInfo,
the new version does not modify the code.
- May 18, 2006: Added several new analyses: reaching
definitions, available expressions, liveness analysis, and dead code
elimination. See Section 8.
- May 2, 2006: Added a flag --noInsertImplicitCasts.
When this flag is used, CIL code will only include casts inserted by
the programmer. Implicit coercions are not changed to explicit casts.
- April 16, 2006: Minor improvements to the --stats
flag (Section 7.2). We now use Pentium performance
counters by default, if your processor supports them.
- April 10, 2006: Extended machdep.c to support
microcontroller compilers where the struct alignment of integer
types does not match the size of the type. Thanks to Nathan
Cooprider for the patch.
- April 6, 2006: Fix for global initializers of unions when
the union field being initialized is not the first one, and for
missing initializers of unions when the first field is not the
largest field.
- April 6, 2006: Fix for bitfields in the SFI module.
- April 6, 2006: Various fixes for gcc attributes.
packed, section, and always_inline attributes are now
parsed correctly. Also fixed printing of attributes on enum types.
- March 30, 2006: Fix for rmtemps.ml, which deletes
unused inline functions. When in gcc mode CIL now leaves all
inline functions in place, since gcc treats these as externally
visible.
- March 3, 2006: Assume inline assembly instructions can
fall through for the purposes of adding return statements. Thanks to
Nathan Cooprider for the patch.
- February 27, 2006: Fix for extern inline functions when
the output of CIL is fed back into CIL.
- January 30, 2006: Fix parsing of switch without braces.
- January 30, 2006: Allow ‘$’ to appear in identifiers.
- January 13, 2006: Added support for gcc’s alias attribute
on functions. See Section 16.2, item 8.
- December 9, 2005: Christoph Spiel fixed the Golf and
Olf modules so that Golf can be used with the points-to analysis.
He also added performance fixes and cleaned up the documentation.
- December 1, 2005: Major rewrite of the ext/callgraph module.
- December 1, 2005: Preserve enumeration constants in CIL. Default
is the old behavior to replace them with integers.
- November 30, 2005: Added support for many GCC __builtin
functions.
- November 30, 2005: Added the EXTRAFEATURES configure
option, making it easier to add Features to the build process.
- November 23, 2005: In MSVC mode do not remove any locals whose name
appears as a substring in an inline assembly.
- November 23, 2005: Do not add a return to functions that have the
noreturn attribute.
- November 22, 2005: Released version 1.3.4
- November 21, 2005: Performance and correctness fixes for
the Points-to Analysis module. Thanks to Christoph Spiel for the
patches.
- October 5, 2005: CIL now builds on SPARC/Solaris. Thanks
to Nick Petroni and Remco van Engelen for the patches.
- September 26, 2005: CIL no longer uses the ‘-I-’ flag
by default when preprocessing with gcc.
- August 24, 2005: Added a command-line option
“--forceRLArgEval” that forces function arguments to be evaluated
right-to-left. This is the default behavior in unoptimized gcc and
MSVC, but the order of evaluation is undefined when using
optimizations, unless you apply this CIL transformation. This flag
does not affect the order of evaluation of e.g. binary operators,
which remains undefined. Thanks to Nathan Cooprider for the patch.
- August 9, 2005: Fixed merging when there are more than 20
input files.
- August 3, 2005: When merging, it is now an error to
declare the same global variable twice with different initializers.
- July 27, 2005: Fixed bug in transparent unions.
- July 27, 2005: Fixed bug in collectInitializer. Thanks to
Benjamin Monate for the patch.
- July 26, 2005: Better support for extended inline assembly
in gcc.
- July 26, 2005: Added many more gcc __builtin* functions
to CIL. Most are treated as Call instructions, but a few are
translated into expressions so that they can be used in global
initializers. For example, “__builtin_offsetof(t, field)” is
rewritten as “&((t*)0)->field”, the traditional way of calculating
an offset.
- July 18, 2005: Fixed bug in the constant folding of shifts
when the second argument was negative or too large.
- July 18, 2005: Fixed bug where casts were not always
inserted in function calls.
- June 10, 2005: Fixed bug in the code that makes implicit
returns explicit. We weren’t handling switch blocks correctly.
- June 1, 2005: Released version 1.3.3
- May 31, 2005: Fixed handling of noreturn attribute for function
pointers.
- May 30, 2005: Fixed bugs in the handling of constructors in gcc.
- May 30, 2005: Fixed bugs in the generation of global variable IDs.
- May 27, 2005: Reimplemented the translation of function calls so
that we can intercept some builtins. This is important for the uses of
__builtin_constant_p in constants.
- May 27, 2005: Export the plainCilPrinter, for debugging.
- May 27, 2005: Fixed bug with printing of const attribute for
arrays.
- May 27, 2005: Fixed bug in generation of type signatures. Now they
should not contain expressions anymore, so you can use structural equality.
This used to lead to Out_of_Memory exceptions.
- May 27, 2005: Fixed bug in type comparisons using
TBuiltin_va_list.
- May 27, 2005: Improved the constant folding in array lengths and
case expressions.
- May 27, 2005: Added the __builtin_frame_address to the set
of gcc builtins.
- May 27, 2005: Added the CIL project to SourceForge.
- April 23, 2005: The cattr field was not visited.
- March 6, 2005: Debian packaging support
- February 16, 2005: Merger fixes.
- February 11, 2005: Fixed a bug in --dopartial. Thanks to
Nathan Cooprider for this fix.
- January 31, 2005: Make sure the input file is closed even if a
parsing error is encountered.
- January 11, 2005: Released version 1.3.2
- January 11, 2005: Fixed printing of integer constants whose
integer kind is shorter than an int.
- January 11, 2005: Added checks for negative size arrays and arrays
too big.
- January 10, 2005: Added support for GCC attribute “volatile” for
tunctions (as a synonim for noreturn).
- January 10, 2005: Improved the comparison of array sizes when
comparing array types.
- January 10, 2005: Fixed handling of shell metacharacters in the
cilly command lione.
- January 10, 2005: Fixed dropping of cast in initialization of
local variable with the result of a function call.
- January 10, 2005: Fixed some structural comparisons that were
broken in the Ocaml 3.08.
- January 10, 2005: Fixed the unrollType function to not forget
attributes.
- January 10, 2005: Better keeping track of locations of function
prototypes and definitions.
- January 10, 2005: Fixed bug with the expansion of enumeration
constants in attributes.
- October 18, 2004: Fixed a bug in cabsvisit.ml. CIl would wrap a
BLOCK around a single atom unnecessarily.
- August 7, 2004: Released version 1.3.1
- August 4, 2004: Fixed a bug in splitting of structs using
--dosimplify
- July 29, 2004: Minor changes to the type typeSig (type signatures)
to ensure that they do not contain types, so that you can do structural
comparison without danger of nontermination.
- July 28, 2004: Ocaml version 3.08 is required. Numerous small
changes while porting to Ocaml 3.08.
- July 7, 2004: Released version 1.2.6
- July 2, 2004: Character constants such as ’c’ should
have type int, not char. Added a utility function
Cil.charConstToInt that sign-extends chars greater than 128, if needed.
- July 2, 2004: Fixed a bug that was casting values to int
before applying the logical negation operator !. This caused
problems for floats, and for integer types bigger than int.
- June 13, 2004: Added the field sallstmts to a function
description, to hold all statements in the function.
- June 13, 2004: Added new extensions for data flow analyses, and
for computing dominators.
- June 10, 2004: Force initialization of CIL at the start of
Cabs2cil.
- June 9, 2004: Added support for GCC __attribute_used__
- April 7, 2004: Released version 1.2.5
- April 7, 2004: Allow now to run ./configure CC=cl and set the MSVC
compiler to be the default. The MSVC driver will now select the default name
of the .exe file like the CL compiler.
- April 7, 2004: Fixed a bug in the driver. The temporary files are
deleted by the Perl script before the CL compiler gets to them?
- April 7, 2004: Added the - form of arguments to the MSVC driver.
- April 7, 2004: Added a few more GCC-specific string escapes, (, [,
{, %, E.
- April 7, 2004: Fixed bug with continuation lines in MSVC.
- April 6, 2004: Fixed embarassing bug in the parser: the precedence
of casts and unary operators was switched.
- April 5, 2004: Fixed a bug involving statements mixed between
declarations containing initializers. Now we make sure that the initializers
are run in the proper order with respect to the statements.
- April 5, 2004: Fixed a bug in the merger. The merger was keeping
separate alpha renaming talbes (namespaces) for variables and types. This
means that it might end up with a type and a variable named the same way, if
they come from different files, which breaks an important CIL invariant.
- March 11, 2004 : Fixed a bug in the Cil.copyFunction function. The
new local variables were not getting fresh IDs.
- March 5, 2004: Fixed a bug in the handling of static function
prototypes in a block scope. They used to be renamed. Now we just consider
them global.
- February 20, 2004: Released version 1.2.4
- February 15, 2004: Changed the parser to allow extra semicolons
after field declarations.
- February 14, 2004: Changed the Errormsg functions: error, unimp,
bug to not raise an exception. Instead they just set Errormsg.hadErrors.
- February 13, 2004: Change the parsing of attributes to recognize
enumeration constants.
- February 10, 2004: In some versions of gcc the identifier
_{thread is an identifier and in others it is a keyword. Added code
during configuration to detect which is the case.
- January 7, 2004: Released version 1.2.3
- January 7, 2004: Changed the alpha renamer to be less
conservative. It will remember all versions of a name that were seen and will
only create a new name if we have not seen one.
- December 30, 2003 : Extended the cilly command to understand
better linker command options -lfoo.
- December 5, 2003: Added markup commands to the pretty-printer
module. Also, changed the “@<” left-flush command into “@'’.
- December 4, 2003: Wide string literals are now handled
directly by Cil (rather than being exploded into arrays). This is
apparently handy for Microsoft Device Driver APIs that use intrinsic
functions that require literal constant wide-string arguments.
- December 3, 2003: Added support for structured exception handling
extensions for the Microsoft compilers.
- December 1, 2003: Fixed a Makefile bug in the generation of the
Cil library (e.g., cil.cma) that was causing it to be unusable. Thanks
to KEvin Millikin for pointing out this bug.
- November 26, 2003: Added support for linkage specifications
(extern “C”).
- November 26, 2003: Added the ocamlutil directory to contain some
utilities shared with other projects.
- November 25, 2003: Released version 1.2.2
- November 24, 2003: Fixed a bug that allowed a static local to
conflict with a global with the same name that is declared later in the
file.
- November 24, 2003: Removed the --keep option of the cilly
driver and replaced it with --save-temps.
- November 24, 2003: Added printing of what CIL features are being
run.
- November 24, 2003: Fixed a bug that resulted in attributes being
dropped for integer types.
- November 11, 2003: Fixed a bug in the visitor for enumeration
definitions.
- October 24, 2003: Fixed a problem in the configuration script. It
was not recognizing the Ocaml version number for beta versions.
- October 15, 2003: Fixed a problem in version 1.2.1 that was
preventing compilation on OCaml 3.04.
- September 17, 2003: Released version 1.2.1.
- September 7, 2003: Redesigned the interface for choosing
#line directive printing styles. Cil.printLn and
Cil.printLnComment have been merged into Cil.lineDirectiveStyle.
- August 8, 2003: Do not silently pad out functions calls with
arguments to match the prototype.
- August 1, 2003: A variety of fixes suggested by Steve Chamberlain:
initializers for externs, prohibit float literals in enum, initializers for
unsized arrays were not working always, an overflow problem in Ocaml, changed
the processing of attributes before struct specifiers
- July 14, 2003: Add basic support for GCC’s "__thread" storage
qualifier. If given, it will appear as a "thread" attribute at the top of the
type of the declared object. Treatment is very similar to "__declspec(...)"
in MSVC
- July 8, 2003: Fixed some of the __alignof computations. Fixed
bug in the designated initializers for arrays (Array.get error).
- July 8, 2003: Fixed infinite loop bug (Stack Overflow) in the
visitor for __alignof.
- July 8, 2003: Fixed bug in the conversion to CIL. A function or
array argument of
the GCC __typeof() was being converted to pointer type. Instead, it should
be left alone, just like for sizeof.
- July 7, 2003: New Escape module provides utility functions
for escaping characters and strings in accordance with C lexical
rules.
- July 2, 2003: Relax CIL’s rules for when two enumeration types are
considered compatible. Previously CIL considered two enums to be compatible if
they were the same enum. Now we follow the C99 standard.
- June 28, 2003: In the Formatparse module, Eric Haugh found and
fixed a bug in the handling of lvalues of the form “lv->field.more”.
- June 28, 2003: Extended the handling of gcc command lines
arguments in the Perl scripts.
- June 23, 2003: In Rmtmps module, simplified the API for
customizing the root set. Clients may supply a predicate that
returns true for each root global. Modifying various
“referenced” fields directly is no longer supported.
- June 17, 2003: Reimplement internal utility routine
Cil.escape_char. Faster and better.
- June 14, 2003: Implemented support for __attribute__s
appearing between "struct" and the struct tag name (also for unions and
enums), since gcc supports this as documented in section 4.30 of the gcc
(2.95.3) manual
- May 30, 2003: Released the regression tests.
- May 28, 2003: Released version 1.1.2
- May 26, 2003: Add the simplify module that compiles CIL
expressions into simpler expressions, similar to those that appear in a
3-address intermediate language.
- May 26, 2003: Various fixes and improvements to the pointer
analysis modules.
- May 26, 2003: Added optional consistency checking for
transformations.
- May 25, 2003: Added configuration support for big endian machines.
Now Cil.little_endian can be used to test whether the machine is
little endian or not.
- May 22, 2003: Fixed a bug in the handling of inline functions. The
CIL merger used to turn these functions into “static”, which is incorrect.
- May 22, 2003: Expanded the CIL consistency checker to verify
undesired sharing relationships between data structures.
- May 22, 2003: Fixed bug in the oneret CIL module: it was
mishandling certain labeled return statements.
- May 5, 2003: Released version 1.0.11
- May 5, 2003: OS X (powerpc/darwin) support for CIL. Special
thanks to Jeff Foster, Andy Begel and Tim Leek.
- April 30, 2003: Better description of how to use CIL for your
analysis.
- April 28, 2003: Fixed a bug with --dooneRet and
--doheapify. Thanks, Manos Renieris.
- April 16, 2003: Reworked management of
temporary/intermediate output files in Perl driver scripts. Default
behavior is now to remove all such files. To keep intermediate
files, use one of the following existing flags:
-
--keepmerged for the single-file merge of all sources
- --keep=<dir> for various other CIL and
CCured output files
- --save-temps for various gcc intermediate files; MSVC
has no equivalent option
As part of this change, some intermediate files have changed their
names slightly so that new suffixes are always preceded by a
period. For example, CCured output that used to appear in
“foocured.c” now appears in “foo.cured.c”.
- April 7, 2003: Changed the representation of the Cil.GVar
global constructor. Now it is possible to update the initializer without
reconstructing the global (which in turn it would require reconstructing the
list of globals that make up a program). We did this because it is often
tempting to use Cil.visitCilFileSameGlobals and the Cil.GVar
was the only global that could not be updated in place.
- April 6, 2003: Reimplemented parts of the cilly.pl script to make
it more robust in the presence of complex compiler arguments.
- March 10, 2003: Released version 1.0.9
- March 10, 2003: Unified and documented a large number of CIL
Library Modules: oneret, simplemem, makecfg, heapify, stackguard, partial.
Also documented the main client interface for the pointer analysis.
- February 18, 2003: Fixed a bug in logwrites that was causing it
to produce invalid C code on writes to bitfields. Thanks, David Park.
- February 15, 2003: Released version 1.0.8
- February 15, 2003: PDF versions of the manual and API are
available for those who would like to print them out.
- February 14, 2003: CIL now comes bundled with alias analyses.
- February 11, 2003: Added support for adding/removing options from
./configure.
- February 3, 2003: Released version 1.0.7
- February 1, 2003: Some bug fixes in the handling of variable
argument functions in new versions of gcc And glibc.
- January 29, 2003: Added the logical AND and OR operators.
Exapanded the translation to CIL to handle more complicated initializers
(including those that contain logical operators).
- January 28, 2003: Released version 1.0.6
- January 28, 2003: Added support for the new handling of
variable-argument functions in new versions of glibc.
- January 19, 2003: Added support for declarations in interpreted
constructors. Relaxed the semantics of the patterns for variables.
- January 17, 2003: Added built-in prototypes for the gcc built-in
functions. Changed the pGlobal method in the printers to print the
carriage return as well.
- January 9, 2003: Reworked lexer and parser’s strategy for
tracking source file names and line numbers to more closely match
typical native compiler behavior. The visible CIL interface is
unchanged.
- January 9, 2003: Changed the interface to the alpha convertor. Now
you can pass a list where it will record undo information that you can use to
revert the changes that it makes to the scope tables.
- January 6, 2003: Released version 1.0.5
- January 4, 2003: Changed the interface for the Formatcil module.
Now the placeholders in the pattern have names. Also expanded the
documentation of the Formatcil module.
Now the placeholders in the pattern have names.
- January 3, 2003: Extended the rmtmps module to also remove
unused labels that are generated in the conversion to CIL. This reduces the
number of warnings that you get from cgcc afterwards.
- December 17, 2002: Fixed a few bugs in CIL related to the
representation of string literals. The standard says that a string literal
is an array. In CIL, a string literal has type pointer to character. This is
Ok, except as an argument of sizeof. To support this exception, we have
added to CIL the expression constructor SizeOfStr. This allowed us to fix
bugs with computing sizeof("foo bar") and sizeof((char*)"foo bar")
(the former is 8 and the latter is 4).
- December 8, 2002: Fixed a few bugs in the lexer and parser
relating to hex and octal escapes in string literals. Also fixed
the dependencies between the lexer and parser.
- December 5, 2002: Fixed visitor bugs that were causing
some attributes not to be visited and some queued instructions to be
dropped.
- December 3, 2002: Added a transformation to catch stack
overflows. Fixed the heapify transformation.
- October 14, 2002: CIL is now available under the BSD license
(see the License section or the file LICENSE). Released version 1.0.4
- October 9, 2002: More FreeBSD configuration changes, support
for the GCC-ims __signed and __volatile. Thanks to Axel
Simon for pointing out these problems. Released version 1.0.3
- October 8, 2002: FreeBSD configuration and porting fixes.
Thanks to Axel Simon for pointing out these problems.
- September 10, 2002: Fixed bug in conversion to CIL. Now we drop
all “const” qualifiers from the types of locals, even from the fields of
local structures or elements of arrays.
- September 7, 2002: Extended visitor interface to distinguish visitng
offsets inside lvalues from offsets inside initializer lists.
- September 7, 2002: Released version 1.0.1
- September 6, 2002: Extended the patcher with the ateof flag.
- September 4, 2002: Fixed bug in the elaboration to CIL. In some
cases constant folding of || and && was computed wrong.
- September 3, 2002: Fixed the merger documentation.
- August 29, 2002: Released version 1.0.0.
- August 29, 2002: Started numbering versions with a major nubmer,
minor and revisions. Released version 1.0.0.
- August 25, 2002: Fixed the implementation of the unique
identifiers for global variables and composites. Now those identifiers are
globally unique.
- August 24, 2002: Added to the machine-dependent configuration the
sizeofvoid. It is 1 on gcc and 0 on MSVC. Extended the implementation of
Cil.bitsSizeOf to handle this (it was previously returning an error when
trying to compute the size of void).
- August 24, 2002: Changed the representation of structure and
unions to distinguish between undefined structures and those that are defined
to be empty (allowed on gcc). The sizeof operator is undefined for the former
and returns 0 for the latter.
- August 22, 2002: Apply a patch from Richard H. Y. to support
FreeBSD installations. Thanks, Richard!
- August 12, 2002: Fixed a bug in the translation of wide-character
strings. Now this translation matches that of the underlying compiler. Changed
the implementation of the compiler dependencies.
- May 25, 2002: Added interpreted constructors and destructors.
- May 17, 2002: Changed the representation of functions to move the
“inline” information to the varinfo. This way we can print the “inline”
even in declarations which is what gcc does.
- May 15, 2002: Changed the visitor for initializers to make two
tail-recursive passes (the second is a List.rev and only done if one of
the initializers change). This prevents Stack_Overflow for large
initializers. Also improved the processing of initializers when converting to
CIL.
- May 15, 2002: Changed the front-end to allow the use of MSVC
mode even on machines that do not have MSVC. The machine-dependent parameters
for GCC will be used in that case.
- May 11, 2002: Changed the representation of formals in function
types. Now the function type is purely functional.
- May 4, 2002: Added the function
Cil.visitCilFileSameGlobals and changed Cil.visitCilFile to be
tail recursive. This prevents stack overflow on huge files.
- February 28, 2002: Changed the significance of the
CompoundInit in Cil.init to allow for missing initializers at the
end of an array initializer. Added the API function
Cil.foldLeftCompoundAll.


7.4. Query and Export Commands¶
These commands are used to query and export simple features. Required parameters are indicated with a *
.
7.4.1. convert
¶
The convert command is used to directly transform data in one format into another, without ingesting them into GeoMesa. For example, it could be used to convert CSV files to GeoJSON.
| Argument | Description |
|---|---|
-C, --converter * |
The GeoMesa converter used to create SimpleFeature s |
-s, --spec * |
The SimpleFeatureType specification to create |
-f, --feature-name |
The name of the schema |
-q, --cql |
CQL filter to select features to export |
-m, --max-features |
Limit the number of features exported |
-F, --output-format |
Output format used for export |
-o, --output |
Output to a file instead of standard out |
--hints |
Query hints used to modify the query |
--index |
Specific index used to run the query |
--no-header |
Don’t export the type header, for CSV and TSV formats |
--gzip |
Level of gzip compression to use for output, from 1-9 |
7.4.2. explain
¶
The explain command can be used to debug queries that are slow or problematic. Without actually running the query, it will show a variety of data, including the index being used, any query hints extracted, the exact ranges being scanned and filters being applied.
| Argument | Description |
|---|---|
-c, --catalog * |
The catalog table containing schema metadata |
-f, --feature-name * |
The name of the schema |
-q, --cql * |
CQL filter to select features to export |
-a, --attributes |
Specific attributes to export |
--hints |
Query hints used to modify the query |
--index |
Specific index used to run the query |
See export for a description of the arguments.
7.4.3. export
¶
Export features in a variety of formats.
See Moving and Migrating Data for details on how the export/import commands can be used to move data between clusters.
| Argument | Description |
|---|---|
-c, --catalog * |
The catalog table containing schema metadata |
-f, --feature-name * |
The name of the schema |
-q, --cql |
CQL filter to select features to export |
-a, --attributes |
Specific attributes to export |
-m, --max-features |
Limit the number of features exported |
-F, --output-format |
Output format used for export |
-o, --output |
Output to a file instead of standard out |
--hints |
Query hints used to modify the query |
--index |
Specific index used to run the query |
--no-header |
Don’t export the type header, for CSV and TSV formats |
--gzip |
Level of gzip compression to use for output, from 1-9 |
The --attributes
argument can be used to select a subset of attributes to export, or to transform
the attributes using filter functions. A simple projection can be specified as a comma-delimited list:
--attributes name,age,geom
The feature ID can be specified along with other attribute names, with the reserved word id
:
--attributes id,name,age,geom
Transforms can be accomplished by specifying transform functions:
--attributes id,name,name_transform=strConcat(name, 'foo')
For a full list of transforms, see the GeoTools documentation. Note that not all functions work in transforms, however.
The --output-format
argument defines the encoding used for export. Currently, it can be one of:
arrow
Apache Arrow streaming file formatavro
Apache Avro formatbin
Custom minimal binary encodingcsv
,tsv
geojson
,json
gml
Geography Markup Languageshp
ESRI Shapefileleaflet
Export data to a leaflet map and open in the default browser, if possiblenull
suppress output entirely
Note
The leaflet format is intended for testing and small scale data exploration and visualization only. For production map generation it is highly recommended to use GeoServer. Additionally, the resulting file from this command requires the use of an online browser to open in order to access online resources.
The --output
argument can be used to export to a file. By default, export data is written to the standard
output stream.
The --hints
argument can be used to set query hints. Hints should be specified as key1=value1;key2=value2
, etc.
Note that due to shell expansion, the hint string will likely need to be quoted. See Analytic Querying for
examples of query hints that can be set. Note that query hints may cause errors if they don’t correspond to the
output format specified.
The --index
argument can be used to force the query to run against a particular index, instead of using
the best index as determined through query planning. The argument should be the name of an index, e.g. id
or z3
. See Index Overview for a list of valid indices. Note that not all schemas will
have all index types.
The --gzip
argument can be used to compress the output through gzip encoding. It can be specified
as a number between 1-9. Higher numbers indicate more compression, lower numbers indicate faster compression.
7.4.4. playback
¶
The playback command can simulate a streaming ingestion by replaying features that have already been ingested. Features are returned based on a date attribute in the feature. For example, if replaying three features that have dates that are each one second apart, each feature will be emitted after a delay of one second. The rate of export can be modified to speed up or slow down the original time differences.
In order to simulate a data stream, the output of this command can be piped into another process, for example to send messages to a Kafka topic or write files to NiFi for ingestion.
| Argument | Description |
|---|---|
-c, --catalog * |
The catalog table containing schema metadata |
-f, --feature-name * |
The name of the schema |
--interval * |
Date interval to replay, in the format
yyyy-MM-dd'T'HH:mm:ss.SSSZ/yyyy-MM-dd'T'HH:mm:ss.SSSZ |
--dtg |
Date attribute to base playback on. If not specified, will use the default schema date field |
--rate |
Rate multiplier to speed-up (or slow down) features being returned, as a float |
--step-window |
Query the interval in discrete chunks instead of all at once (‘10 minutes’, ‘30 seconds’, etc) |
-q, --cql |
Additional CQL filter to select features to export. Features will automatically be filtered to match the time interval |
-a, --attributes |
Specific attributes to export |
-m, --max-features |
Limit the number of features exported |
-F, --output-format |
Output format used for export |
-o, --output |
Output to a file instead of standard out |
--hints |
Query hints used to modify the query |
--no-header |
Don’t export the type header, for CSV and TSV formats |
--gzip |
Level of gzip compression to use for output, from 1-9 |
The playback command is an extension of the export command, and accepts all the parameters outlined there.
The --interval
parameter specifies the date range for features to replay, based on the date attribute
specified by --dtg
, or the default schema date attribute if not specified.
The --rate
parameter can be used to speed up or slow down the replay. It is specified as a floating point
number. For example --rate 10
will make replay ten times faster, while --rate 0.1
will make replay
ten times slower.
The --step-window
parameter can be used to break up the query into discrete chunks, based on the time interval.
For larger exports, this will save memory overhead when sorting and will likely be faster. The window should be
large enough so that the overhead of creating multiple queries doesn’t slow down the process, but small enough so
that a manageable batch of features is returned for each query. The optimal window size will depend on the
time-based density of features, and the available hardware.


| PERLLINUX(1) | Perl Programmers Reference Guide | PERLLINUX(1) |
Also, some special instructions for building Perl with Sun Studio on Linux. Following the normal "Configure", you have to run make as follows:
LDLOADLIBS=-lc make
"LDLOADLIBS" is an environment variable used by the linker to link modules "/ext" modules to glibc. Currently, that environment variable is not getting populated by a combination of "Config" entries and "ExtUtil::MakeMaker". While there may be a bug somewhere in Perl's configuration or "ExtUtil::MakeMaker" causing the problem, the most likely cause is an incomplete understanding of Sun Studio by this author. Further investigation is needed to get this working better.
Please report any errors, updates, or suggestions to <https://github.com/Perl/perl5/issues>.
| 2020-02-11 | perl v5.30.3 |


Ghost of the Ancient Railroad Engineer:
I can move no more. Could you
please go to the Trolley Ruins and meet my friend for me?
I am too weak to go see him now. Please...a favor for an old, harmless ghost.


You are downloading data for the current calendar month. Data for this report is calculated using calendar months (for example, January 1st-January 31st). Data for this month will not be complete until the end of the month.
This report contains growth monitoring information for children up to 5 years old.
Please make the following selections before you can export:
- Select at least a district-level location
- Select at least one filter
Please make the following selections before you can export:
- Select at least a block-level location
- Select at least one AWC
Please make the following selections before you can export:
-
Select a at least state-level location
Please make the following selections before you can export:
-
Select a at least state-level location