diff --git a/doc/odapi/.gitignore b/doc/odapi/.gitignore new file mode 100644 index 0000000..e477c8f --- /dev/null +++ b/doc/odapi/.gitignore @@ -0,0 +1,3 @@ +*.aux +*.log +*.out \ No newline at end of file diff --git a/doc/odapi/api_table.pdf b/doc/odapi/api_table.pdf new file mode 100644 index 0000000..30dfbd3 Binary files /dev/null and b/doc/odapi/api_table.pdf differ diff --git a/doc/odapi/api_table.tex b/doc/odapi/api_table.tex new file mode 100644 index 0000000..586053f --- /dev/null +++ b/doc/odapi/api_table.tex @@ -0,0 +1,121 @@ +\documentclass{article} + +\usepackage[left=1cm, right=1cm]{geometry} % reduce page margins + +\usepackage{amssymb} +\usepackage{booktabs} +\usepackage[normalem]{ulem} +\usepackage[utf8]{inputenc} +\usepackage{hyperref} +\usepackage{graphicx} +\usepackage{tikz} +\usepackage{color,listings} +\usepackage{awesomebox} + +\newcommand{\specialcell}[2][c]{% + \begin{tabular}[#1]{@{}l@{}}#2\end{tabular}} + +\def\ck{\checkmark} + +\begin{document} + +\centering +\begin{scriptsize} +\begin{tabular}{|l|c|c|c|c|c|l|} + \hline + & \multicolumn{5}{c|}{Availability in Context} & \\ + \hline + & \multicolumn{2}{c|}{ \specialcell{Meta-Model \\ Constraint}} & \multicolumn{2}{c|}{ \specialcell{Model Trans- \\ formation Rule} } & & \\ + + \hline + & \specialcell{ \textbf{Local} } + & \specialcell{ \textbf{Global} } + & \specialcell{ \textbf{NAC} \\ \textbf{LHS} } + & \textbf{RHS} + & \specialcell{ \textbf{OD-} \\ \textbf{API} } + & \textbf{Meaning} \\ + \hline + \hline + \multicolumn{7}{|l|}{\textit{Querying}} \\ + \hline + \texttt{this :obj} & \ck & & \ck & \ck & & Current object or link \\ + \hline + \texttt{get\_name(:obj) :str} & \ck & \ck & \ck & \ck & \ck & Get name of object or link \\ + \hline + \texttt{get(name:str) :obj} & \ck & \ck & \ck & \ck & \ck & Get object or link by name (inverse of \texttt{get\_name}) \\ + \hline + \texttt{get\_type(:obj) :obj} & \ck & \ck & \ck & \ck & \ck & {Get type of object or link} \\ + \hline + \texttt{get\_type\_name(:obj) :str} & \ck & \ck & \ck & \ck & \ck & {Same as \texttt{get\_name(get\_type(...))}} \\ + \hline + \specialcell{ + \texttt{is\_instance(:obj, type\_name:str} + \\ \texttt{ [,include\_subtypes:bool=True]) :bool} + } & \ck & \ck & \ck & \ck & \ck & \specialcell{Is object instance of given type\\(or subtype thereof)?} \\ + \hline + + \texttt{get\_value(:obj) :int|str|bool} & \ck & \ck & \ck & \ck & \ck & \specialcell{Get value (only works on Integer,\\String, Boolean objects)} \\ + \hline + \texttt{get\_target(:link) :obj} & \ck & \ck & \ck & \ck & \ck & {Get target of link} \\ + \hline + \texttt{get\_source(:link) :obj} & \ck & \ck & \ck & \ck & \ck & {Get source of link} \\ + \hline + \texttt{get\_slot(:obj, attr\_name:str) :link} & \ck & \ck & \ck & \ck & \ck & {Get slot-link (link connecting object to a value)} \\ + \hline + \specialcell{ + \texttt{get\_slot\_value(:obj,} + \\ \texttt{attr\_name:str) :int|str|bool} + } & \ck & \ck & \ck & \ck & \ck & {Same as \texttt{get\_value(get\_slot(...))})} \\ + \hline + + \specialcell{ + \texttt{get\_all\_instances(type\_name:str} + \\ \texttt{ [,include\_subtypes:bool=True]} + \\ \texttt{) :list<(str, obj)>} + } & \ck & \ck & \ck & \ck & \ck & \specialcell{Get list of tuples (name, object) \\ of given type (and its subtypes).} \\ + \hline + \specialcell{ + \texttt{get\_outgoing(:obj,} + \\ \texttt{ assoc\_name:str) :list} + } & \ck & \ck & \ck & \ck & \ck & {Get outgoing links of given type} \\ + \hline + \specialcell{ + \texttt{get\_incoming(:obj,} + \\ \texttt{ assoc\_name:str) :list} + } & \ck & \ck & \ck & \ck & \ck & {Get incoming links of given type} \\ + \hline + \texttt{has\_slot(:obj, attr\_name:str) :bool} & \ck & \ck & \ck & \ck & \ck & {Does object have given slot?} \\ + \hline + \texttt{matched(label:str) :obj} & & & \ck & \ck & & \specialcell{Get matched object by its label \\ (the name of the object in the pattern)} \\ + + \hline + \hline + \multicolumn{7}{|l|}{\textit{Modifying}} \\ + \hline + \texttt{delete(:obj)} & & & & \ck & \ck & {Delete object or link} \\ + \hline + + \specialcell{ + \texttt{set\_slot\_value(:obj, attr\_name:str,} + \\ \texttt{ val:int|str|bool)} + } & & & & \ck & \ck & \specialcell{Set value of slot. + \\ Creates slot if it doesn't exist yet.} \\ + \hline + + \specialcell{ + \texttt{create\_link(link\_name:str|None,} \\ + \texttt{ assoc\_name:str, src:obj, tgt:obj) :link} + } & & & & \ck & \ck & \specialcell{Create link (typed by given association). \\ + If \texttt{link\_name} is None, name is auto-generated.} \\ + \hline + \specialcell{ + \texttt{create\_object(object\_name:str|None,} \\ + \texttt{ class\_name:str) :obj} + } & & & & \ck & \ck & \specialcell{Create object (typed by given class). \\ + If \texttt{object\_name} is None, name is auto-generated.} \\ + \hline + % \texttt{print(*args)} & \multicolumn{2}{c|}{Python's print function (useful for debugging)} & no, use the real print() \\ +\end{tabular} +\end{scriptsize} + +\end{document} \ No newline at end of file