370919 | 2002-03-20 | Martin Nilsson | | #pike __REAL_VERSION__
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | |
|
711503 | 2002-10-29 | Martin Nilsson | |
|
3f97b3 | 2001-04-11 | David Norlin | | #include "./debug.h"
|
35eee7 | 2001-01-08 | David Norlin | |
|
9eaf1d | 2008-06-28 | Martin Nilsson | | protected inherit "module.pmod";
protected inherit Parser.XML.Tree;
|
3f97b3 | 2001-04-11 | David Norlin | |
|
df1981 | 2014-08-12 | Per Hedbor | | constant lfuns = ([
"`+": "OBJ + x",
"`-": "OBJ - x",
"`&": "OBJ & x",
"`|": "OBJ | x",
"`^": "OBJ ^ x",
"`<<":"OBJ << x",
"`>>":"OBJ >> x",
"`*": "OBJ * x",
|
e98fc6 | 2016-05-30 | Per Hedbor | | "`**": "OBJ ** x",
|
df1981 | 2014-08-12 | Per Hedbor | | "`/": "OBJ / x",
"`%": "OBJ % x",
"`~": "~OBJ",
"`==": "OBJ == x",
"`<": "OBJ < x",
"`>": "OBJ > x",
|
e894cb | 2014-08-25 | Per Hedbor | | "__hash":"hash_value(OBJ)",
|
df1981 | 2014-08-12 | Per Hedbor | | "cast":"(cast)OBJ",
"`!": "!OBJ",
|
e894cb | 2014-08-25 | Per Hedbor | | "`[]":"OBJ[ x ]",
"`->":"OBJ->X",
|
df1981 | 2014-08-12 | Per Hedbor | | "_sizeof":"sizeof(OBJ)",
"_indices":"indices(OBJ)",
"_values":"values(OBJ)",
|
e894cb | 2014-08-25 | Per Hedbor | | "_size_object":"Debug.size_object(OBJ)",
|
df1981 | 2014-08-12 | Per Hedbor | | "`()":"OBJ()",
"``+":"x + OBJ",
"``-":"x - OBJ",
"``&":"x & OBJ",
"``|":"x | OBJ",
"``^":"x ^ OBJ",
"``<<":"x << OBJ",
"``>>":"x >> OBJ",
"``*":"x * OBJ",
|
e98fc6 | 2016-05-30 | Per Hedbor | | "``**":"x ** OBJ",
|
df1981 | 2014-08-12 | Per Hedbor | | "``/":"x / OBJ",
"``%":"x % OBJ",
|
e894cb | 2014-08-25 | Per Hedbor | | "`->=":"OBJ->X = y",
"`[]=":"OBJ[ x ] = y",
"`+=":"OBJ += x",
|
df1981 | 2014-08-12 | Per Hedbor | |
"`-=":"NOTIMPL",
"`&=":"NOTIMPL",
"`|=":"NOTIMPL",
"`^=":"NOTIMPL",
"`<<=":"NOTIMPL",
"`>>=":"NOTIMPL",
"`*=":"NOTIMPL",
"`/=":"NOTIMPL",
"`%=":"NOTIMPL",
"`~=":"NOTIMPL",
"`<=":"NOTIMPL",
"`>=":"NOTIMPL",
"`!=":"NOTIMPL",
|
e894cb | 2014-08-25 | Per Hedbor | | "_is_type":"is_type(OBJ)",
|
df1981 | 2014-08-12 | Per Hedbor | | "_sprintf":"sprintf(...,OBJ)",
"_equal":"equal(OBJ,x)",
"_m_delete":"m_delete(OBJ,x)",
"_get_iterator":"foreach(OBJ;...)",
|
e894cb | 2014-08-25 | Per Hedbor | | "`[..]":"OBJ[start..end]",
|
df1981 | 2014-08-12 | Per Hedbor | |
|
ef6755 | 2014-08-25 | Per Hedbor | | "_search":"search(OBJ,x)",
|
df1981 | 2014-08-12 | Per Hedbor | | "_random":"random(OBJ)",
|
ef6755 | 2014-08-25 | Per Hedbor | | |
df1981 | 2014-08-12 | Per Hedbor | | "_serialize",
"_deserialize",
"_size_object",
*/
|
e894cb | 2014-08-25 | Per Hedbor | |
|
ef6755 | 2014-08-25 | Per Hedbor | | "_decode":"OBJ = decode_value(...)",
"_encode":"str = encode_value(OBJ)",
|
df1981 | 2014-08-12 | Per Hedbor | | ]);
|
35eee7 | 2001-01-08 | David Norlin | |
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | class Type(string name) {
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | string print() { return name; }
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
14fcb5 | 2011-12-04 | Henrik Grubbström (Grubba) | | string xml(.Flags|void flags) { return xmltag(name);}
|
35eee7 | 2001-01-08 | David Norlin | | }
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | class ArrayType {
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | inherit Type;
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | Type valuetype;
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | void create() { ::create("array"); }
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | string print() {
if (valuetype)
return "array(" + valuetype->print() + ")";
else
return "array";
}
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
14fcb5 | 2011-12-04 | Henrik Grubbström (Grubba) | | string xml(.Flags|void flags) {
|
35eee7 | 2001-01-08 | David Norlin | | if (!valuetype)
|
14fcb5 | 2011-12-04 | Henrik Grubbström (Grubba) | | return ::xml(flags);
|
35eee7 | 2001-01-08 | David Norlin | | return xmltag("array",
|
c615cd | 2011-12-18 | Henrik Grubbström (Grubba) | | xmltag("valuetype", valuetype->xml(flags)));
|
35eee7 | 2001-01-08 | David Norlin | | }
}
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | class ProgramType {
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | inherit Type;
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
381839 | 2003-02-05 | Martin Nilsson | | string classname;
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
381839 | 2003-02-05 | Martin Nilsson | | string print() {
if(classname)
return "program(" + classname + ")";
else
return "program";
}
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | void create() { ::create("program"); }
}
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | class FloatType {
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | inherit Type;
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | void create() { ::create("float"); }
}
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | class IntType {
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | inherit Type;
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | string min, max;
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | void create() { ::create("int"); }
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | string print() {
if (min || max)
return "int(" + (min ? min : "")
+ ".." + (max ? max : "") + ")";
else
return "int";
}
|
14fcb5 | 2011-12-04 | Henrik Grubbström (Grubba) | | string xml(.Flags|void flags) {
|
35eee7 | 2001-01-08 | David Norlin | | if (min || max)
return xmltag("int",
xmltag("min", min) + xmltag("max", max));
return xmltag("int");
}
}
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | class StringType {
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | inherit Type;
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
94ddcc | 2007-06-02 | Martin Bähr | | string min;
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
94ddcc | 2007-06-02 | Martin Bähr | | string max;
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | void create() { ::create("string"); }
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
84108b | 2007-03-04 | Martin Nilsson | | string print() {
|
94ddcc | 2007-06-02 | Martin Bähr | | if (min||max)
return "string(" + (min ? min : "")
+ ".." + (max ? max : "") + ")";
|
84108b | 2007-03-04 | Martin Nilsson | | else
return "string";
}
|
14fcb5 | 2011-12-04 | Henrik Grubbström (Grubba) | | string xml(.Flags|void flags) {
|
94ddcc | 2007-06-02 | Martin Bähr | | if (min||max)
|
352471 | 2015-05-26 | Martin Nilsson | | return xmltag("string",
xmltag("min", min) +
|
94ddcc | 2007-06-02 | Martin Bähr | | xmltag("max", max));
|
84108b | 2007-03-04 | Martin Nilsson | | return xmltag("string");
}
|
35eee7 | 2001-01-08 | David Norlin | | }
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | class MixedType {
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | inherit Type;
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | void create() { ::create("mixed"); }
}
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | class FunctionType {
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | inherit Type;
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | array(Type) argtypes;
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | Type returntype;
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | void create() { ::create("function"); }
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | string print() {
if (argtypes && returntype) {
return "function("
+ map(argtypes, lambda(Type t) {
return t->print();
}) * ", "
+ " : "
+ returntype->print()
+ ")";
} else
return "function";
}
|
14fcb5 | 2011-12-04 | Henrik Grubbström (Grubba) | | string xml(.Flags|void flags) {
|
35eee7 | 2001-01-08 | David Norlin | | string s = "";
if (argtypes)
foreach(argtypes, Type t)
|
14fcb5 | 2011-12-04 | Henrik Grubbström (Grubba) | | s += xmltag("argtype", t->xml(flags));
|
35eee7 | 2001-01-08 | David Norlin | | if (returntype)
|
14fcb5 | 2011-12-04 | Henrik Grubbström (Grubba) | | s += xmltag("returntype", returntype->xml(flags));
|
35eee7 | 2001-01-08 | David Norlin | | return xmltag("function", s);
}
}
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | class MappingType {
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | inherit Type;
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | Type indextype, valuetype;
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | void create() { ::create("mapping"); }
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | string print() {
if (indextype && valuetype) {
return "mapping("
+ indextype->print()
+ " : "
+ valuetype->print()
+ ")";
}
else
return "mapping";
}
|
14fcb5 | 2011-12-04 | Henrik Grubbström (Grubba) | | string xml(.Flags|void flags) {
|
35eee7 | 2001-01-08 | David Norlin | | if (indextype && valuetype)
return xmltag("mapping",
|
14fcb5 | 2011-12-04 | Henrik Grubbström (Grubba) | | xmltag("indextype", indextype->xml(flags))
+ xmltag("valuetype", valuetype->xml(flags)));
|
35eee7 | 2001-01-08 | David Norlin | | else
return xmltag("mapping");
}
}
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | class MultisetType {
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | inherit Type;
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | Type indextype;
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | void create() { ::create("multiset"); }
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | string print() {
if (indextype) {
return "multiset("
+ indextype->print()
+ ")";
}
else
return "multiset";
}
|
14fcb5 | 2011-12-04 | Henrik Grubbström (Grubba) | | string xml(.Flags|void flags) {
|
35eee7 | 2001-01-08 | David Norlin | | if (indextype)
return xmltag("multiset",
|
14fcb5 | 2011-12-04 | Henrik Grubbström (Grubba) | | xmltag("indextype", indextype->xml(flags)));
|
35eee7 | 2001-01-08 | David Norlin | | return xmltag("multiset");
}
}
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | class ObjectType {
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | inherit Type;
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | string classname;
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | void create() { ::create("object"); }
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | string print() {
if (classname)
return "object(" + classname + ")";
else
return "object";
}
|
14fcb5 | 2011-12-04 | Henrik Grubbström (Grubba) | | string xml(.Flags|void flags) {
|
35eee7 | 2001-01-08 | David Norlin | | return xmltag("object", classname);
}
}
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
05f643 | 2002-12-30 | Henrik Grubbström (Grubba) | | class TypeType {
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
05f643 | 2002-12-30 | Henrik Grubbström (Grubba) | | inherit Type;
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
05f643 | 2002-12-30 | Henrik Grubbström (Grubba) | | Type subtype = MixedType();
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
05f643 | 2002-12-30 | Henrik Grubbström (Grubba) | | void create() { ::create("type"); }
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
05f643 | 2002-12-30 | Henrik Grubbström (Grubba) | | string print() {
if (subtype->name != "mixed") {
return "type(" + subtype->print() + ")";
}
return "type";
}
|
14fcb5 | 2011-12-04 | Henrik Grubbström (Grubba) | | string xml(.Flags|void flags) {
return xmltag("type", subtype->xml(flags));
|
05f643 | 2002-12-30 | Henrik Grubbström (Grubba) | | }
}
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | class VoidType {
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | inherit Type;
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | void create() { ::create("void"); }
}
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
05f643 | 2002-12-30 | Henrik Grubbström (Grubba) | | class ZeroType {
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
05f643 | 2002-12-30 | Henrik Grubbström (Grubba) | | inherit Type;
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
05f643 | 2002-12-30 | Henrik Grubbström (Grubba) | | void create() { ::create("zero"); }
}
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | class OrType {
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | inherit Type;
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | array(Type) types;
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | void create() { ::create("or"); }
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | string print() {
return map(types, lambda(Type t) { return t->print(); }) * " | ";
}
|
14fcb5 | 2011-12-04 | Henrik Grubbström (Grubba) | | string xml(.Flags|void flags) {
|
35eee7 | 2001-01-08 | David Norlin | | string s = "";
foreach(types, Type t)
|
14fcb5 | 2011-12-04 | Henrik Grubbström (Grubba) | | s += t->xml(flags);
|
35eee7 | 2001-01-08 | David Norlin | | return xmltag("or", s);
}
}
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | class VarargsType {
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | inherit Type;
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | Type type;
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | void create(Type t) { ::create("varargs"); type = t; }
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | string print() { return type->print() + " ..."; }
|
14fcb5 | 2011-12-04 | Henrik Grubbström (Grubba) | | string xml(.Flags|void flags) { return xmltag("varargs", type->xml(flags)); }
|
35eee7 | 2001-01-08 | David Norlin | | }
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
7bf3cc | 2008-04-07 | Henrik Grubbström (Grubba) | | class AttributeType {
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
7bf3cc | 2008-04-07 | Henrik Grubbström (Grubba) | | inherit Type;
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
7bf3cc | 2008-04-07 | Henrik Grubbström (Grubba) | | string attribute;
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
7bf3cc | 2008-04-07 | Henrik Grubbström (Grubba) | | Type subtype;
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
7bf3cc | 2008-04-07 | Henrik Grubbström (Grubba) | | int prefix;
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
7bf3cc | 2008-04-07 | Henrik Grubbström (Grubba) | | void create() { ::create("__attribute__"); }
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
7bf3cc | 2008-04-07 | Henrik Grubbström (Grubba) | | string print() {
if (attribute == "\"deprecated\"") {
return prefix?"__deprecated__ " + subtype->print():
"__deprecated__(" + subtype->print() + ")";
} else {
return prefix?"__attribute__(" + attribute + ") " + subtype->print():
"__attribute__(" + attribute + ", " + subtype->print() + ")";
}
}
|
14fcb5 | 2011-12-04 | Henrik Grubbström (Grubba) | | string xml(.Flags|void flags) {
|
7bf3cc | 2008-04-07 | Henrik Grubbström (Grubba) | | return xmltag("attribute",
(prefix?xmltag("prefix"):"") +
xmltag("attribute", attribute) +
|
14fcb5 | 2011-12-04 | Henrik Grubbström (Grubba) | | xmltag("subtype", subtype->xml(flags)));
|
7bf3cc | 2008-04-07 | Henrik Grubbström (Grubba) | | }
}
|
35eee7 | 2001-01-08 | David Norlin | |
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
cef029 | 2002-12-06 | Henrik Grubbström (Grubba) | | class Documentation(string|void text, string|void xml,
SourcePosition|void position)
{}
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
9eaf1d | 2008-06-28 | Martin Nilsson | | protected Documentation EmptyDoc =
|
cef029 | 2002-12-06 | Henrik Grubbström (Grubba) | | Documentation("", "\n", SourcePosition(__FILE__, __LINE__, __LINE__));
|
35eee7 | 2001-01-08 | David Norlin | |
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | class DocGroup {
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | array(PikeObject) objects = ({ });
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | Documentation documentation = 0;
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
9eaf1d | 2008-06-28 | Martin Nilsson | | protected void create(array(PikeObject) objs, Documentation doc) {
|
35eee7 | 2001-01-08 | David Norlin | | documentation = doc;
objects = objs;
}
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | string appears = 0;
string belongs = 0;
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
14fcb5 | 2011-12-04 | Henrik Grubbström (Grubba) | | string xml(.Flags|void flags) {
|
46b75b | 2001-01-08 | Henrik Grubbström (Grubba) | | mapping(string:string) m = ([]);
|
35eee7 | 2001-01-08 | David Norlin | | if (appears) m->appears = appears;
if (belongs) m->belongs = belongs;
|
8510d4 | 2001-01-25 | David Norlin | |
mapping (string:int) types = ([]);
mapping (string:int) names = ([]);
foreach(objects, PikeObject obj) {
types[obj->objtype] = 1;
if (obj->name)
names[obj->name] = 1;
}
if (sizeof(types) == 1) {
m["homogen-type"] = indices(types)[0];
if (sizeof(names) == 1)
m["homogen-name"] = objects[0]->name;
}
|
35eee7 | 2001-01-08 | David Norlin | | string res = opentag("docgroup", m);
if (documentation)
|
46c562 | 2001-01-11 | Henrik Grubbström (Grubba) | | res += xmltag("doc", documentation->xml) + "\n";
|
793b47 | 2001-05-15 | David Norlin | | foreach(objects, PikeObject obj)
|
14fcb5 | 2011-12-04 | Henrik Grubbström (Grubba) | | res += obj->xml(flags) + "\n";
|
46c562 | 2001-01-11 | Henrik Grubbström (Grubba) | | return res + closetag("docgroup") + "\n";
|
35eee7 | 2001-01-08 | David Norlin | | }
}
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | class PikeObject {
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | array(string) modifiers = ({ });
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
246a8a | 2001-10-03 | Martin Nilsson | | string name;
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
246a8a | 2001-10-03 | Martin Nilsson | | constant objtype = "pikeobject";
|
35eee7 | 2001-01-08 | David Norlin | |
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | SourcePosition position;
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
246a8a | 2001-10-03 | Martin Nilsson | | string appears;
string belongs;
|
35eee7 | 2001-01-08 | David Norlin | |
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
246a8a | 2001-10-03 | Martin Nilsson | | Documentation squeezedInDoc;
|
35eee7 | 2001-01-08 | David Norlin | |
|
b987c7 | 2016-08-03 | Henrik Grubbström (Grubba) | | int containsDoc()
{
if (squeezedInDoc && squeezedInDoc != EmptyDoc) return 1;
return 0;
}
|
14fcb5 | 2011-12-04 | Henrik Grubbström (Grubba) | | protected string standardTags(.Flags|void flags) {
|
d47c32 | 2001-03-06 | David Norlin | | string s = "";
if (position)
|
14fcb5 | 2011-12-04 | Henrik Grubbström (Grubba) | | s += position->xml(flags);
|
d47c32 | 2001-03-06 | David Norlin | | if (sizeof(modifiers))
s += xmltag("modifiers", map(modifiers, xmltag) * "");
return s;
|
35eee7 | 2001-01-08 | David Norlin | | }
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
14fcb5 | 2011-12-04 | Henrik Grubbström (Grubba) | | string xml(.Flags|void flags) {
return standardStart(flags) + standardEnd(flags);
|
35eee7 | 2001-01-08 | David Norlin | | }
|
14fcb5 | 2011-12-04 | Henrik Grubbström (Grubba) | | protected mapping(string:string) standardAttributes(.Flags|void flags) {
|
46b75b | 2001-01-08 | Henrik Grubbström (Grubba) | | mapping(string:string) m = ([]);
|
35eee7 | 2001-01-08 | David Norlin | | if (name) m->name = name;
if (appears) m->appears = appears;
if (belongs) m->belongs = belongs;
return m;
}
|
14fcb5 | 2011-12-04 | Henrik Grubbström (Grubba) | | protected string standardStart(.Flags|void flags) {
return opentag(objtype, standardAttributes(flags));
}
protected string standardEnd(.Flags|void flags) { return closetag(objtype); }
|
35eee7 | 2001-01-08 | David Norlin | |
|
9eaf1d | 2008-06-28 | Martin Nilsson | | protected string printModifiers() {
|
35eee7 | 2001-01-08 | David Norlin | | return modifiers * " " + (sizeof(modifiers) ? " " : "");
}
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | string print() { return printModifiers() + objtype; }
}
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | class Inherit {
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | inherit PikeObject;
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
246a8a | 2001-10-03 | Martin Nilsson | | constant objtype = "inherit";
|
35eee7 | 2001-01-08 | David Norlin | |
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | string classname;
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
14fcb5 | 2011-12-04 | Henrik Grubbström (Grubba) | | string xml(.Flags|void flags) {
return standardStart(flags) +
standardTags(flags) +
|
35eee7 | 2001-01-08 | David Norlin | | xmltag("classname", classname) +
|
14fcb5 | 2011-12-04 | Henrik Grubbström (Grubba) | | standardEnd(flags);
|
35eee7 | 2001-01-08 | David Norlin | | }
string print() {
return ::print() + " " + classname + (name ? "" : " : " + name);
}
}
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
dc7a9f | 2001-04-19 | David Norlin | | class Import {
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
7dc698 | 2003-11-08 | Henrik Grubbström (Grubba) | | inherit Inherit;
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
246a8a | 2001-10-03 | Martin Nilsson | | constant objtype = "import";
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
7dc698 | 2003-11-08 | Henrik Grubbström (Grubba) | | string print() {
return ::print() + " " + classname;
}
|
dc7a9f | 2001-04-19 | David Norlin | | }
|
211069 | 2012-02-05 | Henrik Grubbström (Grubba) | |
class CppDirective {
inherit PikeObject;
constant objtype = "directive";
protected void create(string directive)
{
name = directive;
}
}
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | class _Class_or_Module {
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | inherit PikeObject;
string directory = 0;
string file = 0;
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | Documentation documentation;
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
7dc698 | 2003-11-08 | Henrik Grubbström (Grubba) | | array(Inherit|Import) inherits = ({ });
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | array(_Class_or_Module) children = ({ });
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | array(DocGroup) docGroups = ({ });
|
df1981 | 2014-08-12 | Per Hedbor | | void fixGettersSetters()
{
mapping(string:array(PikeObject)) found = ([]);
mapping(string:mapping(string:Documentation)) docs = ([]);
foreach( docGroups;int index; DocGroup doge )
{
foreach( doge->objects; int subindex; PikeObject o )
{
|
e8a38c | 2014-08-16 | Per Hedbor | | if( lfuns[o->name] == "NOTIMPL" && objtype != "namespace")
|
df1981 | 2014-08-12 | Per Hedbor | | {
werror("WARNING: Dropping documentation for %s. "
"There is no such operator\n"
"Found in documentation for %s\n",
o->name,o->position?->filename||name);
doge->objects[subindex] = 0;
}
else if( o->name[0..0] == "`" && !lfuns[o->name] )
{
string key = o->name[1..]-"=";
found[key] += ({ o });
doge->objects[subindex] = 0;
if(!docs[key] )
docs[key] = ([]);
if( doge->documentation )
if( o->name[-1] == '=' )
docs[key]->set = doge->documentation;
else
docs[key]->get = doge->documentation;
}
}
doge->objects -= ({0});
if( sizeof( doge->objects ) == 0 )
{
docGroups[index]=0;
}
}
docGroups -= ({0});
foreach( found; string key; array(PikeObject) o )
{
Variable nvar = Variable();
Documentation outdoc=Documentation();
DocGroup ngroup = DocGroup(({nvar}),outdoc);
string extra;
docGroups += ({ ngroup });
if( sizeof( o ) == 1 )
{
if( o[0]->name[-1] == '=' )
extra = "Write only";
else
extra = "Read only";
}
nvar->name = key;
nvar->type = o[0]->returntype;
nvar->position = o[0]->position;
outdoc->position = o[0]->position;
mapping(string:Documentation) doc = docs[key];
if( doc?->set?->text && doc?->get?->text &&
strlen(doc->set->text) && strlen(doc->get->text) &&
doc->set->text != doc->get->text )
{
|
e8a38c | 2014-08-16 | Per Hedbor | | outdoc->text = "Getting\n\n"
|
699eff | 2014-08-12 | Per Hedbor | | "\n"+doc->get->text+"\n\n"+
|
e8a38c | 2014-08-16 | Per Hedbor | | "Setting\n\n"+
|
699eff | 2014-08-12 | Per Hedbor | | doc->get->text+"\n\n";
|
df1981 | 2014-08-12 | Per Hedbor | | }
else
{
if( doc?->set?->text && strlen(doc->set->text) )
{
outdoc->text = doc->set->text;
}
else if( doc?->get?->text && strlen(doc->get->text) )
{
outdoc->text = doc->get->text;
}
else
outdoc->text="";
}
if( extra )
outdoc->text += "\n@note\n"+extra;
object p = master()->resolv("Tools.AutoDoc.DocParser.Parse")
(outdoc->text,
SourcePosition(__FILE__, __LINE__, __LINE__));
p->metadata();
outdoc->xml = p->doc("_method");
}
}
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
b987c7 | 2016-08-03 | Henrik Grubbström (Grubba) | | int containsDoc() {
if (documentation && documentation != EmptyDoc) return 1;
if (::containsDoc()) return 1;
foreach(docGroups, DocGroup dg) {
if (dg->documentation && dg->documentation != EmptyDoc) return 1;
}
foreach(children, _Class_or_Module c) {
if (c->containsDoc()) return 1;
}
return 0;
}
|
35eee7 | 2001-01-08 | David Norlin | |
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
d31e5b | 2016-08-04 | Henrik Grubbström (Grubba) | | void addInherit(PikeObject p) {
|
c82d9c | 2003-11-07 | Henrik Grubbström (Grubba) | | inherits += ({ p });
}
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
d31e5b | 2016-08-04 | Henrik Grubbström (Grubba) | | void addChild(_Class_or_Module c) { children += ({ c }); }
|
35eee7 | 2001-01-08 | David Norlin | |
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
5340fa | 2001-05-04 | David Norlin | | PikeObject findChild(string name) {
int a = Array.search_array(children,
lambda(PikeObject o, string n) {
return o->name == n;
}, name);
if (a < 0) return 0;
return children[a];
}
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
DocGroup findObject(string name) {
|
c47588 | 2007-06-11 | Martin Bähr | | int a = Array.search_array(docGroups,
lambda(DocGroup d, string n) {
return (search(d->objects->name, n) >= 0);
}, name);
if (a < 0) return 0;
return docGroups[a];
}
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
d31e5b | 2016-08-04 | Henrik Grubbström (Grubba) | | void addGroup(DocGroup d) {
|
35eee7 | 2001-01-08 | David Norlin | | docGroups += ({ d });
}
|
df1981 | 2014-08-12 | Per Hedbor | |
|
14fcb5 | 2011-12-04 | Henrik Grubbström (Grubba) | | string xml(.Flags|void flags) {
|
df1981 | 2014-08-12 | Per Hedbor | | fixGettersSetters();
|
14fcb5 | 2011-12-04 | Henrik Grubbström (Grubba) | | string contents = standardTags(flags);
|
35eee7 | 2001-01-08 | David Norlin | | if (documentation && documentation->xml != "")
contents += xmltag("doc", documentation->xml);
|
5f8b73 | 2001-08-23 | Martin Nilsson | | children -= ({ 0 });
|
35eee7 | 2001-01-08 | David Norlin | | foreach (children, _Class_or_Module c)
|
14fcb5 | 2011-12-04 | Henrik Grubbström (Grubba) | | contents += c->xml(flags);
|
cef029 | 2002-12-06 | Henrik Grubbström (Grubba) | | foreach (inherits, Inherit in) {
DocGroup dg = DocGroup(({in}), EmptyDoc);
|
14fcb5 | 2011-12-04 | Henrik Grubbström (Grubba) | | contents += dg->xml(flags);
|
cef029 | 2002-12-06 | Henrik Grubbström (Grubba) | | }
|
35eee7 | 2001-01-08 | David Norlin | | foreach (docGroups, DocGroup dg)
|
14fcb5 | 2011-12-04 | Henrik Grubbström (Grubba) | | contents += dg->xml(flags);
mapping(string:string) m = standardAttributes(flags);
|
35eee7 | 2001-01-08 | David Norlin | | if (file) m["file"] = file;
if (directory) m["directory"] = directory;
|
14fcb5 | 2011-12-04 | Henrik Grubbström (Grubba) | | return "\n" + opentag(objtype, m) + contents + standardEnd(flags) + "\n";
|
35eee7 | 2001-01-08 | David Norlin | | }
string print() {
string s = ::print() + " " + name + " {\n";
foreach(docGroups, DocGroup dg) {
|
d7e6d7 | 2001-01-11 | Henrik Grubbström (Grubba) | | if (dg->documentation->position) {
s += sprintf("doc [%d..%d]:\n",
dg->documentation->position->firstline,
dg->documentation->position->lastline);
} else {
s += "doc [..]:\n";
}
|
35eee7 | 2001-01-08 | David Norlin | | s += dg->documentation->text + "\n";
|
d7e6d7 | 2001-01-11 | Henrik Grubbström (Grubba) | | foreach(dg->objects, PikeObject p) {
if (p->position) {
s += sprintf("%s [%d..%d]\n", p->print(),
p->position->firstline,
p->position->lastline);
} else {
s += sprintf("%s [..]\n", p->print());
}
}
|
35eee7 | 2001-01-08 | David Norlin | | }
return s + "\n}";
}
|
d7e6d7 | 2001-01-11 | Henrik Grubbström (Grubba) | |
|
9eaf1d | 2008-06-28 | Martin Nilsson | | protected string _sprintf(int c)
|
d7e6d7 | 2001-01-11 | Henrik Grubbström (Grubba) | | {
|
4507e9 | 2002-11-29 | Martin Nilsson | | switch(c) {
case 's': return xml();
case 'O': return sprintf("%O(%O)", this_program, name);
}
|
d7e6d7 | 2001-01-11 | Henrik Grubbström (Grubba) | | }
|
35eee7 | 2001-01-08 | David Norlin | | }
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | class Class {
|
ef6755 | 2014-08-25 | Per Hedbor | |
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | inherit _Class_or_Module;
|
ef6755 | 2014-08-25 | Per Hedbor | |
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
246a8a | 2001-10-03 | Martin Nilsson | | constant objtype = "class";
|
35eee7 | 2001-01-08 | David Norlin | | }
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | class Module {
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | inherit _Class_or_Module;
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
246a8a | 2001-10-03 | Martin Nilsson | | constant objtype = "module";
|
35eee7 | 2001-01-08 | David Norlin | | }
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
29ce9e | 2002-12-09 | Henrik Grubbström (Grubba) | | class NameSpace {
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
29ce9e | 2002-12-09 | Henrik Grubbström (Grubba) | | inherit _Class_or_Module;
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
29ce9e | 2002-12-09 | Henrik Grubbström (Grubba) | | constant objtype = "namespace";
}
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
29ce9e | 2002-12-09 | Henrik Grubbström (Grubba) | | class AutoDoc {
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
29ce9e | 2002-12-09 | Henrik Grubbström (Grubba) | | inherit _Class_or_Module;
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
29ce9e | 2002-12-09 | Henrik Grubbström (Grubba) | | constant objtype = "autodoc";
|
19d0a3 | 2012-01-29 | Henrik Grubbström (Grubba) | |
string xml(.Flags|void flags) {
return string_to_utf8("<?xml version='1.0' encoding='utf-8'?>\n" +
::xml(flags) + "\n");
}
|
29ce9e | 2002-12-09 | Henrik Grubbström (Grubba) | | }
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
4b7f6b | 2014-08-15 | Martin Nilsson | |
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
ba53cd | 2001-04-21 | Henrik Grubbström (Grubba) | | class Modifier {
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
ba53cd | 2001-04-21 | Henrik Grubbström (Grubba) | | inherit _Class_or_Module;
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
246a8a | 2001-10-03 | Martin Nilsson | | constant objtype = "modifier";
|
ba53cd | 2001-04-21 | Henrik Grubbström (Grubba) | | }
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | class Method {
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | inherit PikeObject;
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | array(string) argnames;
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | array(Type) argtypes;
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | Type returntype;
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
246a8a | 2001-10-03 | Martin Nilsson | | constant objtype = "method";
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
14fcb5 | 2011-12-04 | Henrik Grubbström (Grubba) | | string xml(.Flags|void flags) {
string s = standardTags(flags) + "\n";
|
35eee7 | 2001-01-08 | David Norlin | | string args = "";
for(int i = 0; i < sizeof(argnames); ++i) {
|
c74838 | 2001-01-11 | David Norlin | | if (argtypes[i])
args += xmltag("argument",
|
7ac43f | 2003-11-16 | Henrik Grubbström (Grubba) | | argnames[i]&&([ "name" : argnames[i] ]),
|
14fcb5 | 2011-12-04 | Henrik Grubbström (Grubba) | | xmltag("type", argtypes[i]->xml(flags)));
|
c74838 | 2001-01-11 | David Norlin | | else
args += xmltag("argument",
xmltag("value", argnames[i]));
|
35eee7 | 2001-01-08 | David Norlin | | }
|
46c562 | 2001-01-11 | Henrik Grubbström (Grubba) | | s += xmltag("arguments", args) + "\n" +
|
14fcb5 | 2011-12-04 | Henrik Grubbström (Grubba) | | xmltag("returntype", returntype->xml(flags)) + "\n";
return standardStart(flags) + s + standardEnd(flags);
|
35eee7 | 2001-01-08 | David Norlin | | }
string print() {
array(string) args = ({ });
for(int i = 0; i < sizeof(argnames); ++i)
args += ({ argtypes[i]->print() + " " + argnames[i] });
return printModifiers() + name + "(" + args * ", " + ")";
}
}
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | class Constant {
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | inherit PikeObject;
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
246a8a | 2001-10-03 | Martin Nilsson | | constant objtype = "constant";
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
01dc2a | 2011-01-26 | Martin Stjernholm | |
Type type;
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
Type typedefType = 0;
|
14fcb5 | 2011-12-04 | Henrik Grubbström (Grubba) | | string xml(.Flags|void flags) {
return standardStart(flags) + standardTags(flags)
+ (type ? xmltag ("type", type->xml(flags)) : "")
+ (typedefType ? xmltag("typevalue", typedefType->xml(flags)) : "")
+ standardEnd(flags);
|
35eee7 | 2001-01-08 | David Norlin | | }
string print() {
return ::print() + " " + name;
}
}
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
3f97b3 | 2001-04-11 | David Norlin | | class Typedef {
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
3f97b3 | 2001-04-11 | David Norlin | | inherit PikeObject;
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
246a8a | 2001-10-03 | Martin Nilsson | | constant objtype = "typedef";
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
3f97b3 | 2001-04-11 | David Norlin | | Type type = 0;
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
14fcb5 | 2011-12-04 | Henrik Grubbström (Grubba) | | string xml(.Flags|void flags) {
return standardStart(flags) + standardTags(flags)
+ xmltag("type", type->xml(flags))
+ standardEnd(flags);
|
3f97b3 | 2001-04-11 | David Norlin | | }
string print() {
return ::print() + (type ? " " + type->print() + " " : "") + name;
}
}
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
3f97b3 | 2001-04-11 | David Norlin | | class EnumConstant {
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
3f97b3 | 2001-04-11 | David Norlin | | inherit PikeObject;
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
246a8a | 2001-10-03 | Martin Nilsson | | constant objtype = "constant";
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
14fcb5 | 2011-12-04 | Henrik Grubbström (Grubba) | | string xml(.Flags|void flags) {
mapping m = ([]) + standardAttributes(flags);
return opentag(objtype, m) + standardTags(flags)
+ standardEnd(flags);
|
3f97b3 | 2001-04-11 | David Norlin | | }
string print() {
return "constant";
}
}
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
3f97b3 | 2001-04-11 | David Norlin | | class Enum {
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
3f97b3 | 2001-04-11 | David Norlin | | inherit PikeObject;
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
246a8a | 2001-10-03 | Martin Nilsson | | constant objtype = "enum";
|
3f97b3 | 2001-04-11 | David Norlin | |
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
3f97b3 | 2001-04-11 | David Norlin | | Documentation documentation;
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
3f97b3 | 2001-04-11 | David Norlin | | array(DocGroup) children = ({ });
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
d31e5b | 2016-08-04 | Henrik Grubbström (Grubba) | | void addChild(DocGroup c) { children += ({ c }); }
|
46a28a | 2016-08-04 | Henrik Grubbström (Grubba) | |
|
d31e5b | 2016-08-04 | Henrik Grubbström (Grubba) | | void addGroup(DocGroup c) { children += ({ c }); }
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
b987c7 | 2016-08-03 | Henrik Grubbström (Grubba) | |
int containsDoc()
{
if (documentation && documentation != EmptyDoc) return 1;
if (::containsDoc()) return 1;
foreach(children, DocGroup c) {
if (c->documentation && c->documentation != EmptyDoc) return 1;
}
return 0;
}
|
14fcb5 | 2011-12-04 | Henrik Grubbström (Grubba) | | string xml(.Flags|void flags) {
|
3f97b3 | 2001-04-11 | David Norlin | |
|
14fcb5 | 2011-12-04 | Henrik Grubbström (Grubba) | | string s = standardStart(flags) + standardTags(flags);
|
8b3b7c | 2004-07-08 | Henrik Grubbström (Grubba) | | array(SimpleNode) inDocGroups = ({});
|
3f97b3 | 2001-04-11 | David Norlin | |
if (documentation && documentation->xml != "") {
|
8b3b7c | 2004-07-08 | Henrik Grubbström (Grubba) | | SimpleNode doc =
simple_parse_input("<doc>"+documentation->xml+"</doc>")->
|
adc0df | 2003-04-10 | Henrik Grubbström (Grubba) | | get_first_element();
|
3f97b3 | 2001-04-11 | David Norlin | |
|
8b3b7c | 2004-07-08 | Henrik Grubbström (Grubba) | | foreach (doc->get_children(), SimpleNode group) {
|
3f97b3 | 2001-04-11 | David Norlin | | if (group->get_node_type() == XML_ELEMENT
&& group->get_any_name() == "group")
{
int constants = 0;
string homogenName = 0;
|
8b3b7c | 2004-07-08 | Henrik Grubbström (Grubba) | | SimpleNode docGroupNode =
SimpleNode(XML_ELEMENT, "docgroup",
([ "homogen-type" : "constant" ]), 0);
SimpleNode text = 0;
foreach (group->get_children(), SimpleNode child)
|
3f97b3 | 2001-04-11 | David Norlin | | if (child->get_node_type() == XML_ELEMENT)
if (child->get_any_name() == "constant") {
++constants;
if (constants == 1)
homogenName = child->get_attributes()["name"];
else
homogenName = 0;
docGroupNode->add_child(child);
}
else if (child->get_any_name() == "text") {
if (text)
throw("<group> had more than one <text> child!!!!");
text = child;
}
if (constants) {
doc->remove_child(group);
if (homogenName)
docGroupNode->get_attributes() ["homogen-name"] = homogenName;
if (text) {
|
8b3b7c | 2004-07-08 | Henrik Grubbström (Grubba) | | SimpleNode d = SimpleNode(XML_ELEMENT, "doc", ([]), 0);
|
3f97b3 | 2001-04-11 | David Norlin | | d->add_child(text);
docGroupNode->add_child(d);
}
inDocGroups += ({ docGroupNode });
}
}
}
|
adc0df | 2003-04-10 | Henrik Grubbström (Grubba) | | s += doc->html_of_node();
|
3f97b3 | 2001-04-11 | David Norlin | | }
foreach (children, DocGroup docGroup)
|
14fcb5 | 2011-12-04 | Henrik Grubbström (Grubba) | | s += docGroup->xml(flags);
|
8b3b7c | 2004-07-08 | Henrik Grubbström (Grubba) | | foreach (inDocGroups, SimpleNode n)
|
3f97b3 | 2001-04-11 | David Norlin | | s += n->html_of_node();
|
14fcb5 | 2011-12-04 | Henrik Grubbström (Grubba) | | s += standardEnd(flags);
|
3f97b3 | 2001-04-11 | David Norlin | | return s;
}
string print() {
return "enum";
}
}
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | class Variable {
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | inherit PikeObject;
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
246a8a | 2001-10-03 | Martin Nilsson | | constant objtype = "variable";
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
35eee7 | 2001-01-08 | David Norlin | | Type type;
|
2b7b4f | 2010-08-27 | Henrik Grubbström (Grubba) | |
|
14fcb5 | 2011-12-04 | Henrik Grubbström (Grubba) | | string xml(.Flags|void flags) {
return standardStart(flags) +
standardTags(flags) +
xmltag("type", type->xml(flags)) +
standardEnd(flags);
|
35eee7 | 2001-01-08 | David Norlin | | }
string print() {
return printModifiers() + type->print() + " " + name;
}
}
|