Skip to content

Commit

Permalink
- Moved some class restriction query APIs to ModelicaBuiltin.mo.
Browse files Browse the repository at this point in the history
git-svn-id: https://openmodelica.org/svn/OpenModelica/trunk@24478 f25d12d1-65f4-0310-ae8a-bbce733d8d8e
  • Loading branch information
adeas31 committed Feb 8, 2015
1 parent 0bb85f6 commit 93c7773
Show file tree
Hide file tree
Showing 3 changed files with 174 additions and 107 deletions.
88 changes: 88 additions & 0 deletions Compiler/FrontEnd/ModelicaBuiltin.mo
Expand Up @@ -2970,6 +2970,17 @@ annotation(
preferredView="text");
end basename;

function isType
input TypeName cl;
output Boolean b;
external "builtin";
annotation(
Documentation(info="<html>
Returns true if the given class has restriction type.
</html>"),
preferredView="text");
end isType;

function isPackage
input TypeName cl;
output Boolean b;
Expand All @@ -2981,6 +2992,50 @@ annotation(
preferredView="text");
end isPackage;

function isClass
input TypeName cl;
output Boolean b;
external "builtin";
annotation(
Documentation(info="<html>
Returns true if the given class has restriction class.
</html>"),
preferredView="text");
end isClass;

function isRecord
input TypeName cl;
output Boolean b;
external "builtin";
annotation(
Documentation(info="<html>
Returns true if the given class has restriction record.
</html>"),
preferredView="text");
end isRecord;

function isBlock
input TypeName cl;
output Boolean b;
external "builtin";
annotation(
Documentation(info="<html>
Returns true if the given class has restriction block.
</html>"),
preferredView="text");
end isBlock;

function isFunction
input TypeName cl;
output Boolean b;
external "builtin";
annotation(
Documentation(info="<html>
Returns true if the given class has restriction function.
</html>"),
preferredView="text");
end isFunction;

function isPartial
input TypeName cl;
output Boolean b;
Expand All @@ -3003,6 +3058,39 @@ annotation(
preferredView="text");
end isModel;

function isConnector
input TypeName cl;
output Boolean b;
external "builtin";
annotation(
Documentation(info="<html>
Returns true if the given class has restriction connector or expandable connector.
</html>"),
preferredView="text");
end isConnector;

function isOptimization
input TypeName cl;
output Boolean b;
external "builtin";
annotation(
Documentation(info="<html>
Returns true if the given class has restriction optimization.
</html>"),
preferredView="text");
end isOptimization;

function isEnumeration
input TypeName cl;
output Boolean b;
external "builtin";
annotation(
Documentation(info="<html>
Returns true if the given class has restriction enumeration.
</html>"),
preferredView="text");
end isEnumeration;

function isOperator
input TypeName cl;
output Boolean b;
Expand Down
51 changes: 49 additions & 2 deletions Compiler/Script/CevalScript.mo
Expand Up @@ -2491,12 +2491,42 @@ algorithm
then
(cache,Values.TUPLE({Values.REAL(0.0),Values.STRING("")}),st);

case (cache,_,"isType",{Values.CODE(Absyn.C_TYPENAME(classpath))},st as GlobalScript.SYMBOLTABLE(ast=p),_)
equation
b = Interactive.isType(classpath, p);
then
(cache,Values.BOOL(b),st);

case (cache,_,"isPackage",{Values.CODE(Absyn.C_TYPENAME(classpath))},st as GlobalScript.SYMBOLTABLE(ast=p),_)
equation
b = Interactive.isPackage(classpath, p);
then
(cache,Values.BOOL(b),st);

case (cache,_,"isClass",{Values.CODE(Absyn.C_TYPENAME(classpath))},st as GlobalScript.SYMBOLTABLE(ast=p),_)
equation
b = Interactive.isClass(classpath, p);
then
(cache,Values.BOOL(b),st);

case (cache,_,"isRecord",{Values.CODE(Absyn.C_TYPENAME(classpath))},st as GlobalScript.SYMBOLTABLE(ast=p),_)
equation
b = Interactive.isRecord(classpath, p);
then
(cache,Values.BOOL(b),st);

case (cache,_,"isBlock",{Values.CODE(Absyn.C_TYPENAME(classpath))},st as GlobalScript.SYMBOLTABLE(ast=p),_)
equation
b = Interactive.isBlock(classpath, p);
then
(cache,Values.BOOL(b),st);

case (cache,_,"isFunction",{Values.CODE(Absyn.C_TYPENAME(classpath))},st as GlobalScript.SYMBOLTABLE(ast=p),_)
equation
b = Interactive.isFunction(classpath, p);
then
(cache,Values.BOOL(b),st);

case (cache,_,"isPartial",{Values.CODE(Absyn.C_TYPENAME(classpath))},st as GlobalScript.SYMBOLTABLE(ast=p),_)
equation
b = Interactive.isPartial(classpath, p);
Expand All @@ -2509,6 +2539,24 @@ algorithm
then
(cache,Values.BOOL(b),st);

case (cache,_,"isConnector",{Values.CODE(Absyn.C_TYPENAME(classpath))},st as GlobalScript.SYMBOLTABLE(ast=p),_)
equation
b = Interactive.isConnector(classpath, p);
then
(cache,Values.BOOL(b),st);

case (cache,_,"isOptimization",{Values.CODE(Absyn.C_TYPENAME(classpath))},st as GlobalScript.SYMBOLTABLE(ast=p),_)
equation
b = Interactive.isOptimization(classpath, p);
then
(cache,Values.BOOL(b),st);

case (cache,_,"isEnumeration",{Values.CODE(Absyn.C_TYPENAME(classpath))},st as GlobalScript.SYMBOLTABLE(ast=p),_)
equation
b = Interactive.isEnumeration(classpath, p);
then
(cache,Values.BOOL(b),st);

case (cache,_,"isOperator",{Values.CODE(Absyn.C_TYPENAME(classpath))},st as GlobalScript.SYMBOLTABLE(ast=p),_)
equation
b = Interactive.isOperator(classpath, p);
Expand Down Expand Up @@ -5063,13 +5111,12 @@ algorithm
c = Interactive.getPathedClassInProgram(className, p);
// filter out partial classes
// Absyn.CLASS(partialPrefix = false) = c; // do not filter partial classes
cr = Absyn.pathToCref(className);
// filter out packages
false = Interactive.isPackage(className, p);
// filter out functions
// false = Interactive.isFunction(cr, p);
// filter out types
false = Interactive.isType(cr, p);
false = Interactive.isType(className, p);
print("Checking: " + Dump.unparseClassAttributesStr(c) + " " + Absyn.pathString(className) + "... ");
t1 = clock();
Flags.setConfigBool(Flags.CHECK_MODEL, true);
Expand Down

0 comments on commit 93c7773

Please sign in to comment.