UNPKG

@joergmittaglawo/dmvconfig

Version:

DMV Configuration scripts for Lawo V__matrix Distributed Multiviewers.

1 lines 3.77 kB
import{assert as e}from"./node_util";export var KeywordType;!function(e){e[e.UserOwnedEvent=0]="UserOwnedEvent",e[e.DriverOwnedEvent=1]="DriverOwnedEvent",e[e.Command=2]="Command",e[e.Status=3]="Status",e[e.Duplex=4]="Duplex"}(KeywordType||(KeywordType={}));export function has_index(e){return"array_size"in e||"vector_size"in e||"table_size"in e}function t(e,r,i){var s;let o=!0,a=1;switch("array_size"in e?(a="number"==typeof e.array_size?e.array_size:i(e.array_size),e.array_size=a):"vector_size"in e?(a="number"==typeof e.vector_size?e.vector_size:i(e.vector_size),e.vector_size=a):o=!1,e.data_type){case"atomic subtree":{const t=function(e,t){if("children"in t)return t.children;{t.type_identifier;const n=e.typedefs[t.type_identifier];return"atomic subtree"===n.data_type&&"children"in n?n.children:[]}}(r,e);return{...e,local_multiplicity:a,has_index:o,children:t.map(e=>n(e,r,i))}}case"variant":{void 0!==e.variants||e.type_identifier;const n=null!==(s=e.variants)&&void 0!==s?s:r.typedefs[e.type_identifier].variants,c={};for(const e of Object.keys(n))c[e]=t(n[e],r,i);return{...e,has_index:o,local_multiplicity:a,variants:c}}default:return{...e,has_index:o,local_multiplicity:a}}}function n(e,n,r){return{...t(e,n,r),kw_type:e.kw_type}}function r(e,t,i,s,o,a){const c=function(e,t){if("children"in t)return t.children;{t.type_identifier;const n=e.typedefs[t.type_identifier];return n.data_type,"children"in n?n.children:[]}}(t,e);let d=!0,_=1;"array_size"in e?(_="number"==typeof e.array_size?e.array_size:i(e.array_size),e.array_size=_):"table_size"in e?(_="number"==typeof e.table_size?e.table_size:i(e.table_size),e.table_size=_):d=!1;const u=o*_,l=[],y={};let f=s;const p=(e,t)=>{y.hasOwnProperty(e),y[e]=f,f+=t?u:o},m=(e,t)=>{switch(t){case"duplex":p(e+"_command",!0),p(e+"_status",!0);break;default:p(e,!0)}};"table_size"in e&&(p("rowMask",!1),p("create_row",!1),p("created_row",!1),p("syslog_level",!1),p("table_cmd",!1),a&&(p("row_cmd",!0),p("row_name_command",!0),p("row_name_status",!0)));for(const e of c)switch(e.data_type){case"subtree":const[s,o]=r(e,t,i,f,u,"table_size"in e&&e.named_rows);l.push(s),y[e.sys_name]=f,f=o;break;default:m(e.sys_name,e.kw_type),l.push(n(e,t,i))}return[{...e,children:l,starting_index:y,stride:u,local_multiplicity:_,has_index:d},f]}export function annotate(e,n,i){var s;let o=0,a=[];const c=e=>{const t=i(e);return t};for(const t of e.keywords){if(n.has(t.sys_name))continue;const[d,_]=r(t,e,c,o,1,!1);a.push({...t,...d,exists:-1===(null!==(s=t.bound_to)&&void 0!==s?s:[]).findIndex(e=>!1===i(e))}),o=_}const d={};for(const n of Object.keys(e.typedefs)){const i=e.typedefs[n];switch(i.data_type){case"subtree":{const t=r(i,e,c,0,0,!1)[0];d[n]={...t,common:i.common}}break;case"atomic subtree":d[n]={...t(i,e,c),common:i.common}}}return{...e,typedefs:d,keywords:a}}export function find_branch(e,t){const n=t.split(".");for(const r of e.keywords)if(r.sys_name===n[0]){let e=r;if(1===n.length)return e;for(let r=1;r<n.length-1;++r)for(const i of e.children)if(i.sys_name===n[r]){if("subtree"===i.data_type){e=i;break}throw new Error("Unable to look up "+t)}const i=n[n.length-1].replace(/_(command|status)$/,"");for(const t of e.children)if(t.sys_name===n[n.length-1]&&"subtree"===t.data_type||"subtree"!==t.data_type&&("duplex"===t.kw_type&&t.sys_name===i||"duplex"!==t.kw_type&&t.sys_name===n[n.length-1]))return t}throw new Error("Unknown component "+n[0])}export function find_keyword(e,t,n){const r=find_branch(e,`${t}.${n}`);if("subtree"===r.data_type)throw new Error(`Mistyped result (${t} should have been a keyword, but is a subtree)`);return r}export function find_subtree(e,t){const n=find_branch(e,t);if("subtree"!==n.data_type)throw new Error(`Mistyped result (${t} should have been a subtree)}`);return n}