Wiki
Version 2 (modified by hopscc, 15 years ago)

--

Use

use <namespace>
use <namespace> from <library-name>

Specify a namespace and its contents to make available to this module.

When using the first form if the compiler cannot immediately locate the namespace
(i.e if its not in the list of default loaded libraries)
it will look for a (platform dependent) library-name of the same form as the namespace.

For .Net thats the namespace with '.dll' appended

use Foo.Bar 
# On .Net will look for namespace in Foo.Bar.dll if not already available

If the filename of the library differs from the namespace, you can specify it with the second form.
<library-name> can be a simple identifier, qualified identifier (Foo.Bar) or a string literal.

use Foo.Bar from SomeLib

You can put single or double quotes around the file name if its components are not legal identifiers.
(for example, the filename has a space or punctuation mark in it).

use Foo.Bar from "My Lib"

Platform

On .Net <library-name> will refer to a .Net Assembly or dll.

No ".dll" extension is expected (or allowed) in any of this syntax.

In .Net the list of default loaded libraries is:

  • System
  • System.Collections.Generic
  • System.IO
  • System.Text
  • CobraCore (Cobra.Lang.dll)

Examples

use System.Windows.Forms 
use System.Drawing

Notes

In most cases this syntax means you dont need to specify the commandline -reference switch

With MyProg.cobra containing ...

use Foo.Bar

Instead of compilation by

cobra -reference:Foo.Bar MyProg.cobra

you can just say:

cobra MyProg.cob