1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
|
#pragma once
#include "Named.h"
#include "Reader.h"
namespace storm {
STORM_PKG(core.info);
/**
* Holds license information about a package. Each instance holds a single licence.
*/
class License : public Named {
STORM_CLASS;
public:
// Create. 'id' is the identifier in the name tree.
STORM_CTOR License(Str *id, Str *title, Str *author, Str *body);
// License title.
Str *title;
// License author.
Str *author;
// License body.
Str *body;
// To string.
void STORM_FN toS(StrBuf *to) const;
// Can replace another entity?
virtual MAYBE(Str *) STORM_FN canReplace(Named *old, ReplaceContext *ctx);
};
// Find all licenses in a part of the name tree.
Array<License *> *STORM_FN licenses(EnginePtr e) ON(Compiler);
Array<License *> *STORM_FN licenses(Named *root) ON(Compiler);
STORM_PKG(lang.license);
namespace license {
// Reader for licenses.
PkgReader *STORM_FN reader(Array<Url *> *files, Package *pkg) ON(Compiler);
}
/**
* Reader for license files.
*
* We don't bother implementing individual file readers, as syntax highlighting is not very
* important for this file type.
*/
class LicenseReader : public PkgReader {
STORM_CLASS;
public:
// Create.
STORM_CTOR LicenseReader(Array<Url *> *files, Package *pkg);
// We read licenses as types.
virtual void STORM_FN readTypes();
private:
// Load a single license.
License *STORM_FN readLicense(Url *file);
};
}
|