UI - View positioned correctly
[clnl] / src / main / package.lisp
index e745926300fda5b61e2fec84726ff2604e0f55ce..970535e0085f0e250c92182370ac8dc1d85dac0a 100644 (file)
@@ -1,5 +1,8 @@
 (defpackage #:clnl (:use :common-lisp)
- (:export :run :boot :run-commands :run-reporter)
+ (:export
+  #:run #:boot #:run-commands #:run-reporter #:*model-package*
+  #:model->multi-form-lisp #:model->single-form-lisp
+  #:nlogo->lisp)
  (:documentation
   "Main CLNL package
 
@@ -8,17 +11,32 @@ the place that ties all the parts together into a cohesive whole."))
 
 (defpackage #:clnl-parser
  (:use :common-lisp)
- (:export :parse)
+ (:export #:parse)
  (:documentation
   "CLNL Parser
 
 All the code to convert the list of tokens coming from the lexer
 into an ast that can be transpiled later."))
 
+(defpackage #:clnl-code-parser
+ (:use :common-lisp)
+ (:export #:parse #:globals #:procedures #:turtles-own-vars #:patches-own-vars #:breeds)
+ (:documentation
+  "CLNL Code Parser
+
+A parser specifically for code from NetLogo models, that turns the lexed
+ast from an entire structured file into something more defined.
+
+This is different from the general parser (in clnl-parser) in that
+it's made for parsing the code section of nlogo files, and so works
+outside of the constraints.  In NetLogo, I believe this is analagous
+to the StructureParser, but I'm guessing there's weird overlap with
+other things."))
+
 (defpackage #:clnl-random
  (:use :common-lisp)
  (:shadow #:export)
- (:export #:export #:set-seed #:next-int #:next-double)
+ (:export #:export #:set-seed #:next-int #:next-double #:next-long)
  (:documentation
   "Wrapper around mt19937.
 
@@ -28,7 +46,7 @@ to match how java.util.Random works.  Turtles, all the way down."))
 
 (defpackage #:clnl-transpiler
  (:use :common-lisp)
- (:export :transpile-commands :transpile-reporter)
+ (:export #:transpile #:reporter-p #:command-list-p)
  (:documentation
   "CLNL Transpiler
 
@@ -47,24 +65,9 @@ the nvm in the same way that comes out of this transpiler
 All the code to convert the list of tokens coming from the lexer
 into an ast that can be transpiled later."))
 
-(defpackage #:clnl-nvm
- (:use :common-lisp)
- (:export :export-world :create-world :current-state
-  ; API as used by transpiled NetLogo programs
-  #:ask
-  #:create-turtles
-  #:forward
-  #:random-float
-  #:show
-  #:turtles)
- (:documentation
-  "CLNL NVM
-
-NetLogo Virtual Machine: the simulation engine."))
-
 (defpackage #:clnl-lexer
  (:use :common-lisp)
- (:export :lex)
+ (:export #:lex)
  (:documentation
   "CLNL Lexer
 
@@ -72,7 +75,7 @@ The primary code responsible for tokenizing NetLogo code."))
 
 (defpackage #:clnl-interface
  (:use :common-lisp)
- (:export :run :export-view)
+ (:export #:run #:export-view #:initialize)
  (:documentation
   "CLNL Interface
 
@@ -80,12 +83,35 @@ The NetLogo view interface using opengl.  This is responsible for taking the
 current state of the enging and displaying it.  Will not house any interface
 components."))
 
-(defpackage #:clnl-cli
- (:use :common-lisp :cl-charms/low-level)
- (:export :run)
+(defpackage #:clnl-model
+ (:use :common-lisp)
+ (:export
+  #:execute-button #:default-model #:read-from-nlogo #:world-dimensions #:widget-globals #:code
+  #:buttons #:view #:interface #:set-current-interface #:set-callback)
+ (:documentation
+  "CLNL Model
+
+The representation, parsing, and serializing of NetLogo model files, including
+all of the sections, and subsections held within.  This package houses not only
+the code to read and write .nlogo files, but also the living state of the model
+as clnl runs."))
+
+(defpackage #:clnl-extensions
+ (:use :common-lisp)
+ (:export #:load-extension #:prims)
  (:documentation
-  "CLNL CLI
+  "CLNL Extensions
+
+The loading and handling of extensions to CLNL modeled after the way that
+NetLogo handles extensions.
 
-The main NetLogo interface for interacting with the program.  Since CLNL is
-a command line interface program with a view for display purposes only, this
-is where all the features that the traditional NetLogo UI lives."))
+Extensions are defined as Common Lisp systems (under asdf) that export
+the primitive PRIMS.  The name of the asdf system is defined to be the
+name of the extension prepended by CLNL-EXTENSION-, such that for a hypothetical
+extension ARRAY, the name of the asdf system would be CLNL-EXTENSION-ARRAY
+and found through conventional asdf means.  The package that the required
+functions are symbols in should be the same as the asdf system."))
+
+(defpackage #:clnl-default-model-package
+ (:use :common-lisp)
+ (:shadow #:go))