From 63fbbd6e0abf7b792f49931834157fe06248f59e Mon Sep 17 00:00:00 2001 From: Paul Chaignon Date: Sun, 19 Apr 2015 12:39:21 +0200 Subject: [PATCH] .mod file extension for AMPL, Linux Kernel Module, Modula-2 and XML --- lib/linguist/languages.yml | 16 ++ samples/AMPL/CT2.mod | 58 ++++ samples/Linux Kernel Module/bcm4334x.mod | 2 + samples/Linux Kernel Module/mbcache.mod | 2 + samples/Linux Kernel Module/md5.mod | 2 + samples/Modula-2/HuffChan.mod | 329 +++++++++++++++++++++++ samples/XML/xhtml-struct-1.mod | 125 +++++++++ 7 files changed, 534 insertions(+) create mode 100644 samples/AMPL/CT2.mod create mode 100644 samples/Linux Kernel Module/bcm4334x.mod create mode 100644 samples/Linux Kernel Module/mbcache.mod create mode 100644 samples/Linux Kernel Module/md5.mod create mode 100644 samples/Modula-2/HuffChan.mod create mode 100644 samples/XML/xhtml-struct-1.mod diff --git a/lib/linguist/languages.yml b/lib/linguist/languages.yml index a6e5dd1d..1d181071 100644 --- a/lib/linguist/languages.yml +++ b/lib/linguist/languages.yml @@ -49,6 +49,7 @@ AMPL: color: "#E6EFBB" extensions: - .ampl + - .mod tm_scope: source.ampl ace_mode: text @@ -1703,6 +1704,13 @@ Limbo: tm_scope: none ace_mode: text +Linux Kernel Module: + type: data + extensions: + - .mod + tm_scope: none + ace_mode: text + Liquid: type: markup extensions: @@ -1968,6 +1976,13 @@ Modelica: tm_scope: source.modelica ace_mode: text +Modula-2: + type: programming + extensions: + - .mod + tm_scope: none + ace_mode: text + Module Management System: type: programming extensions: @@ -3405,6 +3420,7 @@ XML: - .kml - .launch - .mm + - .mod - .mxml - .nproj - .nuspec diff --git a/samples/AMPL/CT2.mod b/samples/AMPL/CT2.mod new file mode 100644 index 00000000..eb936b77 --- /dev/null +++ b/samples/AMPL/CT2.mod @@ -0,0 +1,58 @@ +param num_beams; # number of beams + +param num_rows >= 1, integer; # number of rows +param num_cols >= 1, integer; # number of columns + +set BEAMS := 1 .. num_beams; # set of beams + +set ROWS := 1 .. num_rows; # set of rows +set COLUMNS := 1 .. num_cols; # set of columns + +# values for entries of each beam +param beam_values {BEAMS, ROWS, COLUMNS} >= 0; + +# values of tumor +param tumor_values {ROWS, COLUMNS} >= 0; + +# values of critical area +param critical_values {ROWS, COLUMNS} >= 0; + +# critical maximum dosage requirement +param critical_max; + +# tumor minimum dosage requirement +param tumor_min; + +# dosage scalar of each beam +var X {i in BEAMS} >= 0; + + +# define the tumor area which includes the locations where tumor exists +set tumor_area := {k in ROWS, h in COLUMNS: tumor_values[k,h] > 0}; + +# define critical area +set critical_area := {k in ROWS, h in COLUMNS: critical_values[k,h] > 0}; + +var S {(k,h) in tumor_area} >= 0; +var T {(k,h) in critical_area} >= 0; + +# maximize total dosage in tumor area +maximize total_tumor_dosage: sum {i in BEAMS} sum {(k,h) in tumor_area} X[i] * beam_values[i,k,h]; + +# minimize total dosage in critical area +minimize total_critical_dosage: sum {i in BEAMS} sum {(k,h) in critical_area} X[i] * beam_values[i,k,h]; + +# minimize total tumor slack +minimize total_tumor_slack: sum {(k,h) in tumor_area} S[k,h]; + +# minimize total critical area slack +minimize total_critical_slack: sum {(k,h) in critical_area} T[k,h]; + +# total dosage at each tumor location [k,h] should be >= min tumor dosage with slack variable +subject to tumor_limit {(k,h) in tumor_area} : sum {i in BEAMS} X[i] * beam_values[i,k,h] == tumor_min - S[k,h]; + +# total dosage at each critical location [k,h] should be = max critical dosage with slack variable +subject to critical_limit {(k,h) in critical_area} : sum {i in BEAMS} X[i] * beam_values[i,k,h] == critical_max + T[k,h]; + + + diff --git a/samples/Linux Kernel Module/bcm4334x.mod b/samples/Linux Kernel Module/bcm4334x.mod new file mode 100644 index 00000000..8b35ba24 --- /dev/null +++ b/samples/Linux Kernel Module/bcm4334x.mod @@ -0,0 +1,2 @@ +/data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/bcm4334x.ko +/data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/dhd_pno.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/dhd_common.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/dhd_ip.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/dhd_custom_gpio.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/dhd_linux.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/dhd_linux_sched.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/dhd_cfg80211.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/dhd_linux_wq.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/aiutils.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/bcmevent.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/bcmutils.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/bcmwifi_channels.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/hndpmu.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/linux_osl.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/sbutils.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/siutils.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/wl_android.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/wl_cfg80211.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/wl_cfgp2p.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/wl_cfg_btcoex.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/wldev_common.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/wl_linux_mon.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/dhd_linux_platdev.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/bcmsdh.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/bcmsdh_linux.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/bcmsdh_sdmmc.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/bcmsdh_sdmmc_linux.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/dhd_cdc.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/dhd_wlfc.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/dhd_sdio.o diff --git a/samples/Linux Kernel Module/mbcache.mod b/samples/Linux Kernel Module/mbcache.mod new file mode 100644 index 00000000..1478b3a1 --- /dev/null +++ b/samples/Linux Kernel Module/mbcache.mod @@ -0,0 +1,2 @@ +fs/mbcache.ko +fs/mbcache.o diff --git a/samples/Linux Kernel Module/md5.mod b/samples/Linux Kernel Module/md5.mod new file mode 100644 index 00000000..85778eb0 --- /dev/null +++ b/samples/Linux Kernel Module/md5.mod @@ -0,0 +1,2 @@ +crypto/md5.ko +crypto/md5.o diff --git a/samples/Modula-2/HuffChan.mod b/samples/Modula-2/HuffChan.mod new file mode 100644 index 00000000..14073609 --- /dev/null +++ b/samples/Modula-2/HuffChan.mod @@ -0,0 +1,329 @@ +IMPLEMENTATION MODULE HuffChan; + +(* + This module shows how to redefine standard IO file functions. It provides + functions for reading and writing packed files opened in Raw mode. +*) + +IMPORT IOChan, IOLink, ChanConsts, IOConsts, SYSTEM, Strings; +FROM Storage IMPORT ALLOCATE, DEALLOCATE; + +CONST + rbldFrq = 512; (* means: every 512 bytes rebuild table *) + +TYPE + charTap = POINTER TO ARRAY [0..MAX(INTEGER)-1] OF CHAR; + smbTp = POINTER TO smbT; + + smbT = RECORD (* Huffman's tree *) + ch : CHAR; + n : CARDINAL; (* frequncy of char ch *) + left,right,next : smbTp; + END; + + tblT = RECORD (* bit sequence for code *) + vl : CARDINAL; (* bit sequence *) + cnt : INTEGER; (* it length *) + END; + + lclDataT = RECORD (* channel's local data *) + tRoot : smbTp; + htbl : ARRAY [0..255] OF tblT; (* code -> bit sequence table *) + ftbl : ARRAY [0..255] OF CARDINAL; (* frequncey table *) + wBf,rb1,rb2 : CARDINAL; + wbc,rbc,smc : INTEGER; + chid : IOChan.ChanId; + END; + lclDataTp = POINTER TO lclDataT; + charp = POINTER TO CHAR; + +VAR + did : IOLink.DeviceId; + ldt : lclDataTp; + + +PROCEDURE Shf(a:CARDINAL; b : INTEGER) : CARDINAL; (* shl a,b (or shr) *) +BEGIN + RETURN SYSTEM.CAST(CARDINAL,SYSTEM.SHIFT(SYSTEM.CAST(BITSET,a),b)); +END Shf; + +PROCEDURE wrDword(a:CARDINAL); (* write 4 bytes to file *) +BEGIN + IOChan.RawWrite(ldt^.chid,SYSTEM.ADR(a),4); +END wrDword; + +PROCEDURE rdDword() : CARDINAL; (* read 4 bytes from file *) +VAR + a,z : CARDINAL; +BEGIN + a:=0; + IOChan.RawRead(ldt^.chid,SYSTEM.ADR(a),4,z); + RETURN a; +END rdDword; + +PROCEDURE wrSmb(ch : CHAR); (* write bit sequence for code ch *) +VAR + v,h : CARDINAL; + b,c : INTEGER; +BEGIN + WITH ldt^ DO + v:=htbl[ORD(ch)].vl; + c:=htbl[ORD(ch)].cnt; + IF c+wbc<=32 THEN + wBf:=Shf(wBf,c); + wBf:=wBf+v; + wbc:=wbc+c; + IF wbc=32 THEN + wrDword(wBf); + wBf:=0; wbc:=0; + END; + RETURN; + END; + b:=c+wbc-32; + h:=Shf(v,-b); + wBf:=Shf(wBf,32-wbc)+h; + wrDword(wBf); + wBf:=v-Shf(h,b); + wbc:=b; + END; +END wrSmb; + +PROCEDURE flush(); (* write data in buffer *) +BEGIN + WITH ldt^ DO + wBf:=Shf(wBf,32-wbc); + wrDword(wBf); + END; +END flush; + +PROCEDURE getSym() : CHAR; (* find code for first bit sequence in buffer *) +VAR + t,i : CARDINAL; + b : INTEGER; +BEGIN + WITH ldt^ DO + IF rbc<=32 THEN + rb2:=rdDword(); + t:=Shf(rb2,-rbc); + IF rbc=32 THEN t:=0; END; + rb1:=rb1+t; + rb2:=Shf(rb2,32-rbc); + IF rbc=0 THEN rb2:=0; END; + rbc:=rbc+32; + END; + FOR i:=0 TO 255 DO + t:=Shf(rb1,htbl[i].cnt-32); + IF t=htbl[i].vl THEN + rb1:=Shf(rb1,htbl[i].cnt); + b:=32-htbl[i].cnt; + t:=Shf(rb2,-b); + rb1:=rb1+t; + rb2:=Shf(rb2,32-b); + rbc:=rbc+b-32; + RETURN CHR(i); + END; + END; + END; +END getSym; + +PROCEDURE Insert(s : smbTp); (* insert new character in Huffman's tree *) +VAR + cr : smbTp; +BEGIN + WITH ldt^ DO + IF tRoot=NIL THEN + cr:=tRoot; + tRoot:=s; + s^.next:=cr; + RETURN; + ELSIF tRoot^.n<=s^.n THEN + cr:=tRoot; + tRoot:=s; + s^.next:=cr; + RETURN; + END; + cr:=tRoot; + WHILE (cr^.next<>NIL) & (cr^.next^.n>s^.n) DO + cr:=cr^.next; + END; + s^.next:=cr^.next; + cr^.next:=s; + END; +END Insert; + +PROCEDURE BuildTree(); (* build Huffman's tree *) +VAR + cr,ocr,ncr : smbTp; +BEGIN + WITH ldt^ DO + LOOP + ocr:=NIL; cr:=tRoot; + WHILE cr^.next^.next<>NIL DO + ocr:=cr; cr:=cr^.next; + END; + NEW(ncr); + ncr^.n:=cr^.n+cr^.next^.n; + ncr^.left:=cr; + ncr^.right:=cr^.next; + IF ocr<>NIL THEN + ocr^.next:=NIL; + Insert(ncr); + ELSE + tRoot:=NIL; + Insert(ncr); + EXIT; + END; + END; + END; +END BuildTree; + +PROCEDURE BuildTable(cr: smbTp; vl,n: CARDINAL); (* build table: code -> bit sequence *) +BEGIN + WITH ldt^ DO + IF cr^.left=NIL THEN + htbl[ORD(cr^.ch)].vl:=vl; + htbl[ORD(cr^.ch)].cnt:=n; + DISPOSE(cr); + RETURN; + END; + vl:=vl*2; + BuildTable(cr^.left,vl,n+1); + BuildTable(cr^.right,vl+1,n+1); + DISPOSE(cr); + END; +END BuildTable; + +PROCEDURE clcTab(); (* build code/bitseq. table from frequency table *) +VAR + i : CARDINAL; + s : smbTp; +BEGIN + WITH ldt^ DO + tRoot:=NIL; + FOR i:=0 TO 255 DO + NEW(s); + s^.ch:=CHR(i); + s^.n:=ftbl[i]; + s^.left:=NIL; s^.right:=NIL; s^.next:=NIL; + Insert(s); + END; + BuildTree(); + BuildTable(tRoot,0,0); + END; +END clcTab; + +PROCEDURE iniHuf(); +VAR + i : CARDINAL; +BEGIN + WITH ldt^ DO + FOR i:=0 TO 255 DO + ftbl[i]:=1; + END; + wBf:=0; wbc:=0; rb1:=0; rb2:=0; rbc:=0; + smc:=0; + clcTab(); + END; +END iniHuf; + + +PROCEDURE RawWrite(x: IOLink.DeviceTablePtr; buf: SYSTEM.ADDRESS; + len: CARDINAL); +VAR + i : CARDINAL; + ch : CHAR; + cht : charTap; +BEGIN + IF len = 0 THEN RETURN; END; + ldt:=SYSTEM.CAST(lclDataTp,x^.cd); + cht:=SYSTEM.CAST(charTap,buf); + WITH ldt^ DO + FOR i:=0 TO len-1 DO + ch:=cht^[i]; + wrSmb(ch); + IF ch = 377C THEN wrSmb(ch); END; + ftbl[ORD(ch)]:=ftbl[ORD(ch)]+1; smc:=smc+1; + IF smc=rbldFrq THEN + clcTab(); + smc:=0; + END; + END; + END; + x^.result:=IOChan.ReadResult(ldt^.chid); +END RawWrite; + +PROCEDURE RawRead(x: IOLink.DeviceTablePtr; buf: SYSTEM.ADDRESS; + blen: CARDINAL; VAR len: CARDINAL); +VAR + i : CARDINAL; + cht : charTap; + ch : CHAR; +BEGIN + ldt:=SYSTEM.CAST(lclDataTp,x^.cd); + cht:=SYSTEM.CAST(charTap,buf); + IF (blen=0) OR (x^.result<>IOConsts.allRight) THEN len:=0; RETURN; END; + WITH ldt^ DO + FOR i:=0 TO blen-1 DO + ch:=getSym(); + IF ch = 377C THEN + ch:=getSym(); + IF ch = 0C THEN + x^.result:=IOConsts.endOfInput; + len:=i; cht^[i]:=0C; + RETURN; + END; + END; + cht^[i]:=ch; + ftbl[ORD(ch)]:=ftbl[ORD(ch)]+1; smc:=smc+1; + IF smc=rbldFrq THEN + clcTab(); + smc:=0; + END; + END; + len:=blen; + END; +END RawRead; + +PROCEDURE CreateAlias(VAR cid: ChanId; io: ChanId; VAR res: OpenResults); +VAR + x : IOLink.DeviceTablePtr; +BEGIN + IOLink.MakeChan(did,cid); + IF cid = IOChan.InvalidChan() THEN + res:=ChanConsts.outOfChans + ELSE + NEW(ldt); + IF ldt=NIL THEN + IOLink.UnMakeChan(did,cid); + res:=ChanConsts.outOfChans; + RETURN; + END; + x:=IOLink.DeviceTablePtrValue(cid,did,IOChan.notAvailable,""); + ldt^.chid:=io; + x^.cd:=ldt; + x^.doRawWrite:=RawWrite; + x^.doRawRead:=RawRead; + res:=ChanConsts.opened; + iniHuf(); + x^.result:=IOConsts.allRight; + END; +END CreateAlias; + +PROCEDURE DeleteAlias(VAR cid: ChanId); +VAR + x : IOLink.DeviceTablePtr; +BEGIN + x:=IOLink.DeviceTablePtrValue(cid,did,IOChan.notAvailable,""); + ldt:=x^.cd; + IF ldt^.rbc=0 THEN + wrSmb(377C); + wrSmb(0C); + flush(); + END; + DISPOSE(ldt); + IOLink.UnMakeChan(did,cid); +END DeleteAlias; + +BEGIN + IOLink.AllocateDeviceId(did); +END HuffChan. diff --git a/samples/XML/xhtml-struct-1.mod b/samples/XML/xhtml-struct-1.mod new file mode 100644 index 00000000..08c8b1d7 --- /dev/null +++ b/samples/XML/xhtml-struct-1.mod @@ -0,0 +1,125 @@ + + + + + + + + + + + + + + +]]> + + + +]]> + + + + + + + +]]> + + + + + + +]]> + + + + + + + +]]> + + + +]]> + + + + + + + +]]> + + + + + + + +]]> + +