mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-12-08 20:38:47 +00:00
Merge branch 'master' into associate-heuristic-with-extension
This commit is contained in:
245
samples/Assembly/fp_sqr32_160_comba.inc
Normal file
245
samples/Assembly/fp_sqr32_160_comba.inc
Normal file
@@ -0,0 +1,245 @@
|
||||
|
||||
push r2
|
||||
dint
|
||||
nop
|
||||
bis #MPYDLYWRTEN,&MPY32CTL0
|
||||
bic #MPYDLY32,&MPY32CTL0
|
||||
mov #SUMEXT,r13
|
||||
clr r12
|
||||
|
||||
mov @r15+,r4
|
||||
mov @r15+,r5
|
||||
|
||||
mov @r15+,r6
|
||||
mov @r15+,r7
|
||||
|
||||
mov @r15+,r8
|
||||
mov @r15+,r9
|
||||
|
||||
mov @r15+,r10
|
||||
mov @r15+,r11
|
||||
|
||||
sub #2*8,r15
|
||||
|
||||
/* SELF_STEP_FIRST */
|
||||
mov r4,&MPY32L
|
||||
mov r5,&MPY32H
|
||||
mov r4,&OP2L
|
||||
mov r5,&OP2H
|
||||
|
||||
/* COLUMN_END */
|
||||
mov &RES0,2*0(r14)
|
||||
mov &RES1,2*(0+1)(r14)
|
||||
mov &RES2,&RES0
|
||||
mov &RES3,&RES1
|
||||
mov r12,&RES2
|
||||
clr &RES3
|
||||
|
||||
/* STEP_1 */
|
||||
mov r4,&MAC32L
|
||||
mov r5,&MAC32H
|
||||
mov r6,&OP2L
|
||||
mov r7,&OP2H
|
||||
add &SUMEXT,r12
|
||||
mov r6,&OP2L
|
||||
mov r7,&OP2H
|
||||
|
||||
/* COLUMN_END */
|
||||
mov &RES0,2*2(r14)
|
||||
add @r13,r12
|
||||
mov &RES1,2*(2+1)(r14)
|
||||
mov &RES2,&RES0
|
||||
mov &RES3,&RES1
|
||||
mov r12,&RES2
|
||||
clr &RES3
|
||||
clr r12
|
||||
|
||||
/* STEP_1 */
|
||||
mov r4,&MAC32L
|
||||
mov r5,&MAC32H
|
||||
mov r8,&OP2L
|
||||
mov r9,&OP2H
|
||||
add &SUMEXT,r12
|
||||
mov r8,&OP2L
|
||||
mov r9,&OP2H
|
||||
|
||||
/* SELF_STEP */
|
||||
mov r6,&MAC32L
|
||||
mov r7,&MAC32H
|
||||
add @r13,r12
|
||||
mov r6,&OP2L
|
||||
mov r7,&OP2H
|
||||
|
||||
/* COLUMN_END */
|
||||
mov &RES0,2*4(r14)
|
||||
add @r13,r12
|
||||
mov &RES1,2*(4+1)(r14)
|
||||
mov &RES2,&RES0
|
||||
mov &RES3,&RES1
|
||||
mov r12,&RES2
|
||||
clr &RES3
|
||||
clr r12
|
||||
|
||||
/* STEP_1 */
|
||||
mov r4,&MAC32L
|
||||
mov r5,&MAC32H
|
||||
mov r10,&OP2L
|
||||
mov r11,&OP2H
|
||||
add &SUMEXT,r12
|
||||
mov r10,&OP2L
|
||||
mov r11,&OP2H
|
||||
|
||||
/* STEP_2MORE */
|
||||
mov r6,&MAC32L
|
||||
mov r7,&MAC32H
|
||||
add @r13,r12
|
||||
mov r8,&OP2L
|
||||
mov r9,&OP2H
|
||||
add &SUMEXT,r12
|
||||
mov r8,&OP2L
|
||||
mov r9,&OP2H
|
||||
|
||||
/* COLUMN_END */
|
||||
mov &RES0,2*6(r14)
|
||||
add @r13,r12
|
||||
mov &RES1,2*(6+1)(r14)
|
||||
mov &RES2,&RES0
|
||||
mov &RES3,&RES1
|
||||
mov r12,&RES2
|
||||
clr &RES3
|
||||
clr r12
|
||||
|
||||
/* STEP_1 */
|
||||
mov r4,&MAC32L
|
||||
mov r5,&MAC32H
|
||||
mov 2*8(r15),&OP2L
|
||||
mov 2*9(r15),&OP2H
|
||||
add &SUMEXT,r12
|
||||
mov 2*8(r15),&OP2L
|
||||
mov 2*9(r15),&OP2H
|
||||
|
||||
/* STEP_2MORE */
|
||||
mov r6,&MAC32L
|
||||
mov r7,&MAC32H
|
||||
add @r13,r12
|
||||
mov r10,&OP2L
|
||||
mov r11,&OP2H
|
||||
add &SUMEXT,r12
|
||||
mov r10,&OP2L
|
||||
mov r11,&OP2H
|
||||
|
||||
/* SELF_STEP */
|
||||
mov r8,&MAC32L
|
||||
mov r9,&MAC32H
|
||||
add @r13,r12
|
||||
mov r8,&OP2L
|
||||
mov r9,&OP2H
|
||||
|
||||
/* COLUMN_END */
|
||||
mov &RES0,2*8(r14)
|
||||
add @r13,r12
|
||||
mov &RES1,2*(8+1)(r14)
|
||||
mov &RES2,&RES0
|
||||
mov &RES3,&RES1
|
||||
mov r12,&RES2
|
||||
clr &RES3
|
||||
clr r12
|
||||
|
||||
mov 2*8(r15),r4
|
||||
mov 2*(8+1)(r15),r5
|
||||
|
||||
/* STEP_1 */
|
||||
mov r6,&MAC32L
|
||||
mov r7,&MAC32H
|
||||
mov r4,&OP2L
|
||||
mov r5,&OP2H
|
||||
add &SUMEXT,r12
|
||||
mov r4,&OP2L
|
||||
mov r5,&OP2H
|
||||
|
||||
/* STEP_2MORE */
|
||||
mov r8,&MAC32L
|
||||
mov r9,&MAC32H
|
||||
add @r13,r12
|
||||
mov r10,&OP2L
|
||||
mov r11,&OP2H
|
||||
add &SUMEXT,r12
|
||||
mov r10,&OP2L
|
||||
mov r11,&OP2H
|
||||
|
||||
/* COLUMN_END */
|
||||
mov &RES0,2*10(r14)
|
||||
add @r13,r12
|
||||
mov &RES1,2*(10+1)(r14)
|
||||
mov &RES2,&RES0
|
||||
mov &RES3,&RES1
|
||||
mov r12,&RES2
|
||||
clr &RES3
|
||||
clr r12
|
||||
|
||||
/* STEP_1 */
|
||||
mov r8,&MAC32L
|
||||
mov r9,&MAC32H
|
||||
mov r4,&OP2L
|
||||
mov r5,&OP2H
|
||||
add &SUMEXT,r12
|
||||
mov r4,&OP2L
|
||||
mov r5,&OP2H
|
||||
|
||||
/* SELF_STEP */
|
||||
mov r10,&MAC32L
|
||||
mov r11,&MAC32H
|
||||
add @r13,r12
|
||||
mov r10,&OP2L
|
||||
mov r11,&OP2H
|
||||
|
||||
/* COLUMN_END */
|
||||
mov &RES0,2*12(r14)
|
||||
add @r13,r12
|
||||
mov &RES1,2*(12+1)(r14)
|
||||
mov &RES2,&RES0
|
||||
mov &RES3,&RES1
|
||||
mov r12,&RES2
|
||||
clr &RES3
|
||||
clr r12
|
||||
|
||||
/* STEP_1 */
|
||||
mov r10,&MAC32L
|
||||
mov r11,&MAC32H
|
||||
mov r4,&OP2L
|
||||
mov r5,&OP2H
|
||||
add &SUMEXT,r12
|
||||
mov r4,&OP2L
|
||||
mov r5,&OP2H
|
||||
|
||||
/* COLUMN_END */
|
||||
mov &RES0,2*14(r14)
|
||||
add @r13,r12
|
||||
mov &RES1,2*(14+1)(r14)
|
||||
mov &RES2,&RES0
|
||||
mov &RES3,&RES1
|
||||
mov r12,&RES2
|
||||
clr &RES3
|
||||
clr r12
|
||||
|
||||
/* SELF_STEP_1 */
|
||||
mov r4,&MAC32L
|
||||
mov r5,&MAC32H
|
||||
mov r4,&OP2L
|
||||
mov r5,&OP2H
|
||||
|
||||
/* COLUMN_END */
|
||||
mov &RES0,2*16(r14)
|
||||
add @r13,r12
|
||||
mov &RES1,2*(16+1)(r14)
|
||||
mov &RES2,&RES0
|
||||
mov &RES3,&RES1
|
||||
mov r12,&RES2
|
||||
clr &RES3
|
||||
clr r12
|
||||
|
||||
/* END */
|
||||
mov &RES0,2*18(r14)
|
||||
mov &RES1,2*(18+1)(r14)
|
||||
pop r2
|
||||
eint
|
||||
170
samples/Assembly/lib.inc
Normal file
170
samples/Assembly/lib.inc
Normal file
@@ -0,0 +1,170 @@
|
||||
|
||||
; ------------------------------------------------------------------------
|
||||
; 显示 AL 中的数字
|
||||
; ------------------------------------------------------------------------
|
||||
DispAL:
|
||||
push ecx
|
||||
push edx
|
||||
push edi
|
||||
|
||||
mov edi, [dwDispPos]
|
||||
|
||||
mov ah, 0Fh ; 0000b: 黑底 1111b: 白字
|
||||
mov dl, al
|
||||
shr al, 4
|
||||
mov ecx, 2
|
||||
.begin:
|
||||
and al, 01111b
|
||||
cmp al, 9
|
||||
ja .1
|
||||
add al, '0'
|
||||
jmp .2
|
||||
.1:
|
||||
sub al, 0Ah
|
||||
add al, 'A'
|
||||
.2:
|
||||
mov [gs:edi], ax
|
||||
add edi, 2
|
||||
|
||||
mov al, dl
|
||||
loop .begin
|
||||
;add edi, 2
|
||||
|
||||
mov [dwDispPos], edi
|
||||
|
||||
pop edi
|
||||
pop edx
|
||||
pop ecx
|
||||
|
||||
ret
|
||||
; DispAL 结束-------------------------------------------------------------
|
||||
|
||||
|
||||
; ------------------------------------------------------------------------
|
||||
; 显示一个整形数
|
||||
; ------------------------------------------------------------------------
|
||||
DispInt:
|
||||
mov eax, [esp + 4]
|
||||
shr eax, 24
|
||||
call DispAL
|
||||
|
||||
mov eax, [esp + 4]
|
||||
shr eax, 16
|
||||
call DispAL
|
||||
|
||||
mov eax, [esp + 4]
|
||||
shr eax, 8
|
||||
call DispAL
|
||||
|
||||
mov eax, [esp + 4]
|
||||
call DispAL
|
||||
|
||||
mov ah, 07h ; 0000b: 黑底 0111b: 灰字
|
||||
mov al, 'h'
|
||||
push edi
|
||||
mov edi, [dwDispPos]
|
||||
mov [gs:edi], ax
|
||||
add edi, 4
|
||||
mov [dwDispPos], edi
|
||||
pop edi
|
||||
|
||||
ret
|
||||
; DispInt 结束------------------------------------------------------------
|
||||
|
||||
; ------------------------------------------------------------------------
|
||||
; 显示一个字符串
|
||||
; ------------------------------------------------------------------------
|
||||
DispStr:
|
||||
push ebp
|
||||
mov ebp, esp
|
||||
push ebx
|
||||
push esi
|
||||
push edi
|
||||
|
||||
mov esi, [ebp + 8] ; pszInfo
|
||||
mov edi, [dwDispPos]
|
||||
mov ah, 0Fh
|
||||
.1:
|
||||
lodsb
|
||||
test al, al
|
||||
jz .2
|
||||
cmp al, 0Ah ; 是回车吗?
|
||||
jnz .3
|
||||
push eax
|
||||
mov eax, edi
|
||||
mov bl, 160
|
||||
div bl
|
||||
and eax, 0FFh
|
||||
inc eax
|
||||
mov bl, 160
|
||||
mul bl
|
||||
mov edi, eax
|
||||
pop eax
|
||||
jmp .1
|
||||
.3:
|
||||
mov [gs:edi], ax
|
||||
add edi, 2
|
||||
jmp .1
|
||||
|
||||
.2:
|
||||
mov [dwDispPos], edi
|
||||
|
||||
pop edi
|
||||
pop esi
|
||||
pop ebx
|
||||
pop ebp
|
||||
ret
|
||||
; DispStr 结束------------------------------------------------------------
|
||||
|
||||
; ------------------------------------------------------------------------
|
||||
; 换行
|
||||
; ------------------------------------------------------------------------
|
||||
DispReturn:
|
||||
push szReturn
|
||||
call DispStr ;printf("\n");
|
||||
add esp, 4
|
||||
|
||||
ret
|
||||
; DispReturn 结束---------------------------------------------------------
|
||||
|
||||
|
||||
; ------------------------------------------------------------------------
|
||||
; 内存拷贝,仿 memcpy
|
||||
; ------------------------------------------------------------------------
|
||||
; void* MemCpy(void* es:pDest, void* ds:pSrc, int iSize);
|
||||
; ------------------------------------------------------------------------
|
||||
MemCpy:
|
||||
push ebp
|
||||
mov ebp, esp
|
||||
|
||||
push esi
|
||||
push edi
|
||||
push ecx
|
||||
|
||||
mov edi, [ebp + 8] ; Destination
|
||||
mov esi, [ebp + 12] ; Source
|
||||
mov ecx, [ebp + 16] ; Counter
|
||||
.1:
|
||||
cmp ecx, 0 ; 判断计数器
|
||||
jz .2 ; 计数器为零时跳出
|
||||
|
||||
mov al, [ds:esi] ; ┓
|
||||
inc esi ; ┃
|
||||
; ┣ 逐字节移动
|
||||
mov byte [es:edi], al ; ┃
|
||||
inc edi ; ┛
|
||||
|
||||
dec ecx ; 计数器减一
|
||||
jmp .1 ; 循环
|
||||
.2:
|
||||
mov eax, [ebp + 8] ; 返回值
|
||||
|
||||
pop ecx
|
||||
pop edi
|
||||
pop esi
|
||||
mov esp, ebp
|
||||
pop ebp
|
||||
|
||||
ret ; 函数结束,返回
|
||||
; MemCpy 结束-------------------------------------------------------------
|
||||
|
||||
321
samples/Assembly/macros.inc
Normal file
321
samples/Assembly/macros.inc
Normal file
@@ -0,0 +1,321 @@
|
||||
BLARGG_MACROS_INCLUDED = 1
|
||||
|
||||
; Allows extra error checking with modified version
|
||||
; of ca65. Otherwise acts like a constant of 0.
|
||||
ADDR = 0
|
||||
|
||||
; Switches to Segment and places Line there.
|
||||
; Line can be an .align directive, .res, .byte, etc.
|
||||
; Examples:
|
||||
; seg_data BSS, .align 256
|
||||
; seg_data RODATA, {message: .byte "Test",0}
|
||||
.macro seg_data Segment, Line
|
||||
.pushseg
|
||||
.segment .string(Segment)
|
||||
Line
|
||||
.popseg
|
||||
.endmacro
|
||||
|
||||
; Reserves Size bytes in Segment for Name.
|
||||
; If Size is omitted, reserves one byte.
|
||||
.macro seg_res Segment, Name, Size
|
||||
.ifblank Size
|
||||
seg_data Segment, Name: .res 1
|
||||
.else
|
||||
seg_data Segment, Name: .res Size
|
||||
.endif
|
||||
.endmacro
|
||||
|
||||
; Shortcuts for zeropage, bss, and stack
|
||||
.define zp_res seg_res ZEROPAGE,
|
||||
.define nv_res seg_res NVRAM,
|
||||
.define bss_res seg_res BSS,
|
||||
.define sp_res seg_res STACK,
|
||||
.define zp_byte zp_res
|
||||
|
||||
; Copies byte from Src to Addr. If Src begins with #,
|
||||
; it sets Addr to the immediate value.
|
||||
; Out: A = byte copied
|
||||
; Preserved: X, Y
|
||||
.macro mov Addr, Src
|
||||
lda Src
|
||||
sta Addr
|
||||
.endmacro
|
||||
|
||||
; Copies word from Src to Addr. If Src begins with #,
|
||||
; it sets Addr the immediate value.
|
||||
; Out: A = high byte of word
|
||||
; Preserved: X, Y
|
||||
.macro movw Addr, Src
|
||||
.if .match( .left( 1, {Src} ), # )
|
||||
lda #<(.right( .tcount( {Src} )-1, {Src} ))
|
||||
sta Addr
|
||||
lda #>(.right( .tcount( {Src} )-1, {Src} ))
|
||||
sta 1+(Addr)
|
||||
.else
|
||||
lda Src
|
||||
sta Addr
|
||||
lda 1+(Src)
|
||||
sta 1+(Addr)
|
||||
.endif
|
||||
.endmacro
|
||||
|
||||
; Increments 16-bit value at Addr.
|
||||
; Out: EQ/NE based on resulting 16-bit value
|
||||
; Preserved: A, X, Y
|
||||
.macro incw Addr
|
||||
.local @Skip
|
||||
inc Addr
|
||||
bne @Skip
|
||||
inc 1+(Addr)
|
||||
@Skip:
|
||||
.endmacro
|
||||
|
||||
; Adds Src to word at Addr.
|
||||
; Out: A = high byte of result, carry set appropriately
|
||||
; Preserved: X, Y
|
||||
.macro addw Addr, Src
|
||||
.if .match( .left( 1, {Src} ), # )
|
||||
addw_ Addr,(.right( .tcount( {Src} )-1, {Src} ))
|
||||
.else
|
||||
lda Addr
|
||||
clc
|
||||
adc Src
|
||||
sta Addr
|
||||
|
||||
lda 1+(Addr)
|
||||
adc 1+(Src)
|
||||
sta 1+(Addr)
|
||||
.endif
|
||||
.endmacro
|
||||
.macro addw_ Addr, Imm
|
||||
lda Addr
|
||||
clc
|
||||
adc #<Imm
|
||||
sta Addr
|
||||
|
||||
;.if (Imm >> 8) <> 0
|
||||
lda 1+(Addr)
|
||||
adc #>Imm
|
||||
sta 1+(Addr)
|
||||
;.else
|
||||
; .local @Skip
|
||||
; bcc @Skip
|
||||
; inc 1+(Addr)
|
||||
;@Skip:
|
||||
;.endif
|
||||
.endmacro
|
||||
|
||||
; Splits list of words into tables of low and high bytes
|
||||
; Example: split_words foo, {$1234, $5678}
|
||||
; expands to:
|
||||
; foo_l: $34, $78
|
||||
; foo_h: $12, $56
|
||||
; foo_count = 2
|
||||
.macro split_words Label, Words
|
||||
.ident (.concat (.string(Label), "_l")): .lobytes Words
|
||||
.ident (.concat (.string(Label), "_h")): .hibytes Words
|
||||
.ident (.concat (.string(Label), "_count")) = * - .ident (.concat (.string(Label), "_h"))
|
||||
.endmacro
|
||||
|
||||
.macro SELECT Bool, True, False, Extra
|
||||
.ifndef Bool
|
||||
False Extra
|
||||
.elseif Bool <> 0
|
||||
True Extra
|
||||
.else
|
||||
False Extra
|
||||
.endif
|
||||
.endmacro
|
||||
|
||||
.macro DEFAULT Name, Value
|
||||
.ifndef Name
|
||||
Name = Value
|
||||
.endif
|
||||
.endmacro
|
||||
|
||||
.ifp02
|
||||
; 6502 doesn't define these alternate names
|
||||
.define blt bcc
|
||||
.define bge bcs
|
||||
.endif
|
||||
.define jlt jcc
|
||||
.define jge jcs
|
||||
|
||||
; Jxx Target = Bxx Target, except it can go farther than
|
||||
; 128 bytes. Implemented via branch around a JMP.
|
||||
|
||||
; Don't use ca65's longbranch, because they fail for @labels
|
||||
;.macpack longbranch
|
||||
|
||||
.macro jeq Target
|
||||
bne *+5
|
||||
jmp Target
|
||||
.endmacro
|
||||
|
||||
.macro jne Target
|
||||
beq *+5
|
||||
jmp Target
|
||||
.endmacro
|
||||
|
||||
.macro jmi Target
|
||||
bpl *+5
|
||||
jmp Target
|
||||
.endmacro
|
||||
|
||||
.macro jpl Target
|
||||
bmi *+5
|
||||
jmp Target
|
||||
.endmacro
|
||||
|
||||
.macro jcs Target
|
||||
bcc *+5
|
||||
jmp Target
|
||||
.endmacro
|
||||
|
||||
.macro jcc Target
|
||||
bcs *+5
|
||||
jmp Target
|
||||
.endmacro
|
||||
|
||||
.macro jvs Target
|
||||
bvc *+5
|
||||
jmp Target
|
||||
.endmacro
|
||||
|
||||
.macro jvc Target
|
||||
bvs *+5
|
||||
jmp Target
|
||||
.endmacro
|
||||
|
||||
|
||||
; Passes constant data to routine in addr
|
||||
; Preserved: A, X, Y
|
||||
.macro jsr_with_addr routine,data
|
||||
.local Addr
|
||||
pha
|
||||
lda #<Addr
|
||||
sta addr
|
||||
lda #>Addr
|
||||
sta addr+1
|
||||
pla
|
||||
jsr routine
|
||||
seg_data RODATA,{Addr: data}
|
||||
.endmacro
|
||||
|
||||
; Calls routine multiple times, with A having the
|
||||
; value 'start' the first time, 'start+step' the
|
||||
; second time, up to 'end' for the last time.
|
||||
.macro for_loop routine,start,end,step
|
||||
.local @for_loop
|
||||
lda #start
|
||||
@for_loop:
|
||||
pha
|
||||
jsr routine
|
||||
pla
|
||||
clc
|
||||
adc #step
|
||||
cmp #<((end)+(step))
|
||||
bne @for_loop
|
||||
.endmacro
|
||||
|
||||
; Calls routine n times. The value of A in the routine
|
||||
; counts from 0 to n-1.
|
||||
.macro loop_n_times routine,n
|
||||
for_loop routine,0,n-1,+1
|
||||
.endmacro
|
||||
|
||||
; Same as for_loop, except uses 16-bit value in YX.
|
||||
; -256 <= step <= 255
|
||||
.macro for_loop16 routine,start,end,step
|
||||
.if (step) < -256 || (step) > 255
|
||||
.error "Step must be within -256 to 255"
|
||||
.endif
|
||||
.local @for_loop_skip
|
||||
.local @for_loop
|
||||
ldy #>(start)
|
||||
lda #<(start)
|
||||
@for_loop:
|
||||
tax
|
||||
pha
|
||||
tya
|
||||
pha
|
||||
jsr routine
|
||||
pla
|
||||
tay
|
||||
pla
|
||||
clc
|
||||
adc #step
|
||||
.if (step) > 0
|
||||
bcc @for_loop_skip
|
||||
iny
|
||||
.else
|
||||
bcs @for_loop_skip
|
||||
dey
|
||||
.endif
|
||||
@for_loop_skip:
|
||||
cmp #<((end)+(step))
|
||||
bne @for_loop
|
||||
cpy #>((end)+(step))
|
||||
bne @for_loop
|
||||
.endmacro
|
||||
|
||||
; Stores byte at addr
|
||||
; Preserved: X, Y
|
||||
.macro setb addr, byte
|
||||
lda #byte
|
||||
sta addr
|
||||
.endmacro
|
||||
|
||||
; Stores word at addr
|
||||
; Preserved: X, Y
|
||||
.macro setw addr, word
|
||||
lda #<(word)
|
||||
sta addr
|
||||
lda #>(word)
|
||||
sta addr+1
|
||||
.endmacro
|
||||
|
||||
; Loads XY with 16-bit immediate or value at address
|
||||
.macro ldxy Arg
|
||||
.if .match( .left( 1, {Arg} ), # )
|
||||
ldy #<(.right( .tcount( {Arg} )-1, {Arg} ))
|
||||
ldx #>(.right( .tcount( {Arg} )-1, {Arg} ))
|
||||
.else
|
||||
ldy (Arg)
|
||||
ldx (Arg)+1
|
||||
.endif
|
||||
.endmacro
|
||||
|
||||
; Increments XY as 16-bit register, in CONSTANT time.
|
||||
; Z flag set based on entire result.
|
||||
; Preserved: A
|
||||
; Time: 7 clocks
|
||||
.macro inxy
|
||||
iny ; 2
|
||||
beq *+4 ; 3
|
||||
; -1
|
||||
bne *+3 ; 3
|
||||
; -1
|
||||
inx ; 2
|
||||
.endmacro
|
||||
|
||||
; Negates A and adds it to operand
|
||||
.macro subaf Operand
|
||||
eor #$FF
|
||||
sec
|
||||
adc Operand
|
||||
.endmacro
|
||||
|
||||
; Initializes CPU registers to reasonable values
|
||||
; Preserved: A, Y
|
||||
.macro init_cpu_regs
|
||||
sei
|
||||
cld ; unnecessary on NES, but might help on clone
|
||||
ldx #$FF
|
||||
txs
|
||||
.ifndef BUILD_NSF
|
||||
inx
|
||||
stx PPUCTRL
|
||||
.endif
|
||||
.endmacro
|
||||
57
samples/C++/ClasspathVMSystemProperties.inc
Normal file
57
samples/C++/ClasspathVMSystemProperties.inc
Normal file
@@ -0,0 +1,57 @@
|
||||
//===- ClasspathVMSystem/Properties.cpp -----------------------------------===//
|
||||
//===--------------------- GNU classpath gnu/classpath/VMSystemProperties -===//
|
||||
//
|
||||
// The VMKit project
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open Source
|
||||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include <sys/utsname.h>
|
||||
|
||||
#include "types.h"
|
||||
|
||||
#include "Classpath.h"
|
||||
#include "JavaArray.h"
|
||||
#include "JavaClass.h"
|
||||
#include "JavaObject.h"
|
||||
#include "JavaThread.h"
|
||||
#include "JavaUpcalls.h"
|
||||
#include "Jnjvm.h"
|
||||
|
||||
#include "SetProperties.inc"
|
||||
|
||||
using namespace j3;
|
||||
|
||||
extern "C" {
|
||||
|
||||
|
||||
JNIEXPORT void JNICALL Java_gnu_classpath_VMSystemProperties_preInit(
|
||||
#ifdef NATIVE_JNI
|
||||
JNIEnv *env,
|
||||
jclass clazz,
|
||||
#endif
|
||||
JavaObject* prop) {
|
||||
|
||||
llvm_gcroot(prop, 0);
|
||||
|
||||
BEGIN_NATIVE_EXCEPTION(0)
|
||||
|
||||
setProperties(prop);
|
||||
|
||||
END_NATIVE_EXCEPTION
|
||||
}
|
||||
|
||||
extern "C" void Java_gnu_classpath_VMSystemProperties_postInit__Ljava_util_Properties_2(JavaObject* prop) {
|
||||
|
||||
llvm_gcroot(prop, 0);
|
||||
|
||||
BEGIN_NATIVE_EXCEPTION(0)
|
||||
|
||||
setCommandLineProperties(prop);
|
||||
|
||||
END_NATIVE_EXCEPTION
|
||||
}
|
||||
|
||||
}
|
||||
2764
samples/C++/initClasses.inc
Normal file
2764
samples/C++/initClasses.inc
Normal file
File diff suppressed because it is too large
Load Diff
34
samples/C++/instances.inc
Normal file
34
samples/C++/instances.inc
Normal file
@@ -0,0 +1,34 @@
|
||||
#include "QPBO.h"
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#pragma warning(disable: 4661)
|
||||
#endif
|
||||
|
||||
// Instantiations
|
||||
|
||||
template class QPBO<int>;
|
||||
template class QPBO<float>;
|
||||
template class QPBO<double>;
|
||||
|
||||
template <>
|
||||
inline void QPBO<int>::get_type_information(char*& type_name, char*& type_format)
|
||||
{
|
||||
type_name = "int";
|
||||
type_format = "d";
|
||||
}
|
||||
|
||||
template <>
|
||||
inline void QPBO<float>::get_type_information(char*& type_name, char*& type_format)
|
||||
{
|
||||
type_name = "float";
|
||||
type_format = "f";
|
||||
}
|
||||
|
||||
template <>
|
||||
inline void QPBO<double>::get_type_information(char*& type_name, char*& type_format)
|
||||
{
|
||||
type_name = "double";
|
||||
type_format = "Lf";
|
||||
}
|
||||
|
||||
|
||||
31
samples/HTML/rpanel.inc
Normal file
31
samples/HTML/rpanel.inc
Normal file
@@ -0,0 +1,31 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<link rel="stylesheet" charset="UTF-8" type="text/css" href="main.css">
|
||||
<meta charset="UTF-8">
|
||||
</head>
|
||||
<body>
|
||||
<div id="panel_header_main_form">
|
||||
<p id="panel_header_main_form_title">Поддержка:</p>
|
||||
</div>
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<p>Москва:</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>+7-902-7-800-807</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p>Регионы:</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>+7-902-7-800-807</p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</body>
|
||||
5
samples/HTML/tailDel.inc
Normal file
5
samples/HTML/tailDel.inc
Normal file
@@ -0,0 +1,5 @@
|
||||
</UL>
|
||||
<P><A HREF="devices.html">Supported Targets</A></P>
|
||||
</BODY>
|
||||
</HEAD>
|
||||
|
||||
928
samples/KiCad/nrf-bga.kicad_pcb
Normal file
928
samples/KiCad/nrf-bga.kicad_pcb
Normal file
@@ -0,0 +1,928 @@
|
||||
(kicad_pcb (version 4) (host pcbnew "(2014-08-05 BZR 5054)-product")
|
||||
|
||||
(general
|
||||
(links 36)
|
||||
(no_connects 0)
|
||||
(area 146.9984 92.8984 164.465656 112.3572)
|
||||
(thickness 1.6)
|
||||
(drawings 0)
|
||||
(tracks 108)
|
||||
(zones 0)
|
||||
(modules 12)
|
||||
(nets 54)
|
||||
)
|
||||
|
||||
(page A4)
|
||||
(layers
|
||||
(0 F.Cu signal)
|
||||
(31 B.Cu signal)
|
||||
(32 B.Adhes user)
|
||||
(33 F.Adhes user)
|
||||
(34 B.Paste user)
|
||||
(35 F.Paste user)
|
||||
(36 B.SilkS user)
|
||||
(37 F.SilkS user)
|
||||
(38 B.Mask user)
|
||||
(39 F.Mask user)
|
||||
(40 Dwgs.User user)
|
||||
(41 Cmts.User user)
|
||||
(42 Eco1.User user)
|
||||
(43 Eco2.User user)
|
||||
(44 Edge.Cuts user)
|
||||
(45 Margin user)
|
||||
(46 B.CrtYd user)
|
||||
(47 F.CrtYd user)
|
||||
(48 B.Fab user)
|
||||
(49 F.Fab user)
|
||||
)
|
||||
|
||||
(setup
|
||||
(last_trace_width 0.1016)
|
||||
(trace_clearance 0.1016)
|
||||
(zone_clearance 0.2032)
|
||||
(zone_45_only no)
|
||||
(trace_min 0.1016)
|
||||
(segment_width 0.2)
|
||||
(edge_width 0.1)
|
||||
(via_size 0.889)
|
||||
(via_drill 0.635)
|
||||
(via_min_size 0.889)
|
||||
(via_min_drill 0.508)
|
||||
(uvia_size 0.508)
|
||||
(uvia_drill 0.127)
|
||||
(uvias_allowed no)
|
||||
(uvia_min_size 0.508)
|
||||
(uvia_min_drill 0.127)
|
||||
(pcb_text_width 0.3)
|
||||
(pcb_text_size 1.5 1.5)
|
||||
(mod_edge_width 0.15)
|
||||
(mod_text_size 1 1)
|
||||
(mod_text_width 0.15)
|
||||
(pad_size 0.2 0.2)
|
||||
(pad_drill 0)
|
||||
(pad_to_mask_clearance 0)
|
||||
(aux_axis_origin 0 0)
|
||||
(visible_elements FFFCFF7F)
|
||||
(pcbplotparams
|
||||
(layerselection 0x00000_00000001)
|
||||
(usegerberextensions false)
|
||||
(excludeedgelayer true)
|
||||
(linewidth 0.100000)
|
||||
(plotframeref false)
|
||||
(viasonmask false)
|
||||
(mode 1)
|
||||
(useauxorigin false)
|
||||
(hpglpennumber 1)
|
||||
(hpglpenspeed 20)
|
||||
(hpglpendiameter 15)
|
||||
(hpglpenoverlay 2)
|
||||
(psnegative false)
|
||||
(psa4output false)
|
||||
(plotreference true)
|
||||
(plotvalue true)
|
||||
(plotinvisibletext false)
|
||||
(padsonsilk false)
|
||||
(subtractmaskfromsilk false)
|
||||
(outputformat 5)
|
||||
(mirror true)
|
||||
(drillshape 0)
|
||||
(scaleselection 1)
|
||||
(outputdirectory pdfs/))
|
||||
)
|
||||
|
||||
(net 0 "")
|
||||
(net 1 "Net-(C1-Pad1)")
|
||||
(net 2 GND)
|
||||
(net 3 "Net-(C2-Pad1)")
|
||||
(net 4 "Net-(C3-Pad1)")
|
||||
(net 5 "Net-(C4-Pad2)")
|
||||
(net 6 "Net-(D1-Pad1)")
|
||||
(net 7 +BATT)
|
||||
(net 8 SWDIO)
|
||||
(net 9 SWCLK)
|
||||
(net 10 LED)
|
||||
(net 11 "Net-(U1-PadC1)")
|
||||
(net 12 "Net-(U1-PadD1)")
|
||||
(net 13 "Net-(U1-PadG1)")
|
||||
(net 14 "Net-(U1-PadE2)")
|
||||
(net 15 "Net-(U1-PadF2)")
|
||||
(net 16 "Net-(U1-PadG2)")
|
||||
(net 17 "Net-(U1-PadE3)")
|
||||
(net 18 "Net-(U1-PadF3)")
|
||||
(net 19 "Net-(U1-PadG3)")
|
||||
(net 20 "Net-(U1-PadH4)")
|
||||
(net 21 "Net-(U1-PadA5)")
|
||||
(net 22 "Net-(U1-PadB5)")
|
||||
(net 23 "Net-(U1-PadC5)")
|
||||
(net 24 "Net-(U1-PadH5)")
|
||||
(net 25 "Net-(U1-PadA6)")
|
||||
(net 26 "Net-(U1-PadB6)")
|
||||
(net 27 "Net-(U1-PadC6)")
|
||||
(net 28 "Net-(U1-PadH6)")
|
||||
(net 29 "Net-(U1-PadA7)")
|
||||
(net 30 "Net-(U1-PadB7)")
|
||||
(net 31 "Net-(U1-PadC7)")
|
||||
(net 32 "Net-(U1-PadE7)")
|
||||
(net 33 "Net-(U1-PadF7)")
|
||||
(net 34 "Net-(U1-PadG7)")
|
||||
(net 35 "Net-(U1-PadH7)")
|
||||
(net 36 "Net-(U1-PadA8)")
|
||||
(net 37 "Net-(U1-PadD8)")
|
||||
(net 38 "Net-(U1-PadE8)")
|
||||
(net 39 "Net-(U1-PadF8)")
|
||||
(net 40 "Net-(U1-PadG8)")
|
||||
(net 41 "Net-(U1-PadH8)")
|
||||
(net 42 "Net-(U1-PadE9)")
|
||||
(net 43 "Net-(U1-PadF9)")
|
||||
(net 44 "Net-(U1-PadH1)")
|
||||
(net 45 "Net-(U1-PadJ3)")
|
||||
(net 46 "Net-(U1-PadJ4)")
|
||||
(net 47 "Net-(U1-PadJ5)")
|
||||
(net 48 "Net-(U1-PadJ6)")
|
||||
(net 49 "Net-(U1-PadJ7)")
|
||||
(net 50 "Net-(U1-PadJ8)")
|
||||
(net 51 "Net-(U1-PadH9)")
|
||||
(net 52 "Net-(C5-Pad1)")
|
||||
(net 53 "Net-(ANT1-Pad2)")
|
||||
|
||||
(net_class Default "This is the default net class."
|
||||
(clearance 0.1016)
|
||||
(trace_width 0.1016)
|
||||
(via_dia 0.889)
|
||||
(via_drill 0.635)
|
||||
(uvia_dia 0.508)
|
||||
(uvia_drill 0.127)
|
||||
(add_net +BATT)
|
||||
(add_net LED)
|
||||
(add_net "Net-(C1-Pad1)")
|
||||
(add_net "Net-(C2-Pad1)")
|
||||
(add_net "Net-(C3-Pad1)")
|
||||
(add_net "Net-(C4-Pad2)")
|
||||
(add_net "Net-(C5-Pad1)")
|
||||
(add_net "Net-(D1-Pad1)")
|
||||
(add_net "Net-(U1-PadA5)")
|
||||
(add_net "Net-(U1-PadA6)")
|
||||
(add_net "Net-(U1-PadA7)")
|
||||
(add_net "Net-(U1-PadA8)")
|
||||
(add_net "Net-(U1-PadB5)")
|
||||
(add_net "Net-(U1-PadB6)")
|
||||
(add_net "Net-(U1-PadB7)")
|
||||
(add_net "Net-(U1-PadC1)")
|
||||
(add_net "Net-(U1-PadC5)")
|
||||
(add_net "Net-(U1-PadC6)")
|
||||
(add_net "Net-(U1-PadC7)")
|
||||
(add_net "Net-(U1-PadD1)")
|
||||
(add_net "Net-(U1-PadD8)")
|
||||
(add_net "Net-(U1-PadE2)")
|
||||
(add_net "Net-(U1-PadE3)")
|
||||
(add_net "Net-(U1-PadE7)")
|
||||
(add_net "Net-(U1-PadE8)")
|
||||
(add_net "Net-(U1-PadE9)")
|
||||
(add_net "Net-(U1-PadF2)")
|
||||
(add_net "Net-(U1-PadF3)")
|
||||
(add_net "Net-(U1-PadF7)")
|
||||
(add_net "Net-(U1-PadF8)")
|
||||
(add_net "Net-(U1-PadF9)")
|
||||
(add_net "Net-(U1-PadG1)")
|
||||
(add_net "Net-(U1-PadG2)")
|
||||
(add_net "Net-(U1-PadG3)")
|
||||
(add_net "Net-(U1-PadG7)")
|
||||
(add_net "Net-(U1-PadG8)")
|
||||
(add_net "Net-(U1-PadH1)")
|
||||
(add_net "Net-(U1-PadH4)")
|
||||
(add_net "Net-(U1-PadH5)")
|
||||
(add_net "Net-(U1-PadH6)")
|
||||
(add_net "Net-(U1-PadH7)")
|
||||
(add_net "Net-(U1-PadH8)")
|
||||
(add_net "Net-(U1-PadH9)")
|
||||
(add_net "Net-(U1-PadJ3)")
|
||||
(add_net "Net-(U1-PadJ4)")
|
||||
(add_net "Net-(U1-PadJ5)")
|
||||
(add_net "Net-(U1-PadJ6)")
|
||||
(add_net "Net-(U1-PadJ7)")
|
||||
(add_net "Net-(U1-PadJ8)")
|
||||
(add_net SWCLK)
|
||||
(add_net SWDIO)
|
||||
)
|
||||
|
||||
(net_class ANT ""
|
||||
(clearance 0.1016)
|
||||
(trace_width 0.254)
|
||||
(via_dia 0.889)
|
||||
(via_drill 0.635)
|
||||
(uvia_dia 0.508)
|
||||
(uvia_drill 0.127)
|
||||
(add_net GND)
|
||||
(add_net "Net-(ANT1-Pad2)")
|
||||
)
|
||||
|
||||
(module Capacitors_SMD:C_0402 (layer F.Cu) (tedit 5415D599) (tstamp 54B59067)
|
||||
(at 153.75 102.5 270)
|
||||
(descr "Capacitor SMD 0402, reflow soldering, AVX (see smccp.pdf)")
|
||||
(tags "capacitor 0402")
|
||||
(path /54B59137)
|
||||
(attr smd)
|
||||
(fp_text reference C1 (at 0 -1.7 270) (layer F.SilkS)
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
)
|
||||
(fp_text value 12p (at 0 1.7 270) (layer F.SilkS)
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
)
|
||||
(fp_line (start -1.15 -0.6) (end 1.15 -0.6) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start -1.15 0.6) (end 1.15 0.6) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start -1.15 -0.6) (end -1.15 0.6) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start 1.15 -0.6) (end 1.15 0.6) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start 0.25 -0.475) (end -0.25 -0.475) (layer F.SilkS) (width 0.15))
|
||||
(fp_line (start -0.25 0.475) (end 0.25 0.475) (layer F.SilkS) (width 0.15))
|
||||
(pad 1 smd rect (at -0.55 0 270) (size 0.6 0.5) (layers F.Cu F.Paste F.Mask)
|
||||
(net 1 "Net-(C1-Pad1)"))
|
||||
(pad 2 smd rect (at 0.55 0 270) (size 0.6 0.5) (layers F.Cu F.Paste F.Mask)
|
||||
(net 2 GND))
|
||||
(model Capacitors_SMD/C_0402.wrl
|
||||
(at (xyz 0 0 0))
|
||||
(scale (xyz 1 1 1))
|
||||
(rotate (xyz 0 0 0))
|
||||
)
|
||||
)
|
||||
|
||||
(module Capacitors_SMD:C_0402 (layer F.Cu) (tedit 5415D599) (tstamp 54B58E0D)
|
||||
(at 159.004 100.711)
|
||||
(descr "Capacitor SMD 0402, reflow soldering, AVX (see smccp.pdf)")
|
||||
(tags "capacitor 0402")
|
||||
(path /54B591B6)
|
||||
(attr smd)
|
||||
(fp_text reference C2 (at 0 -1.7) (layer F.SilkS)
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
)
|
||||
(fp_text value 12p (at 0 1.7) (layer F.SilkS)
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
)
|
||||
(fp_line (start -1.15 -0.6) (end 1.15 -0.6) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start -1.15 0.6) (end 1.15 0.6) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start -1.15 -0.6) (end -1.15 0.6) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start 1.15 -0.6) (end 1.15 0.6) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start 0.25 -0.475) (end -0.25 -0.475) (layer F.SilkS) (width 0.15))
|
||||
(fp_line (start -0.25 0.475) (end 0.25 0.475) (layer F.SilkS) (width 0.15))
|
||||
(pad 1 smd rect (at -0.55 0) (size 0.6 0.5) (layers F.Cu F.Paste F.Mask)
|
||||
(net 3 "Net-(C2-Pad1)"))
|
||||
(pad 2 smd rect (at 0.55 0) (size 0.6 0.5) (layers F.Cu F.Paste F.Mask)
|
||||
(net 2 GND))
|
||||
(model Capacitors_SMD/C_0402.wrl
|
||||
(at (xyz 0 0 0))
|
||||
(scale (xyz 1 1 1))
|
||||
(rotate (xyz 0 0 0))
|
||||
)
|
||||
)
|
||||
|
||||
(module Capacitors_SMD:C_0402 (layer F.Cu) (tedit 5415D599) (tstamp 54B59E9D)
|
||||
(at 159.004 102.1588)
|
||||
(descr "Capacitor SMD 0402, reflow soldering, AVX (see smccp.pdf)")
|
||||
(tags "capacitor 0402")
|
||||
(path /54B58D67)
|
||||
(attr smd)
|
||||
(fp_text reference C3 (at 0 -1.7) (layer F.SilkS)
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
)
|
||||
(fp_text value 100n (at 0 1.7) (layer F.SilkS)
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
)
|
||||
(fp_line (start -1.15 -0.6) (end 1.15 -0.6) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start -1.15 0.6) (end 1.15 0.6) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start -1.15 -0.6) (end -1.15 0.6) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start 1.15 -0.6) (end 1.15 0.6) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start 0.25 -0.475) (end -0.25 -0.475) (layer F.SilkS) (width 0.15))
|
||||
(fp_line (start -0.25 0.475) (end 0.25 0.475) (layer F.SilkS) (width 0.15))
|
||||
(pad 1 smd rect (at -0.55 0) (size 0.6 0.5) (layers F.Cu F.Paste F.Mask)
|
||||
(net 4 "Net-(C3-Pad1)"))
|
||||
(pad 2 smd rect (at 0.55 0) (size 0.6 0.5) (layers F.Cu F.Paste F.Mask)
|
||||
(net 2 GND))
|
||||
(model Capacitors_SMD/C_0402.wrl
|
||||
(at (xyz 0 0 0))
|
||||
(scale (xyz 1 1 1))
|
||||
(rotate (xyz 0 0 0))
|
||||
)
|
||||
)
|
||||
|
||||
(module Capacitors_SMD:C_0402 (layer F.Cu) (tedit 5415D599) (tstamp 54B58E25)
|
||||
(at 154.15 106.55 90)
|
||||
(descr "Capacitor SMD 0402, reflow soldering, AVX (see smccp.pdf)")
|
||||
(tags "capacitor 0402")
|
||||
(path /54B58DD5)
|
||||
(attr smd)
|
||||
(fp_text reference C4 (at 0 -1.7 90) (layer F.SilkS)
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
)
|
||||
(fp_text value 100n (at 0 1.7 90) (layer F.SilkS)
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
)
|
||||
(fp_line (start -1.15 -0.6) (end 1.15 -0.6) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start -1.15 0.6) (end 1.15 0.6) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start -1.15 -0.6) (end -1.15 0.6) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start 1.15 -0.6) (end 1.15 0.6) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start 0.25 -0.475) (end -0.25 -0.475) (layer F.SilkS) (width 0.15))
|
||||
(fp_line (start -0.25 0.475) (end 0.25 0.475) (layer F.SilkS) (width 0.15))
|
||||
(pad 1 smd rect (at -0.55 0 90) (size 0.6 0.5) (layers F.Cu F.Paste F.Mask)
|
||||
(net 2 GND))
|
||||
(pad 2 smd rect (at 0.55 0 90) (size 0.6 0.5) (layers F.Cu F.Paste F.Mask)
|
||||
(net 5 "Net-(C4-Pad2)"))
|
||||
(model Capacitors_SMD/C_0402.wrl
|
||||
(at (xyz 0 0 0))
|
||||
(scale (xyz 1 1 1))
|
||||
(rotate (xyz 0 0 0))
|
||||
)
|
||||
)
|
||||
|
||||
(module SMD_Packages:SMD-0805 (layer F.Cu) (tedit 54B58D88) (tstamp 54B58E32)
|
||||
(at 162.0266 104.9782 90)
|
||||
(path /54B599BA)
|
||||
(attr smd)
|
||||
(fp_text reference D1 (at 0 -0.3175 90) (layer F.SilkS)
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
)
|
||||
(fp_text value LED (at 0 0.381 90) (layer F.SilkS)
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
)
|
||||
(fp_circle (center -1.651 0.762) (end -1.651 0.635) (layer F.SilkS) (width 0.15))
|
||||
(fp_line (start -0.508 0.762) (end -1.524 0.762) (layer F.SilkS) (width 0.15))
|
||||
(fp_line (start -1.524 0.762) (end -1.524 -0.762) (layer F.SilkS) (width 0.15))
|
||||
(fp_line (start -1.524 -0.762) (end -0.508 -0.762) (layer F.SilkS) (width 0.15))
|
||||
(fp_line (start 0.508 -0.762) (end 1.524 -0.762) (layer F.SilkS) (width 0.15))
|
||||
(fp_line (start 1.524 -0.762) (end 1.524 0.762) (layer F.SilkS) (width 0.15))
|
||||
(fp_line (start 1.524 0.762) (end 0.508 0.762) (layer F.SilkS) (width 0.15))
|
||||
(pad 1 smd rect (at -0.9525 0 90) (size 0.889 1.397) (layers F.Cu F.Paste F.Mask)
|
||||
(net 6 "Net-(D1-Pad1)"))
|
||||
(pad 2 smd rect (at 0.9525 0 90) (size 0.889 1.397) (layers F.Cu F.Paste F.Mask)
|
||||
(net 2 GND))
|
||||
(model SMD_Packages/SMD-0805.wrl
|
||||
(at (xyz 0 0 0))
|
||||
(scale (xyz 0.1000000014901161 0.1000000014901161 0.1000000014901161))
|
||||
(rotate (xyz 0 0 0))
|
||||
)
|
||||
)
|
||||
|
||||
(module Pin_Headers:Pin_Header_Straight_1x04 (layer F.Cu) (tedit 54B58D8A) (tstamp 54B58E41)
|
||||
(at 156.7942 109.1946 180)
|
||||
(descr "Through hole pin header")
|
||||
(tags "pin header")
|
||||
(path /54B593BB)
|
||||
(fp_text reference P1 (at 0 -2.286 180) (layer F.SilkS)
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
)
|
||||
(fp_text value CONN_01X04 (at 0 0 180) (layer F.SilkS) hide
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
)
|
||||
(fp_line (start -2.54 1.27) (end 5.08 1.27) (layer F.SilkS) (width 0.15))
|
||||
(fp_line (start -2.54 -1.27) (end 5.08 -1.27) (layer F.SilkS) (width 0.15))
|
||||
(fp_line (start -5.08 -1.27) (end -2.54 -1.27) (layer F.SilkS) (width 0.15))
|
||||
(fp_line (start 5.08 1.27) (end 5.08 -1.27) (layer F.SilkS) (width 0.15))
|
||||
(fp_line (start -2.54 -1.27) (end -2.54 1.27) (layer F.SilkS) (width 0.15))
|
||||
(fp_line (start -5.08 -1.27) (end -5.08 1.27) (layer F.SilkS) (width 0.15))
|
||||
(fp_line (start -5.08 1.27) (end -2.54 1.27) (layer F.SilkS) (width 0.15))
|
||||
(pad 1 thru_hole rect (at -3.81 0 180) (size 1.7272 2.032) (drill 1.016) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 2 GND))
|
||||
(pad 2 thru_hole oval (at -1.27 0 180) (size 1.7272 2.032) (drill 1.016) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 7 +BATT))
|
||||
(pad 3 thru_hole oval (at 1.27 0 180) (size 1.7272 2.032) (drill 1.016) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 8 SWDIO))
|
||||
(pad 4 thru_hole oval (at 3.81 0 180) (size 1.7272 2.032) (drill 1.016) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 9 SWCLK))
|
||||
(model Pin_Headers/Pin_Header_Straight_1x04.wrl
|
||||
(at (xyz 0 0 0))
|
||||
(scale (xyz 1 1 1))
|
||||
(rotate (xyz 0 0 0))
|
||||
)
|
||||
)
|
||||
|
||||
(module Resistors_SMD:R_0603 (layer F.Cu) (tedit 5415CC62) (tstamp 54B59E20)
|
||||
(at 160.0454 105.0544 270)
|
||||
(descr "Resistor SMD 0603, reflow soldering, Vishay (see dcrcw.pdf)")
|
||||
(tags "resistor 0603")
|
||||
(path /54B59A45)
|
||||
(attr smd)
|
||||
(fp_text reference R1 (at 0 -1.9 270) (layer F.SilkS)
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
)
|
||||
(fp_text value R (at 0 1.9 270) (layer F.SilkS)
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
)
|
||||
(fp_line (start -1.3 -0.8) (end 1.3 -0.8) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start -1.3 0.8) (end 1.3 0.8) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start -1.3 -0.8) (end -1.3 0.8) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start 1.3 -0.8) (end 1.3 0.8) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start 0.5 0.675) (end -0.5 0.675) (layer F.SilkS) (width 0.15))
|
||||
(fp_line (start -0.5 -0.675) (end 0.5 -0.675) (layer F.SilkS) (width 0.15))
|
||||
(pad 1 smd rect (at -0.75 0 270) (size 0.5 0.9) (layers F.Cu F.Paste F.Mask)
|
||||
(net 10 LED))
|
||||
(pad 2 smd rect (at 0.75 0 270) (size 0.5 0.9) (layers F.Cu F.Paste F.Mask)
|
||||
(net 6 "Net-(D1-Pad1)"))
|
||||
(model Resistors_SMD/R_0603.wrl
|
||||
(at (xyz 0 0 0))
|
||||
(scale (xyz 1 1 1))
|
||||
(rotate (xyz 0 0 0))
|
||||
)
|
||||
)
|
||||
|
||||
(module Crystals_Oscillators_SMD:CX2520DB (layer F.Cu) (tedit 544FEDED) (tstamp 54B58E9A)
|
||||
(at 156.1084 101.3714)
|
||||
(path /54B5903E)
|
||||
(fp_text reference X1 (at 0 -2.25) (layer F.SilkS)
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
)
|
||||
(fp_text value CRYSTAL (at 0 2.5) (layer F.SilkS)
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
)
|
||||
(fp_line (start -1.25 1) (end 1.25 1) (layer F.SilkS) (width 0.15))
|
||||
(fp_line (start 1.25 1) (end 1.25 -1) (layer F.SilkS) (width 0.15))
|
||||
(fp_line (start 1.25 -1) (end -1.25 -1) (layer F.SilkS) (width 0.15))
|
||||
(fp_line (start -1.25 -1) (end -1.25 1) (layer F.SilkS) (width 0.15))
|
||||
(pad 1 smd rect (at -0.9 0.65) (size 1.2 1) (layers F.Cu F.Paste F.Mask)
|
||||
(net 1 "Net-(C1-Pad1)"))
|
||||
(pad 2 smd rect (at 0.9 -0.65) (size 1.2 1) (layers F.Cu F.Paste F.Mask)
|
||||
(net 3 "Net-(C2-Pad1)"))
|
||||
(pad 3 smd rect (at 0.9 0.65) (size 1.2 1) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 4 smd rect (at -0.9 -0.65) (size 1.2 1) (layers F.Cu F.Paste F.Mask))
|
||||
)
|
||||
|
||||
(module NRF51:WLCSP62 (layer F.Cu) (tedit 54B59368) (tstamp 54B59DAD)
|
||||
(at 156.9212 105.1306)
|
||||
(path /54B58C30)
|
||||
(fp_text reference U1 (at 0 3.2) (layer F.SilkS)
|
||||
(effects (font (size 1.2 1.2) (thickness 0.2)))
|
||||
)
|
||||
(fp_text value nRF51x22-CEAA (at 0 -3.2) (layer F.SilkS)
|
||||
(effects (font (size 1.2 1.2) (thickness 0.2)))
|
||||
)
|
||||
(fp_line (start -1.6 -2) (end -2 -1.6) (layer F.SilkS) (width 0.2))
|
||||
(fp_line (start -2 -1.6) (end -2 2) (layer F.SilkS) (width 0.2))
|
||||
(fp_line (start -2 2) (end 2 2) (layer F.SilkS) (width 0.2))
|
||||
(fp_line (start 2 2) (end 2 -2) (layer F.SilkS) (width 0.2))
|
||||
(fp_line (start 2 -2) (end -1.6 -2) (layer F.SilkS) (width 0.2))
|
||||
(pad A1 smd circle (at -1.6 -1.6) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 7 +BATT))
|
||||
(pad B1 smd circle (at -1.6 -1.2) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 2 GND))
|
||||
(pad C1 smd circle (at -1.6 -0.8) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 11 "Net-(U1-PadC1)"))
|
||||
(pad D1 smd circle (at -1.6 -0.4) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 12 "Net-(U1-PadD1)"))
|
||||
(pad E1 smd circle (at -1.6 0) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 52 "Net-(C5-Pad1)"))
|
||||
(pad F1 smd circle (at -1.6 0.4) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 5 "Net-(C4-Pad2)"))
|
||||
(pad G1 smd circle (at -1.6 0.8) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 13 "Net-(U1-PadG1)"))
|
||||
(pad H1 smd circle (at -1.6 1.2) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 44 "Net-(U1-PadH1)"))
|
||||
(pad A2 smd circle (at -1.2 -1.6) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 1 "Net-(C1-Pad1)"))
|
||||
(pad E2 smd circle (at -1.2 0) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 14 "Net-(U1-PadE2)"))
|
||||
(pad F2 smd circle (at -1.2 0.4) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 15 "Net-(U1-PadF2)"))
|
||||
(pad G2 smd circle (at -1.2 0.8) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 16 "Net-(U1-PadG2)"))
|
||||
(pad H2 smd circle (at -1.2 1.2) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 9 SWCLK))
|
||||
(pad J2 smd circle (at -1.2 1.6) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 8 SWDIO))
|
||||
(pad A3 smd circle (at -0.8 -1.6) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 3 "Net-(C2-Pad1)"))
|
||||
(pad E3 smd circle (at -0.8 0) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 17 "Net-(U1-PadE3)"))
|
||||
(pad F3 smd circle (at -0.8 0.4) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 18 "Net-(U1-PadF3)"))
|
||||
(pad G3 smd circle (at -0.8 0.8) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 19 "Net-(U1-PadG3)"))
|
||||
(pad H3 smd circle (at -0.8 1.2) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 2 GND))
|
||||
(pad J3 smd circle (at -0.8 1.6) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 45 "Net-(U1-PadJ3)"))
|
||||
(pad A4 smd circle (at -0.4 -1.6) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 4 "Net-(C3-Pad1)"))
|
||||
(pad B4 smd circle (at -0.4 -1.2) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 2 GND))
|
||||
(pad G4 smd circle (at -0.4 0.8) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 2 GND))
|
||||
(pad H4 smd circle (at -0.4 1.2) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 20 "Net-(U1-PadH4)"))
|
||||
(pad J4 smd circle (at -0.4 1.6) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 46 "Net-(U1-PadJ4)"))
|
||||
(pad A5 smd circle (at 0 -1.6) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 21 "Net-(U1-PadA5)"))
|
||||
(pad B5 smd circle (at 0 -1.2) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 22 "Net-(U1-PadB5)"))
|
||||
(pad C5 smd circle (at 0 -0.8) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 23 "Net-(U1-PadC5)"))
|
||||
(pad G5 smd circle (at 0 0.8) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 2 GND))
|
||||
(pad H5 smd circle (at 0 1.2) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 24 "Net-(U1-PadH5)"))
|
||||
(pad J5 smd circle (at 0 1.6) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 47 "Net-(U1-PadJ5)"))
|
||||
(pad A6 smd circle (at 0.4 -1.6) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 25 "Net-(U1-PadA6)"))
|
||||
(pad B6 smd circle (at 0.4 -1.2) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 26 "Net-(U1-PadB6)"))
|
||||
(pad C6 smd circle (at 0.4 -0.8) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 27 "Net-(U1-PadC6)"))
|
||||
(pad G6 smd circle (at 0.4 0.8) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 2 GND))
|
||||
(pad H6 smd circle (at 0.4 1.2) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 28 "Net-(U1-PadH6)"))
|
||||
(pad J6 smd circle (at 0.4 1.6) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 48 "Net-(U1-PadJ6)"))
|
||||
(pad A7 smd circle (at 0.8 -1.6) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 29 "Net-(U1-PadA7)"))
|
||||
(pad B7 smd circle (at 0.8 -1.2) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 30 "Net-(U1-PadB7)"))
|
||||
(pad C7 smd circle (at 0.8 -0.8) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 31 "Net-(U1-PadC7)"))
|
||||
(pad D7 smd circle (at 0.8 -0.4) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 2 GND))
|
||||
(pad E7 smd circle (at 0.8 0) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 32 "Net-(U1-PadE7)"))
|
||||
(pad F7 smd circle (at 0.8 0.4) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 33 "Net-(U1-PadF7)"))
|
||||
(pad G7 smd circle (at 0.8 0.8) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 34 "Net-(U1-PadG7)"))
|
||||
(pad H7 smd circle (at 0.8 1.2) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 35 "Net-(U1-PadH7)"))
|
||||
(pad J7 smd circle (at 0.8 1.6) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 49 "Net-(U1-PadJ7)"))
|
||||
(pad A8 smd circle (at 1.2 -1.6) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 36 "Net-(U1-PadA8)"))
|
||||
(pad B8 smd circle (at 1.2 -1.2) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 7 +BATT))
|
||||
(pad C8 smd circle (at 1.2 -0.8) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 2 GND))
|
||||
(pad D8 smd circle (at 1.2 -0.4) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 37 "Net-(U1-PadD8)"))
|
||||
(pad E8 smd circle (at 1.2 0) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 38 "Net-(U1-PadE8)"))
|
||||
(pad F8 smd circle (at 1.2 0.4) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 39 "Net-(U1-PadF8)"))
|
||||
(pad G8 smd circle (at 1.2 0.8) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 40 "Net-(U1-PadG8)"))
|
||||
(pad H8 smd circle (at 1.2 1.2) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 41 "Net-(U1-PadH8)"))
|
||||
(pad J8 smd circle (at 1.2 1.6) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 50 "Net-(U1-PadJ8)"))
|
||||
(pad A9 smd circle (at 1.6 -1.6) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask))
|
||||
(pad B9 smd circle (at 1.6 -1.2) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 7 +BATT))
|
||||
(pad C9 smd circle (at 1.6 -0.8) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 2 GND))
|
||||
(pad D9 smd circle (at 1.6 -0.4) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 10 LED))
|
||||
(pad E9 smd circle (at 1.6 0) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 42 "Net-(U1-PadE9)"))
|
||||
(pad F9 smd circle (at 1.6 0.4) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 43 "Net-(U1-PadF9)"))
|
||||
(pad G9 smd circle (at 1.6 0.8) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 2 GND))
|
||||
(pad H9 smd circle (at 1.6 1.2) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 51 "Net-(U1-PadH9)"))
|
||||
)
|
||||
|
||||
(module Capacitors_SMD:C_0402 (layer F.Cu) (tedit 5415D599) (tstamp 55048D3E)
|
||||
(at 153 106.55 270)
|
||||
(descr "Capacitor SMD 0402, reflow soldering, AVX (see smccp.pdf)")
|
||||
(tags "capacitor 0402")
|
||||
(path /550483E1)
|
||||
(attr smd)
|
||||
(fp_text reference C5 (at 0 -1.7 270) (layer F.SilkS)
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
)
|
||||
(fp_text value 2n2 (at 0 1.7 270) (layer F.Fab)
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
)
|
||||
(fp_line (start -1.15 -0.6) (end 1.15 -0.6) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start -1.15 0.6) (end 1.15 0.6) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start -1.15 -0.6) (end -1.15 0.6) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start 1.15 -0.6) (end 1.15 0.6) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start 0.25 -0.475) (end -0.25 -0.475) (layer F.SilkS) (width 0.15))
|
||||
(fp_line (start -0.25 0.475) (end 0.25 0.475) (layer F.SilkS) (width 0.15))
|
||||
(pad 1 smd rect (at -0.55 0 270) (size 0.6 0.5) (layers F.Cu F.Paste F.Mask)
|
||||
(net 52 "Net-(C5-Pad1)"))
|
||||
(pad 2 smd rect (at 0.55 0 270) (size 0.6 0.5) (layers F.Cu F.Paste F.Mask)
|
||||
(net 2 GND))
|
||||
(model Capacitors_SMD.3dshapes/C_0402.wrl
|
||||
(at (xyz 0 0 0))
|
||||
(scale (xyz 1 1 1))
|
||||
(rotate (xyz 0 0 0))
|
||||
)
|
||||
)
|
||||
|
||||
(module ANT:ANT-2.4GHz (layer F.Cu) (tedit 54517711) (tstamp 55049531)
|
||||
(at 149.35 106.95 90)
|
||||
(path /55047C3D)
|
||||
(fp_text reference ANT1 (at -2.5 1.5 90) (layer F.SilkS)
|
||||
(effects (font (size 0.4 0.4) (thickness 0.04)))
|
||||
)
|
||||
(fp_text value ANT-2.4GHz (at -2 2 90) (layer F.SilkS)
|
||||
(effects (font (size 0.4 0.4) (thickness 0.04)))
|
||||
)
|
||||
(pad 1 smd rect (at 0 0 90) (size 0.9 4.9) (layers F.Cu)
|
||||
(net 2 GND))
|
||||
(pad 3 smd rect (at 2.05 -2.7 90) (size 5 0.5) (layers F.Cu))
|
||||
(pad 2 smd rect (at 2.1 0 90) (size 0.5 4.9) (layers F.Cu)
|
||||
(net 53 "Net-(ANT1-Pad2)"))
|
||||
(pad 3 smd rect (at 4.3 -1.13 90) (size 0.5 2.64) (layers F.Cu))
|
||||
(pad 3 smd rect (at 6.8 -1.13 90) (size 0.5 2.64) (layers F.Cu))
|
||||
(pad 3 smd rect (at 5.55 -0.06 90) (size 2 0.5) (layers F.Cu))
|
||||
(pad 3 smd rect (at 7.9 -2.7 90) (size 2.7 0.5) (layers F.Cu))
|
||||
(pad 3 smd rect (at 12.6 -2.7 90) (size 2.7 0.5) (layers F.Cu))
|
||||
(pad 3 smd rect (at 9 -1.13 90) (size 0.5 2.64) (layers F.Cu))
|
||||
(pad 3 smd rect (at 11.5 -1.13 90) (size 0.5 2.64) (layers F.Cu))
|
||||
(pad 3 smd rect (at 10.25 -0.06 90) (size 2 0.5) (layers F.Cu))
|
||||
(pad 3 smd rect (at 13.7 -0.48 90) (size 0.5 3.94) (layers F.Cu))
|
||||
)
|
||||
|
||||
(module NRF51:BAL-NRF02D3 (layer F.Cu) (tedit 550C7CF1) (tstamp 55048D47)
|
||||
(at 153.65 104.55 180)
|
||||
(path /550480A2)
|
||||
(fp_text reference U2 (at 0 1.95 180) (layer F.SilkS)
|
||||
(effects (font (size 1.2 1.2) (thickness 0.2)))
|
||||
)
|
||||
(fp_text value BAL-NRF02D3 (at 0 -1.95 180) (layer F.SilkS)
|
||||
(effects (font (size 1.2 1.2) (thickness 0.2)))
|
||||
)
|
||||
(fp_circle (center 0.75 -1.25) (end 1 -1.25) (layer F.SilkS) (width 0.15))
|
||||
(fp_line (start -1 -0.75) (end -1 0.75) (layer F.SilkS) (width 0.2))
|
||||
(fp_line (start -1 0.75) (end 1 0.75) (layer F.SilkS) (width 0.2))
|
||||
(fp_line (start 1 0.75) (end 1 -0.75) (layer F.SilkS) (width 0.2))
|
||||
(fp_line (start 1 -0.75) (end -1 -0.75) (layer F.SilkS) (width 0.2))
|
||||
(pad A3 smd circle (at -0.5 -0.25 180) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 12 "Net-(U1-PadD1)"))
|
||||
(pad B3 smd circle (at -0.5 0.25 180) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 11 "Net-(U1-PadC1)"))
|
||||
(pad A2 smd circle (at 0 -0.25 180) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 52 "Net-(C5-Pad1)"))
|
||||
(pad A1 smd circle (at 0.5 -0.25 180) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 53 "Net-(ANT1-Pad2)"))
|
||||
(pad B1 smd circle (at 0.5 0.25 180) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 2 GND))
|
||||
)
|
||||
|
||||
(segment (start 155.7212 102.5342) (end 155.2084 102.0214) (width 0.1016) (layer F.Cu) (net 1))
|
||||
(segment (start 155.7212 103.5306) (end 155.7212 102.5342) (width 0.1016) (layer F.Cu) (net 1))
|
||||
(segment (start 155.137 101.95) (end 155.2084 102.0214) (width 0.1016) (layer F.Cu) (net 1) (tstamp 55048FFD))
|
||||
(segment (start 153.75 101.95) (end 155.137 101.95) (width 0.1016) (layer F.Cu) (net 1))
|
||||
(segment (start 156.947646 104.7306) (end 156.7306 104.7306) (width 0.1016) (layer F.Cu) (net 2))
|
||||
(segment (start 156.7306 104.7306) (end 156.5212 104.5212) (width 0.1016) (layer F.Cu) (net 2))
|
||||
(segment (start 156.5212 104.5212) (end 156.5212 104.072021) (width 0.1016) (layer F.Cu) (net 2))
|
||||
(segment (start 156.5212 104.072021) (end 156.5212 103.9306) (width 0.1016) (layer F.Cu) (net 2))
|
||||
(segment (start 156.1212 106.3306) (end 156.5212 105.9306) (width 0.1016) (layer F.Cu) (net 2))
|
||||
(segment (start 156.5212 105.9306) (end 156.9212 105.9306) (width 0.1016) (layer F.Cu) (net 2))
|
||||
(segment (start 157.3212 105.9306) (end 156.9212 105.9306) (width 0.1016) (layer F.Cu) (net 2))
|
||||
(segment (start 157.7212 104.7306) (end 156.947646 104.7306) (width 0.1016) (layer F.Cu) (net 2))
|
||||
(segment (start 156.5212 103.9306) (end 155.3212 103.9306) (width 0.1016) (layer F.Cu) (net 2))
|
||||
(segment (start 156.9212 104.757046) (end 156.9212 105.9306) (width 0.1016) (layer F.Cu) (net 2))
|
||||
(segment (start 156.947646 104.7306) (end 156.9212 104.757046) (width 0.1016) (layer F.Cu) (net 2))
|
||||
(segment (start 157.7212 104.7306) (end 158.1212 104.3306) (width 0.1016) (layer F.Cu) (net 2))
|
||||
(segment (start 158.1212 104.3306) (end 158.5212 104.3306) (width 0.1016) (layer F.Cu) (net 2))
|
||||
(segment (start 161.2265 103.4796) (end 161.7726 104.0257) (width 0.1016) (layer F.Cu) (net 2))
|
||||
(segment (start 159.3722 103.4796) (end 161.2265 103.4796) (width 0.1016) (layer F.Cu) (net 2))
|
||||
(segment (start 161.7726 104.0257) (end 162.0266 104.0257) (width 0.1016) (layer F.Cu) (net 2))
|
||||
(segment (start 159.554 101.0626) (end 159.554 102.1588) (width 0.1016) (layer F.Cu) (net 2))
|
||||
(segment (start 159.554 100.711) (end 159.554 101.0626) (width 0.1016) (layer F.Cu) (net 2))
|
||||
(segment (start 159.3722 102.6922) (end 159.3722 103.4796) (width 0.1016) (layer F.Cu) (net 2))
|
||||
(segment (start 159.554 102.5104) (end 159.3722 102.6922) (width 0.1016) (layer F.Cu) (net 2))
|
||||
(segment (start 159.554 102.1588) (end 159.554 102.5104) (width 0.1016) (layer F.Cu) (net 2))
|
||||
(segment (start 159.3722 103.621021) (end 159.3722 103.4796) (width 0.1016) (layer F.Cu) (net 2))
|
||||
(segment (start 158.5212 104.3306) (end 158.662621 104.3306) (width 0.1016) (layer F.Cu) (net 2))
|
||||
(segment (start 158.662621 104.3306) (end 159.3722 103.621021) (width 0.1016) (layer F.Cu) (net 2))
|
||||
(segment (start 155.0306 103.9306) (end 154.15 103.05) (width 0.1016) (layer F.Cu) (net 2) (tstamp 55048FDD))
|
||||
(segment (start 154.15 103.05) (end 153.75 103.05) (width 0.1016) (layer F.Cu) (net 2) (tstamp 55048FEF))
|
||||
(segment (start 155.3212 103.9306) (end 155.0306 103.9306) (width 0.1016) (layer F.Cu) (net 2))
|
||||
(segment (start 154.15 107.1) (end 153 107.1) (width 0.1016) (layer F.Cu) (net 2))
|
||||
(segment (start 160.6042 108.3542) (end 160.6042 109.1946) (width 0.1016) (layer F.Cu) (net 2) (tstamp 5504935E))
|
||||
(segment (start 158.5212 105.9306) (end 159.05 105.9306) (width 0.1016) (layer F.Cu) (net 2))
|
||||
(segment (start 160.85 105.05) (end 159.4 105.05) (width 0.1016) (layer F.Cu) (net 2) (tstamp 55049373))
|
||||
(segment (start 159.4 105.05) (end 159.05 105.4) (width 0.1016) (layer F.Cu) (net 2) (tstamp 55049377))
|
||||
(segment (start 159.05 105.4) (end 159.05 105.9306) (width 0.1016) (layer F.Cu) (net 2) (tstamp 55049378))
|
||||
(segment (start 161.8743 104.0257) (end 160.85 105.05) (width 0.1016) (layer F.Cu) (net 2) (tstamp 55049366))
|
||||
(segment (start 162.0266 104.0257) (end 161.8743 104.0257) (width 0.1016) (layer F.Cu) (net 2))
|
||||
(segment (start 149.5 107.1) (end 149.35 106.95) (width 0.1016) (layer F.Cu) (net 2) (tstamp 5504964A) (status 30))
|
||||
(segment (start 149.5 107.1) (end 149.35 106.95) (width 0.254) (layer F.Cu) (net 2) (tstamp 5504967F) (status 30))
|
||||
(segment (start 153 107.1) (end 149.5 107.1) (width 0.254) (layer F.Cu) (net 2) (status 20))
|
||||
(segment (start 158.4436 100.7214) (end 158.454 100.711) (width 0.1016) (layer F.Cu) (net 3))
|
||||
(segment (start 157.0084 100.7214) (end 158.4436 100.7214) (width 0.1016) (layer F.Cu) (net 3))
|
||||
(segment (start 156.6786 100.7214) (end 157.0084 100.7214) (width 0.1016) (layer F.Cu) (net 3))
|
||||
(segment (start 156.1084 101.2916) (end 156.6786 100.7214) (width 0.1016) (layer F.Cu) (net 3))
|
||||
(segment (start 156.1084 103.5178) (end 156.1084 101.2916) (width 0.1016) (layer F.Cu) (net 3))
|
||||
(segment (start 156.1212 103.5306) (end 156.1084 103.5178) (width 0.1016) (layer F.Cu) (net 3))
|
||||
(segment (start 156.5212 103.389179) (end 157.014979 102.8954) (width 0.1016) (layer F.Cu) (net 4))
|
||||
(segment (start 156.5212 103.5306) (end 156.5212 103.389179) (width 0.1016) (layer F.Cu) (net 4))
|
||||
(segment (start 157.6674 102.8954) (end 158.404 102.1588) (width 0.1016) (layer F.Cu) (net 4))
|
||||
(segment (start 158.404 102.1588) (end 158.454 102.1588) (width 0.1016) (layer F.Cu) (net 4))
|
||||
(segment (start 157.014979 102.8954) (end 157.6674 102.8954) (width 0.1016) (layer F.Cu) (net 4))
|
||||
(segment (start 154.45 106) (end 154.9194 105.5306) (width 0.1016) (layer F.Cu) (net 5) (tstamp 5504901F))
|
||||
(segment (start 154.9194 105.5306) (end 155.3212 105.5306) (width 0.1016) (layer F.Cu) (net 5) (tstamp 55049021))
|
||||
(segment (start 154.15 106) (end 154.45 106) (width 0.1016) (layer F.Cu) (net 5))
|
||||
(segment (start 160.1717 105.9307) (end 160.0454 105.8044) (width 0.1016) (layer F.Cu) (net 6))
|
||||
(segment (start 162.0266 105.9307) (end 160.1717 105.9307) (width 0.1016) (layer F.Cu) (net 6))
|
||||
(segment (start 159 99.9) (end 159.05 99.9) (width 0.1016) (layer F.Cu) (net 7))
|
||||
(segment (start 159.35 99.6) (end 161.2 99.6) (width 0.1016) (layer F.Cu) (net 7))
|
||||
(segment (start 158.25 111.15) (end 158.0642 110.9642) (width 0.1016) (layer F.Cu) (net 7))
|
||||
(segment (start 159.05 99.9) (end 159.35 99.6) (width 0.1016) (layer F.Cu) (net 7))
|
||||
(segment (start 161.2 99.6) (end 163.35 101.75) (width 0.1016) (layer F.Cu) (net 7))
|
||||
(segment (start 163.35 101.75) (end 163.35 110.35) (width 0.1016) (layer F.Cu) (net 7))
|
||||
(segment (start 163.35 110.35) (end 162.55 111.15) (width 0.1016) (layer F.Cu) (net 7))
|
||||
(segment (start 158.0642 110.9642) (end 158.0642 109.1946) (width 0.1016) (layer F.Cu) (net 7))
|
||||
(segment (start 162.55 111.15) (end 158.25 111.15) (width 0.1016) (layer F.Cu) (net 7))
|
||||
(segment (start 158.5212 103.9306) (end 158.1212 103.9306) (width 0.1016) (layer F.Cu) (net 7))
|
||||
(segment (start 158.0642 109.347) (end 158.0642 109.1946) (width 0.1016) (layer F.Cu) (net 7))
|
||||
(segment (start 159 99.9) (end 159 103.593221) (width 0.1016) (layer F.Cu) (net 7))
|
||||
(segment (start 158.662621 103.9306) (end 158.5212 103.9306) (width 0.1016) (layer F.Cu) (net 7))
|
||||
(segment (start 154.1 99.6) (end 158.7 99.6) (width 0.1016) (layer F.Cu) (net 7))
|
||||
(segment (start 153 102.3) (end 153 100.7) (width 0.1016) (layer F.Cu) (net 7))
|
||||
(segment (start 153.2 102.5) (end 153 102.3) (width 0.1016) (layer F.Cu) (net 7))
|
||||
(segment (start 158.7 99.6) (end 159 99.9) (width 0.1016) (layer F.Cu) (net 7))
|
||||
(segment (start 154.2906 102.5) (end 153.2 102.5) (width 0.1016) (layer F.Cu) (net 7))
|
||||
(segment (start 159 103.593221) (end 158.662621 103.9306) (width 0.1016) (layer F.Cu) (net 7))
|
||||
(segment (start 153 100.7) (end 154.1 99.6) (width 0.1016) (layer F.Cu) (net 7))
|
||||
(segment (start 155.3212 103.5306) (end 154.2906 102.5) (width 0.1016) (layer F.Cu) (net 7))
|
||||
(segment (start 155.7212 108.9976) (end 155.5242 109.1946) (width 0.1016) (layer F.Cu) (net 8))
|
||||
(segment (start 155.7212 106.7306) (end 155.7212 108.9976) (width 0.1016) (layer F.Cu) (net 8))
|
||||
(segment (start 152.9842 109.0676) (end 152.9842 109.1946) (width 0.1016) (layer F.Cu) (net 9))
|
||||
(segment (start 152.9842 109.1946) (end 152.9842 109.0422) (width 0.1016) (layer F.Cu) (net 9))
|
||||
(segment (start 155.2018 106.85) (end 155.7212 106.3306) (width 0.1016) (layer F.Cu) (net 9) (tstamp 55049280))
|
||||
(segment (start 155.1 106.95) (end 155.2 106.85) (width 0.1016) (layer F.Cu) (net 9))
|
||||
(segment (start 155.1 107.35) (end 155.1 106.95) (width 0.1016) (layer F.Cu) (net 9))
|
||||
(segment (start 154.55 107.9) (end 155.1 107.35) (width 0.1016) (layer F.Cu) (net 9))
|
||||
(segment (start 154.1264 107.9) (end 154.55 107.9) (width 0.1016) (layer F.Cu) (net 9))
|
||||
(segment (start 152.9842 109.0422) (end 154.1264 107.9) (width 0.1016) (layer F.Cu) (net 9))
|
||||
(segment (start 155.2 106.85) (end 155.2018 106.85) (width 0.1016) (layer F.Cu) (net 9))
|
||||
(segment (start 160.0454 104.3044) (end 159.4938 104.3044) (width 0.1016) (layer F.Cu) (net 10))
|
||||
(segment (start 158.662621 104.7306) (end 158.5212 104.7306) (width 0.1016) (layer F.Cu) (net 10))
|
||||
(segment (start 159.0676 104.7306) (end 158.662621 104.7306) (width 0.1016) (layer F.Cu) (net 10))
|
||||
(segment (start 159.4938 104.3044) (end 159.0676 104.7306) (width 0.1016) (layer F.Cu) (net 10))
|
||||
(segment (start 154.1806 104.3306) (end 154.15 104.3) (width 0.1016) (layer F.Cu) (net 11) (tstamp 5504938B))
|
||||
(segment (start 155.3212 104.3306) (end 154.1806 104.3306) (width 0.1016) (layer F.Cu) (net 11))
|
||||
(segment (start 154.2194 104.7306) (end 154.15 104.8) (width 0.1016) (layer F.Cu) (net 12) (tstamp 55049388))
|
||||
(segment (start 155.3212 104.7306) (end 154.2194 104.7306) (width 0.1016) (layer F.Cu) (net 12))
|
||||
(segment (start 155.3212 105.1306) (end 154.7194 105.1306) (width 0.1016) (layer F.Cu) (net 52))
|
||||
(segment (start 154.7194 105.1306) (end 154.6 105.25) (width 0.1016) (layer F.Cu) (net 52))
|
||||
(segment (start 154.6 105.25) (end 153.65 105.25) (width 0.1016) (layer F.Cu) (net 52))
|
||||
(segment (start 153.65 105.25) (end 153.65 104.8) (width 0.1016) (layer F.Cu) (net 52) (tstamp 5504901A))
|
||||
(segment (start 153.6 105.3) (end 153.65 105.25) (width 0.1016) (layer F.Cu) (net 52) (tstamp 55049386))
|
||||
(segment (start 153 105.9) (end 153.6 105.3) (width 0.1016) (layer F.Cu) (net 52) (tstamp 55049018))
|
||||
(segment (start 153 106) (end 153 105.9) (width 0.1016) (layer F.Cu) (net 52))
|
||||
(segment (start 149.4 104.8) (end 149.35 104.85) (width 0.1016) (layer F.Cu) (net 53) (tstamp 55049543) (status 30))
|
||||
(segment (start 153.1 104.85) (end 153.15 104.8) (width 0.254) (layer F.Cu) (net 53) (tstamp 550495A4))
|
||||
(segment (start 149.35 104.85) (end 153.1 104.85) (width 0.254) (layer F.Cu) (net 53) (status 10))
|
||||
|
||||
(zone (net 2) (net_name GND) (layer F.Cu) (tstamp 550C7F83) (hatch edge 0.508)
|
||||
(connect_pads (clearance 0.2032))
|
||||
(min_thickness 0.1524)
|
||||
(fill yes (arc_segments 16) (thermal_gap 0.2032) (thermal_bridge_width 0.15494) (smoothing chamfer) (radius 0.5))
|
||||
(polygon
|
||||
(pts
|
||||
(xy 164 111.85) (xy 151.5 111.85) (xy 151.5 97.15) (xy 164 97.15)
|
||||
)
|
||||
)
|
||||
(filled_polygon
|
||||
(pts
|
||||
(xy 163.9238 111.318437) (xy 163.468437 111.7738) (xy 152.031563 111.7738) (xy 151.5762 111.318437) (xy 151.5762 107.6794)
|
||||
(xy 151.744424 107.6794) (xy 151.855576 107.6794) (xy 151.958267 107.636864) (xy 152.036864 107.558267) (xy 152.0794 107.455576)
|
||||
(xy 152.0794 107.02112) (xy 152.00955 106.95127) (xy 151.5762 106.95127) (xy 151.5762 106.94873) (xy 152.00955 106.94873)
|
||||
(xy 152.0794 106.87888) (xy 152.0794 106.444424) (xy 152.036864 106.341733) (xy 151.958267 106.263136) (xy 151.855576 106.2206)
|
||||
(xy 151.744424 106.2206) (xy 151.5762 106.2206) (xy 151.5762 105.3794) (xy 151.855576 105.3794) (xy 151.958267 105.336864)
|
||||
(xy 152.036864 105.258267) (xy 152.037637 105.2564) (xy 153.1 105.2564) (xy 153.195652 105.237373) (xy 153.012426 105.4206)
|
||||
(xy 152.694424 105.4206) (xy 152.591733 105.463136) (xy 152.513136 105.541733) (xy 152.4706 105.644424) (xy 152.4706 105.755576)
|
||||
(xy 152.4706 106.355576) (xy 152.513136 106.458267) (xy 152.591733 106.536864) (xy 152.623446 106.55) (xy 152.591733 106.563136)
|
||||
(xy 152.513136 106.641733) (xy 152.4706 106.744424) (xy 152.4706 107.02888) (xy 152.54045 107.09873) (xy 152.99873 107.09873)
|
||||
(xy 152.99873 107.07873) (xy 153.00127 107.07873) (xy 153.00127 107.09873) (xy 153.45955 107.09873) (xy 153.5294 107.02888)
|
||||
(xy 153.5294 106.744424) (xy 153.486864 106.641733) (xy 153.408267 106.563136) (xy 153.376553 106.55) (xy 153.408267 106.536864)
|
||||
(xy 153.486864 106.458267) (xy 153.5294 106.355576) (xy 153.5294 106.244424) (xy 153.5294 105.837574) (xy 153.6206 105.746374)
|
||||
(xy 153.6206 105.755576) (xy 153.6206 106.355576) (xy 153.663136 106.458267) (xy 153.741733 106.536864) (xy 153.773446 106.55)
|
||||
(xy 153.741733 106.563136) (xy 153.663136 106.641733) (xy 153.6206 106.744424) (xy 153.6206 107.02888) (xy 153.69045 107.09873)
|
||||
(xy 154.14873 107.09873) (xy 154.14873 107.07873) (xy 154.15127 107.07873) (xy 154.15127 107.09873) (xy 154.60955 107.09873)
|
||||
(xy 154.6794 107.02888) (xy 154.6794 106.744424) (xy 154.636864 106.641733) (xy 154.558267 106.563136) (xy 154.526553 106.55)
|
||||
(xy 154.558267 106.536864) (xy 154.636864 106.458267) (xy 154.6794 106.355576) (xy 154.6794 106.244424) (xy 154.6794 106.236217)
|
||||
(xy 154.683487 106.233487) (xy 154.7968 106.120174) (xy 154.7968 106.634168) (xy 154.872829 106.710197) (xy 154.866513 106.716513)
|
||||
(xy 154.794935 106.823638) (xy 154.7698 106.95) (xy 154.7698 107.213226) (xy 154.6794 107.303626) (xy 154.6794 107.17112)
|
||||
(xy 154.60955 107.10127) (xy 154.15127 107.10127) (xy 154.15127 107.12127) (xy 154.14873 107.12127) (xy 154.14873 107.10127)
|
||||
(xy 153.69045 107.10127) (xy 153.6206 107.17112) (xy 153.6206 107.455576) (xy 153.663136 107.558267) (xy 153.741733 107.636864)
|
||||
(xy 153.844424 107.6794) (xy 153.880026 107.6794) (xy 153.5294 108.030025) (xy 153.5294 107.455576) (xy 153.5294 107.17112)
|
||||
(xy 153.45955 107.10127) (xy 153.00127 107.10127) (xy 153.00127 107.60955) (xy 153.07112 107.6794) (xy 153.194424 107.6794)
|
||||
(xy 153.305576 107.6794) (xy 153.408267 107.636864) (xy 153.486864 107.558267) (xy 153.5294 107.455576) (xy 153.5294 108.030025)
|
||||
(xy 153.527705 108.03172) (xy 153.421607 107.960828) (xy 152.99873 107.876712) (xy 152.99873 107.60955) (xy 152.99873 107.10127)
|
||||
(xy 152.54045 107.10127) (xy 152.4706 107.17112) (xy 152.4706 107.455576) (xy 152.513136 107.558267) (xy 152.591733 107.636864)
|
||||
(xy 152.694424 107.6794) (xy 152.805576 107.6794) (xy 152.92888 107.6794) (xy 152.99873 107.60955) (xy 152.99873 107.876712)
|
||||
(xy 152.9842 107.873822) (xy 152.546793 107.960828) (xy 152.175977 108.208599) (xy 151.928206 108.579415) (xy 151.8412 109.016822)
|
||||
(xy 151.8412 109.372378) (xy 151.928206 109.809785) (xy 152.175977 110.180601) (xy 152.546793 110.428372) (xy 152.9842 110.515378)
|
||||
(xy 153.421607 110.428372) (xy 153.792423 110.180601) (xy 154.040194 109.809785) (xy 154.1272 109.372378) (xy 154.1272 109.016822)
|
||||
(xy 154.040194 108.579415) (xy 153.989631 108.503742) (xy 154.263173 108.2302) (xy 154.55 108.2302) (xy 154.676362 108.205065)
|
||||
(xy 154.783487 108.133487) (xy 155.333483 107.583489) (xy 155.333486 107.583487) (xy 155.333487 107.583487) (xy 155.391 107.497411)
|
||||
(xy 155.391 107.900317) (xy 155.086793 107.960828) (xy 154.715977 108.208599) (xy 154.468206 108.579415) (xy 154.3812 109.016822)
|
||||
(xy 154.3812 109.372378) (xy 154.468206 109.809785) (xy 154.715977 110.180601) (xy 155.086793 110.428372) (xy 155.5242 110.515378)
|
||||
(xy 155.961607 110.428372) (xy 156.332423 110.180601) (xy 156.580194 109.809785) (xy 156.6672 109.372378) (xy 156.6672 109.016822)
|
||||
(xy 156.580194 108.579415) (xy 156.332423 108.208599) (xy 156.0514 108.020825) (xy 156.0514 107.2532) (xy 158.434168 107.2532)
|
||||
(xy 159.0532 106.634168) (xy 159.0532 105.0608) (xy 159.0676 105.0608) (xy 159.193962 105.035665) (xy 159.301087 104.964087)
|
||||
(xy 159.463138 104.802035) (xy 159.539824 104.8338) (xy 159.650976 104.8338) (xy 160.550976 104.8338) (xy 160.653667 104.791264)
|
||||
(xy 160.732264 104.712667) (xy 160.7748 104.609976) (xy 160.7748 104.498824) (xy 160.7748 103.998824) (xy 160.732264 103.896133)
|
||||
(xy 160.653667 103.817536) (xy 160.550976 103.775) (xy 160.439824 103.775) (xy 160.1334 103.775) (xy 160.1334 102.464376)
|
||||
(xy 160.1334 102.353224) (xy 160.1334 102.22992) (xy 160.1334 102.08768) (xy 160.1334 101.964376) (xy 160.1334 101.853224)
|
||||
(xy 160.1334 101.016576) (xy 160.1334 100.905424) (xy 160.1334 100.78212) (xy 160.1334 100.63988) (xy 160.1334 100.516576)
|
||||
(xy 160.1334 100.405424) (xy 160.090864 100.302733) (xy 160.012267 100.224136) (xy 159.909576 100.1816) (xy 159.62512 100.1816)
|
||||
(xy 159.55527 100.25145) (xy 159.55527 100.70973) (xy 160.06355 100.70973) (xy 160.1334 100.63988) (xy 160.1334 100.78212)
|
||||
(xy 160.06355 100.71227) (xy 159.55527 100.71227) (xy 159.55527 101.17055) (xy 159.62512 101.2404) (xy 159.909576 101.2404)
|
||||
(xy 160.012267 101.197864) (xy 160.090864 101.119267) (xy 160.1334 101.016576) (xy 160.1334 101.853224) (xy 160.090864 101.750533)
|
||||
(xy 160.012267 101.671936) (xy 159.909576 101.6294) (xy 159.62512 101.6294) (xy 159.55527 101.69925) (xy 159.55527 102.15753)
|
||||
(xy 160.06355 102.15753) (xy 160.1334 102.08768) (xy 160.1334 102.22992) (xy 160.06355 102.16007) (xy 159.55527 102.16007)
|
||||
(xy 159.55527 102.61835) (xy 159.62512 102.6882) (xy 159.909576 102.6882) (xy 160.012267 102.645664) (xy 160.090864 102.567067)
|
||||
(xy 160.1334 102.464376) (xy 160.1334 103.775) (xy 159.539824 103.775) (xy 159.437133 103.817536) (xy 159.358536 103.896133)
|
||||
(xy 159.316 103.998824) (xy 159.316 104.033704) (xy 159.260313 104.070913) (xy 159.0532 104.278026) (xy 159.0532 104.006995)
|
||||
(xy 159.233487 103.826708) (xy 159.305065 103.719583) (xy 159.3302 103.593221) (xy 159.330201 103.593221) (xy 159.3302 103.593215)
|
||||
(xy 159.3302 102.6882) (xy 159.48288 102.6882) (xy 159.55273 102.61835) (xy 159.55273 102.16007) (xy 159.53273 102.16007)
|
||||
(xy 159.53273 102.15753) (xy 159.55273 102.15753) (xy 159.55273 101.69925) (xy 159.48288 101.6294) (xy 159.3302 101.6294)
|
||||
(xy 159.3302 101.2404) (xy 159.48288 101.2404) (xy 159.55273 101.17055) (xy 159.55273 100.71227) (xy 159.53273 100.71227)
|
||||
(xy 159.53273 100.70973) (xy 159.55273 100.70973) (xy 159.55273 100.25145) (xy 159.48288 100.1816) (xy 159.3302 100.1816)
|
||||
(xy 159.3302 100.086774) (xy 159.486774 99.9302) (xy 161.063226 99.9302) (xy 163.0198 101.886774) (xy 163.0198 110.213226)
|
||||
(xy 163.0045 110.228526) (xy 163.0045 106.430776) (xy 163.0045 106.319624) (xy 163.0045 105.430624) (xy 163.0045 104.525776)
|
||||
(xy 163.0045 104.09682) (xy 163.0045 103.95458) (xy 163.0045 103.525624) (xy 162.961964 103.422933) (xy 162.883367 103.344336)
|
||||
(xy 162.780676 103.3018) (xy 162.669524 103.3018) (xy 162.09772 103.3018) (xy 162.02787 103.37165) (xy 162.02787 104.02443)
|
||||
(xy 162.93465 104.02443) (xy 163.0045 103.95458) (xy 163.0045 104.09682) (xy 162.93465 104.02697) (xy 162.02787 104.02697)
|
||||
(xy 162.02787 104.67975) (xy 162.09772 104.7496) (xy 162.669524 104.7496) (xy 162.780676 104.7496) (xy 162.883367 104.707064)
|
||||
(xy 162.961964 104.628467) (xy 163.0045 104.525776) (xy 163.0045 105.430624) (xy 162.961964 105.327933) (xy 162.883367 105.249336)
|
||||
(xy 162.780676 105.2068) (xy 162.669524 105.2068) (xy 162.02533 105.2068) (xy 162.02533 104.67975) (xy 162.02533 104.02697)
|
||||
(xy 162.02533 104.02443) (xy 162.02533 103.37165) (xy 161.95548 103.3018) (xy 161.383676 103.3018) (xy 161.272524 103.3018)
|
||||
(xy 161.169833 103.344336) (xy 161.091236 103.422933) (xy 161.0487 103.525624) (xy 161.0487 103.95458) (xy 161.11855 104.02443)
|
||||
(xy 162.02533 104.02443) (xy 162.02533 104.02697) (xy 161.11855 104.02697) (xy 161.0487 104.09682) (xy 161.0487 104.525776)
|
||||
(xy 161.091236 104.628467) (xy 161.169833 104.707064) (xy 161.272524 104.7496) (xy 161.383676 104.7496) (xy 161.95548 104.7496)
|
||||
(xy 162.02533 104.67975) (xy 162.02533 105.2068) (xy 161.272524 105.2068) (xy 161.169833 105.249336) (xy 161.091236 105.327933)
|
||||
(xy 161.0487 105.430624) (xy 161.0487 105.541776) (xy 161.0487 105.6005) (xy 160.7748 105.6005) (xy 160.7748 105.498824)
|
||||
(xy 160.732264 105.396133) (xy 160.653667 105.317536) (xy 160.550976 105.275) (xy 160.439824 105.275) (xy 159.539824 105.275)
|
||||
(xy 159.437133 105.317536) (xy 159.358536 105.396133) (xy 159.316 105.498824) (xy 159.316 105.609976) (xy 159.316 106.109976)
|
||||
(xy 159.358536 106.212667) (xy 159.437133 106.291264) (xy 159.539824 106.3338) (xy 159.650976 106.3338) (xy 160.550976 106.3338)
|
||||
(xy 160.653667 106.291264) (xy 160.684031 106.2609) (xy 161.0487 106.2609) (xy 161.0487 106.430776) (xy 161.091236 106.533467)
|
||||
(xy 161.169833 106.612064) (xy 161.272524 106.6546) (xy 161.383676 106.6546) (xy 162.780676 106.6546) (xy 162.883367 106.612064)
|
||||
(xy 162.961964 106.533467) (xy 163.0045 106.430776) (xy 163.0045 110.228526) (xy 162.413226 110.8198) (xy 161.7472 110.8198)
|
||||
(xy 161.7472 110.266176) (xy 161.7472 110.155024) (xy 161.7472 109.26572) (xy 161.7472 109.12348) (xy 161.7472 108.234176)
|
||||
(xy 161.7472 108.123024) (xy 161.704664 108.020333) (xy 161.626067 107.941736) (xy 161.523376 107.8992) (xy 160.67532 107.8992)
|
||||
(xy 160.60547 107.96905) (xy 160.60547 109.19333) (xy 161.67735 109.19333) (xy 161.7472 109.12348) (xy 161.7472 109.26572)
|
||||
(xy 161.67735 109.19587) (xy 160.60547 109.19587) (xy 160.60547 110.42015) (xy 160.67532 110.49) (xy 161.523376 110.49)
|
||||
(xy 161.626067 110.447464) (xy 161.704664 110.368867) (xy 161.7472 110.266176) (xy 161.7472 110.8198) (xy 160.60293 110.8198)
|
||||
(xy 160.60293 110.42015) (xy 160.60293 109.19587) (xy 160.60293 109.19333) (xy 160.60293 107.96905) (xy 160.53308 107.8992)
|
||||
(xy 159.685024 107.8992) (xy 159.582333 107.941736) (xy 159.503736 108.020333) (xy 159.4612 108.123024) (xy 159.4612 108.234176)
|
||||
(xy 159.4612 109.12348) (xy 159.53105 109.19333) (xy 160.60293 109.19333) (xy 160.60293 109.19587) (xy 159.53105 109.19587)
|
||||
(xy 159.4612 109.26572) (xy 159.4612 110.155024) (xy 159.4612 110.266176) (xy 159.503736 110.368867) (xy 159.582333 110.447464)
|
||||
(xy 159.685024 110.49) (xy 160.53308 110.49) (xy 160.60293 110.42015) (xy 160.60293 110.8198) (xy 158.3944 110.8198)
|
||||
(xy 158.3944 110.449696) (xy 158.501607 110.428372) (xy 158.872423 110.180601) (xy 159.120194 109.809785) (xy 159.2072 109.372378)
|
||||
(xy 159.2072 109.016822) (xy 159.120194 108.579415) (xy 158.872423 108.208599) (xy 158.501607 107.960828) (xy 158.0642 107.873822)
|
||||
(xy 157.626793 107.960828) (xy 157.255977 108.208599) (xy 157.008206 108.579415) (xy 156.9212 109.016822) (xy 156.9212 109.372378)
|
||||
(xy 157.008206 109.809785) (xy 157.255977 110.180601) (xy 157.626793 110.428372) (xy 157.734 110.449696) (xy 157.734 110.9642)
|
||||
(xy 157.759135 111.090562) (xy 157.830713 111.197687) (xy 158.016513 111.383487) (xy 158.123638 111.455065) (xy 158.25 111.480201)
|
||||
(xy 158.25 111.4802) (xy 158.250005 111.4802) (xy 162.55 111.4802) (xy 162.676362 111.455065) (xy 162.783487 111.383487)
|
||||
(xy 163.583487 110.583487) (xy 163.655065 110.476362) (xy 163.6802 110.35) (xy 163.680201 110.35) (xy 163.6802 110.349994)
|
||||
(xy 163.6802 101.75) (xy 163.655065 101.623638) (xy 163.583487 101.516513) (xy 161.433487 99.366513) (xy 161.326362 99.294935)
|
||||
(xy 161.2 99.2698) (xy 159.35 99.2698) (xy 159.223638 99.294935) (xy 159.116513 99.366513) (xy 159.025 99.458026)
|
||||
(xy 158.933487 99.366513) (xy 158.826362 99.294935) (xy 158.7 99.2698) (xy 154.100005 99.2698) (xy 154.1 99.269799)
|
||||
(xy 153.973638 99.294935) (xy 153.866513 99.366513) (xy 152.766513 100.466513) (xy 152.694935 100.573638) (xy 152.6698 100.7)
|
||||
(xy 152.6698 102.3) (xy 152.694935 102.426362) (xy 152.766513 102.533487) (xy 152.96651 102.733483) (xy 152.966513 102.733487)
|
||||
(xy 152.966514 102.733487) (xy 153.073638 102.805065) (xy 153.2 102.830201) (xy 153.2 102.8302) (xy 153.200005 102.8302)
|
||||
(xy 153.2206 102.8302) (xy 153.2206 102.97888) (xy 153.29045 103.04873) (xy 153.74873 103.04873) (xy 153.74873 103.02873)
|
||||
(xy 153.75127 103.02873) (xy 153.75127 103.04873) (xy 154.20955 103.04873) (xy 154.2794 102.97888) (xy 154.2794 102.955773)
|
||||
(xy 154.868129 103.544502) (xy 154.7968 103.615832) (xy 154.7968 104.0004) (xy 154.387007 104.0004) (xy 154.365194 103.978548)
|
||||
(xy 154.2794 103.942923) (xy 154.2794 103.405576) (xy 154.2794 103.12112) (xy 154.20955 103.05127) (xy 153.75127 103.05127)
|
||||
(xy 153.75127 103.55955) (xy 153.82112 103.6294) (xy 153.944424 103.6294) (xy 154.055576 103.6294) (xy 154.158267 103.586864)
|
||||
(xy 154.236864 103.508267) (xy 154.2794 103.405576) (xy 154.2794 103.942923) (xy 154.225798 103.920666) (xy 154.074864 103.920534)
|
||||
(xy 153.935368 103.978173) (xy 153.887912 104.025544) (xy 153.74873 103.886362) (xy 153.74873 103.55955) (xy 153.74873 103.05127)
|
||||
(xy 153.29045 103.05127) (xy 153.2206 103.12112) (xy 153.2206 103.405576) (xy 153.263136 103.508267) (xy 153.341733 103.586864)
|
||||
(xy 153.444424 103.6294) (xy 153.555576 103.6294) (xy 153.67888 103.6294) (xy 153.74873 103.55955) (xy 153.74873 103.886362)
|
||||
(xy 153.675 103.812632) (xy 153.412173 104.075458) (xy 153.376346 104.076713) (xy 153.376346 103.986301) (xy 153.239069 103.92356)
|
||||
(xy 153.088231 103.91813) (xy 152.946798 103.970835) (xy 152.923654 103.986301) (xy 152.926759 104.074963) (xy 153.15 104.298204)
|
||||
(xy 153.373241 104.074963) (xy 153.376346 103.986301) (xy 153.376346 104.076713) (xy 153.375037 104.076759) (xy 153.151796 104.3)
|
||||
(xy 153.165938 104.314142) (xy 153.164142 104.315938) (xy 153.15 104.301796) (xy 153.135857 104.315938) (xy 153.134061 104.314142)
|
||||
(xy 153.148204 104.3) (xy 152.924963 104.076759) (xy 152.836301 104.073654) (xy 152.77356 104.210931) (xy 152.76813 104.361769)
|
||||
(xy 152.798624 104.4436) (xy 152.037637 104.4436) (xy 152.036864 104.441733) (xy 151.958267 104.363136) (xy 151.855576 104.3206)
|
||||
(xy 151.744424 104.3206) (xy 151.5762 104.3206) (xy 151.5762 97.681563) (xy 152.031563 97.2262) (xy 163.468437 97.2262)
|
||||
(xy 163.9238 97.681563) (xy 163.9238 111.318437)
|
||||
)
|
||||
)
|
||||
)
|
||||
(zone (net 0) (net_name "") (layer F.Cu) (tstamp 550C7E3B) (hatch edge 0.508)
|
||||
(connect_pads (clearance 0.2032))
|
||||
(min_thickness 0.1524)
|
||||
(keepout (tracks allowed) (vias allowed) (copperpour not_allowed))
|
||||
(fill yes (arc_segments 16) (thermal_gap 0.2032) (thermal_bridge_width 0.15494) (smoothing chamfer) (radius 0.5))
|
||||
(polygon
|
||||
(pts
|
||||
(xy 153.9 104.55) (xy 153.45 104.55) (xy 153.45 104.1) (xy 153.9 104.1)
|
||||
)
|
||||
)
|
||||
)
|
||||
(zone (net 0) (net_name "") (layer F.Cu) (tstamp 550C7E43) (hatch edge 0.508)
|
||||
(connect_pads (clearance 0.2032))
|
||||
(min_thickness 0.1524)
|
||||
(keepout (tracks allowed) (vias allowed) (copperpour not_allowed))
|
||||
(fill yes (arc_segments 16) (thermal_gap 0.2032) (thermal_bridge_width 0.15494) (smoothing chamfer) (radius 0.5))
|
||||
(polygon
|
||||
(pts
|
||||
(xy 158.85 107.05) (xy 155 107.05) (xy 155 103.2) (xy 158.85 103.2)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
26
samples/Modelica/NestedPackages.mo
Normal file
26
samples/Modelica/NestedPackages.mo
Normal file
@@ -0,0 +1,26 @@
|
||||
within ModelicaByExample.PackageExamples;
|
||||
package NestedPackages
|
||||
"An example of how packages can be used to organize things"
|
||||
package Types
|
||||
type Rabbits = Real(quantity="Rabbits", min=0);
|
||||
type Wolves = Real(quantity="Wolves", min=0);
|
||||
type RabbitReproduction = Real(quantity="Rabbit Reproduction", min=0);
|
||||
type RabbitFatalities = Real(quantity="Rabbit Fatalities", min=0);
|
||||
type WolfReproduction = Real(quantity="Wolf Reproduction", min=0);
|
||||
type WolfFatalities = Real(quantity="Wolf Fatalities", min=0);
|
||||
end Types;
|
||||
|
||||
model LotkaVolterra "Lotka-Volterra with types"
|
||||
parameter Types.RabbitReproduction alpha=0.1;
|
||||
parameter Types.RabbitFatalities beta=0.02;
|
||||
parameter Types.WolfReproduction gamma=0.4;
|
||||
parameter Types.WolfFatalities delta=0.02;
|
||||
parameter Types.Rabbits x0=10;
|
||||
parameter Types.Wolves y0=10;
|
||||
Types.Rabbits x(start=x0);
|
||||
Types.Wolves y(start=y0);
|
||||
equation
|
||||
der(x) = x*(alpha-beta*y);
|
||||
der(y) = -y*(gamma-delta*x);
|
||||
end LotkaVolterra;
|
||||
end NestedPackages;
|
||||
24
samples/Modelica/NewtonCooling.mo
Normal file
24
samples/Modelica/NewtonCooling.mo
Normal file
@@ -0,0 +1,24 @@
|
||||
within ModelicaByExample.PackageExamples;
|
||||
model NewtonCooling
|
||||
"Cooling example importing physical types from the Modelica Standard Library"
|
||||
import Modelica.SIunits.Temperature;
|
||||
import Modelica.SIunits.Mass;
|
||||
import Modelica.SIunits.Area;
|
||||
import ConvectionCoefficient = Modelica.SIunits.CoefficientOfHeatTransfer;
|
||||
import SpecificHeat = Modelica.SIunits.SpecificHeatCapacity;
|
||||
|
||||
// Parameters
|
||||
parameter Temperature T_inf=300.0 "Ambient temperature";
|
||||
parameter Temperature T0=280.0 "Initial temperature";
|
||||
parameter ConvectionCoefficient h=0.7 "Convective cooling coefficient";
|
||||
parameter Area A=1.0 "Surface area";
|
||||
parameter Mass m=0.1 "Mass of thermal capacitance";
|
||||
parameter SpecificHeat c_p=1.2 "Specific heat";
|
||||
|
||||
// Variables
|
||||
Temperature T "Temperature";
|
||||
initial equation
|
||||
T = T0 "Specify initial value for T";
|
||||
equation
|
||||
m*c_p*der(T) = h*A*(T_inf-T) "Newton's law of cooling";
|
||||
end NewtonCooling;
|
||||
47
samples/Modelica/Pendulum.mo
Normal file
47
samples/Modelica/Pendulum.mo
Normal file
@@ -0,0 +1,47 @@
|
||||
within ModelicaByExample.Subsystems.Pendula;
|
||||
model Pendulum "A single individual pendulum"
|
||||
import Modelica.Mechanics.MultiBody.Parts;
|
||||
import Modelica.Mechanics.MultiBody.Joints;
|
||||
|
||||
parameter Modelica.SIunits.Position x;
|
||||
parameter Modelica.SIunits.Mass m "Mass of mass point";
|
||||
parameter Modelica.SIunits.Angle phi "Initial angle";
|
||||
parameter Modelica.SIunits.Length L "String length";
|
||||
parameter Modelica.SIunits.Diameter d=0.01;
|
||||
|
||||
Parts.Fixed ground(r={0,0,x}, animation=false)
|
||||
annotation (Placement(
|
||||
transformation(
|
||||
extent={{-10,-10},{10,10}},
|
||||
rotation=270, origin={0,60})));
|
||||
Parts.PointMass ball(m=m, sphereDiameter=5*d)
|
||||
annotation (Placement(transformation(extent={{-10,-90},{10,-70}})));
|
||||
Parts.BodyCylinder string(density=0, r={0,L,0}, diameter=d)
|
||||
annotation (Placement(transformation(
|
||||
extent={{-10,-10},{10,10}},
|
||||
rotation=90,
|
||||
origin={0,-30})));
|
||||
Joints.Revolute revolute(phi(fixed=true, start=phi),
|
||||
cylinderDiameter=d/2, animation=false)
|
||||
annotation (Placement(
|
||||
transformation(
|
||||
extent={{-10,-10},{10,10}},
|
||||
rotation=90,
|
||||
origin={0,20})));
|
||||
equation
|
||||
connect(string.frame_a, ball.frame_a) annotation (Line(
|
||||
points={{0,-40},{0,-40},{0,-80}},
|
||||
color={95,95,95},
|
||||
thickness=0.5,
|
||||
smooth=Smooth.None));
|
||||
connect(revolute.frame_b, ground.frame_b) annotation (Line(
|
||||
points={{0,30},{0,40},{0,40},{0,50}},
|
||||
color={95,95,95},
|
||||
thickness=0.5,
|
||||
smooth=Smooth.None));
|
||||
connect(revolute.frame_a, string.frame_b) annotation (Line(
|
||||
points={{0,10},{0,10},{0,-20},{0,-20}},
|
||||
color={95,95,95},
|
||||
thickness=0.5,
|
||||
smooth=Smooth.None));
|
||||
end Pendulum;
|
||||
16
samples/Modelica/RLC.mo
Normal file
16
samples/Modelica/RLC.mo
Normal file
@@ -0,0 +1,16 @@
|
||||
within ModelicaByExample.PackageExamples;
|
||||
model RLC "An RLC circuit referencing types from the Modelica Standard Library"
|
||||
parameter Modelica.SIunits.Voltage Vb=24 "Battery voltage";
|
||||
parameter Modelica.SIunits.Inductance L = 1;
|
||||
parameter Modelica.SIunits.Resistance R = 100;
|
||||
parameter Modelica.SIunits.Capacitance C = 1e-3;
|
||||
Modelica.SIunits.Voltage V;
|
||||
Modelica.SIunits.Current i_L;
|
||||
Modelica.SIunits.Current i_R;
|
||||
Modelica.SIunits.Current i_C;
|
||||
equation
|
||||
i_R = V/R;
|
||||
i_C = C*der(V);
|
||||
i_L=i_R+i_C;
|
||||
L*der(i_L) = (Vb-V);
|
||||
end RLC;
|
||||
29
samples/Modelica/SecondOrderSystem.mo
Normal file
29
samples/Modelica/SecondOrderSystem.mo
Normal file
@@ -0,0 +1,29 @@
|
||||
within ModelicaByExample.PackageExamples;
|
||||
model SecondOrderSystem
|
||||
"A second order rotational system importing types from Modelica Standard Library"
|
||||
import Modelica.SIunits.*;
|
||||
parameter Angle phi1_init = 0;
|
||||
parameter Angle phi2_init = 1;
|
||||
parameter AngularVelocity omega1_init = 0;
|
||||
parameter AngularVelocity omega2_init = 0;
|
||||
parameter Inertia J1=0.4;
|
||||
parameter Inertia J2=1.0;
|
||||
parameter RotationalSpringConstant k1=11;
|
||||
parameter RotationalSpringConstant k2=5;
|
||||
parameter RotationalDampingConstant d1=0.2;
|
||||
parameter RotationalDampingConstant d2=1.0;
|
||||
Angle phi1;
|
||||
Angle phi2;
|
||||
AngularVelocity omega1;
|
||||
AngularVelocity omega2;
|
||||
initial equation
|
||||
phi1 = phi1_init;
|
||||
phi2 = phi2_init;
|
||||
omega1 = omega1_init;
|
||||
omega2 = omega2_init;
|
||||
equation
|
||||
omega1 = der(phi1);
|
||||
omega2 = der(phi2);
|
||||
J1*der(omega1) = k1*(phi2-phi1)+d1*der(phi2-phi1);
|
||||
J2*der(omega2) = k1*(phi1-phi2)+d1*der(phi1-phi2)-k2*phi2-d2*der(phi2);
|
||||
end SecondOrderSystem;
|
||||
19
samples/Modelica/System.mo
Normal file
19
samples/Modelica/System.mo
Normal file
@@ -0,0 +1,19 @@
|
||||
within ModelicaByExample.Subsystems.Pendula;
|
||||
model System "A system of pendula"
|
||||
import Modelica.Constants.g_n;
|
||||
import Modelica.Constants.pi;
|
||||
|
||||
parameter Integer n=15 "Number of pendula";
|
||||
parameter Modelica.SIunits.Position x[n] = linspace(0,(n-1)*0.05,n);
|
||||
parameter Modelica.SIunits.Time T = 54;
|
||||
parameter Modelica.SIunits.Time X = 30;
|
||||
parameter Modelica.SIunits.Length lengths[n] = { g_n*(T/(2*pi*(X+(n-i))))^2 for i in 1:n};
|
||||
parameter Modelica.SIunits.Angle phi0 = 0.5;
|
||||
|
||||
Pendulum pendulum[n](x=x, each m=1, each phi=phi0, L=lengths)
|
||||
annotation (Placement(transformation(extent={{-10,-10},{10,10}})));
|
||||
inner Modelica.Mechanics.MultiBody.World world
|
||||
annotation (Placement(transformation(extent={{-80,-60},{-60,-40}})));
|
||||
annotation (experiment(StopTime=54,
|
||||
Interval=9e-3, Tolerance=1e-008));
|
||||
end System;
|
||||
4
samples/Modelica/package.mo
Normal file
4
samples/Modelica/package.mo
Normal file
@@ -0,0 +1,4 @@
|
||||
within ;
|
||||
package ModelicaByExample
|
||||
annotation (uses(Modelica(version="3.2.1")));
|
||||
end ModelicaByExample;
|
||||
3
samples/Modelica/package2.mo
Normal file
3
samples/Modelica/package2.mo
Normal file
@@ -0,0 +1,3 @@
|
||||
within ModelicaByExample;
|
||||
package PackageExamples "Examples of using packages"
|
||||
end PackageExamples;
|
||||
3
samples/Modelica/package3.mo
Normal file
3
samples/Modelica/package3.mo
Normal file
@@ -0,0 +1,3 @@
|
||||
within ModelicaByExample.Subsystems;
|
||||
package GearSubsystemModel "Build a subsystem model representing a gear with backlash"
|
||||
end GearSubsystemModel;
|
||||
3
samples/Modelica/package4.mo
Normal file
3
samples/Modelica/package4.mo
Normal file
@@ -0,0 +1,3 @@
|
||||
within ModelicaByExample.Subsystems;
|
||||
package Pendula "Example of using arrays of subsystems to build complete systems"
|
||||
end Pendula;
|
||||
109
samples/NCL/PrnOscPat_driver.ncl
Normal file
109
samples/NCL/PrnOscPat_driver.ncl
Normal file
@@ -0,0 +1,109 @@
|
||||
undef("PrnOscPat_driver")
|
||||
function PrnOscPat_driver(eof[*][*][*]:numeric, eof_ts[*][*]:numeric, kPOP[1]:integer)
|
||||
; =================================================================
|
||||
; compute Principal Oscillation Patterns (POPs)
|
||||
; =================================================================
|
||||
local dim_ts, dim_eof, neof, ntim, nlat, mlon, dnam_ts, dnam_eof, neof, j \
|
||||
, cov0, cov1, cov0_inverse, A, z, Z, pr, pi, zr, zi, mean, stdev \
|
||||
, evlr, eigi, eigr
|
||||
begin
|
||||
|
||||
dim_ts = dimsizes(eof_ts) ; (neof,ntim)
|
||||
dim_eof = dimsizes(eof) ; (neof,nlat,mlon)
|
||||
|
||||
ntim = dim_ts(1)
|
||||
neof = dim_eof(0)
|
||||
nlat = dim_eof(1)
|
||||
mlon = dim_eof(2)
|
||||
|
||||
dnam_ts = getvardims(eof_ts) ; dimension names
|
||||
dnam_eof= getvardims(eof) ; used at end for meta data
|
||||
|
||||
; =================================================================
|
||||
; lag-0 and lag-1 matrices
|
||||
; =================================================================
|
||||
|
||||
if (get_ncl_version().eq."6.1.2") then ; bug in 6.1.2
|
||||
cov0 = covcorm(eof_ts,(/1,0/)) ; lag-0 covariance matrix
|
||||
else
|
||||
cov0 = covcorm(eof_ts,(/0,1/)) ; lag-0 covariance matrix (n x n)
|
||||
end if
|
||||
; either
|
||||
cov1 = covcorm_xy(eof_ts, eof_ts, (/0,1,0/)) ; lag-1
|
||||
;cov1 = covcorm_xy(eof_ts(:,0:ntim-2) \ ; alternative, brute force
|
||||
; ,eof_ts(:,1:ntim-1), (/0,0,0/))
|
||||
;printVarSummary(cov1)
|
||||
|
||||
; =================================================================
|
||||
; matrix A contains information for evolution of the POP system.
|
||||
; POPs are eigenvectors of A.
|
||||
; =================================================================
|
||||
|
||||
cov0_inverse = inverse_matrix(cov0)
|
||||
A = cov1#inverse_matrix(cov0) ; [*][*] => neof x neof
|
||||
|
||||
; =================================================================
|
||||
; NCL 6.1.1 of dgeevx: evlr(2,2,N,N) ; (left(0)/right(1), real(0)/imag(1),:,:)
|
||||
; Eigenvalues are returned as attributes: eigi = evlr@eigi ; eigr = evlr@eigr
|
||||
; =================================================================
|
||||
|
||||
evlr = dgeevx_lapack(A, "B", "V", "V", "B", False)
|
||||
|
||||
; =================================================================
|
||||
; POP time series from eigenvalues and right eigenvectors
|
||||
; =================================================================
|
||||
;PR = (/ evlr(1,0,:,:) /) ; right ev (1), real part (0)
|
||||
;PI = (/ evlr(1,1,:,:) /) ; right ev (1), imag part (1)
|
||||
; kPOP is what we want; use righteigenvector
|
||||
pr = (/ evlr(1,0,kPOP-1,:) /) ; right ev (1), real part (0), row 'kPOP-1'
|
||||
pi = (/ evlr(1,1,kPOP-1,:) /) ; right ev (1), imag part (1), row 'kPOP-1'
|
||||
|
||||
z = inverse_matrix( (/ (/sum(pr*pr), sum(pr*pi)/) \
|
||||
, (/sum(pr*pi), sum(pi*pi)/) /))#(/pr,pi/)#eof_ts
|
||||
|
||||
; complex conjugate
|
||||
z = (/z(0,:), -z(1,:)/) ; real & imag series
|
||||
z = dim_rmvmean_n(z,1)
|
||||
mean = dim_avg_n(z,1) ; calculate mean
|
||||
stdev= dim_stddev_n(z,1) ; calculate stdev
|
||||
z = dim_standardize_n(z,1,1) ; standardize time series
|
||||
|
||||
z!0 = "nPOP" ; add meta data
|
||||
z!1 = dnam_ts(1)
|
||||
z&nPOP = (/0,1/)
|
||||
z&$dnam_ts(1)$ = eof_ts&$dnam_ts(1)$
|
||||
z@stdev = stdev
|
||||
z@mean = mean
|
||||
z@long_name = "POP timeseries"
|
||||
;printVarSummary(z)
|
||||
|
||||
; =================================================================
|
||||
; POP spatial patterns
|
||||
; =================================================================
|
||||
|
||||
zr = pr(0)*eof(0,:,:) ; construct POP spatial domain
|
||||
zi = pi(0)*eof(0,:,:)
|
||||
do j=1,neof-1
|
||||
zr = zr + pr(j)*eof(j,:,:)
|
||||
zi = zi + pi(j)*eof(j,:,:)
|
||||
end do
|
||||
|
||||
Z = (/zr*stdev(0), -zi*stdev(1)/) ; scale patterns by time series stdev
|
||||
|
||||
Z!0 = "nPOP" ; add meta data
|
||||
Z!1 = dnam_eof(1)
|
||||
Z!2 = dnam_eof(2)
|
||||
|
||||
Z&nPOP = (/0,1/)
|
||||
Z&$dnam_eof(1)$ = eof&$dnam_eof(1)$
|
||||
Z&$dnam_eof(2)$ = eof&$dnam_eof(2)$
|
||||
Z@long_name = "POP pattern"
|
||||
;printVarSummary(Z)
|
||||
|
||||
; =================================================================
|
||||
; return POP time series and POP spatial patterns as a
|
||||
; variable of type 'list' which contains 2 variables
|
||||
; =================================================================
|
||||
|
||||
return( [/z, Z/] ) ; this is type "list"
|
||||
end
|
||||
115
samples/NCL/WRF_static_2.ncl
Normal file
115
samples/NCL/WRF_static_2.ncl
Normal file
@@ -0,0 +1,115 @@
|
||||
;*************************************************
|
||||
; WRF static: panel different variables
|
||||
;************************************************
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/wrf/WRF_contributed.ncl"
|
||||
begin
|
||||
;************************************************
|
||||
; open file and read in data
|
||||
;************************************************
|
||||
f = addfile("static.wrfsi.nc", "r")
|
||||
;************************************************
|
||||
; Read variables
|
||||
;************************************************
|
||||
use = f->use(0,0,:,:) ; land use dominant category
|
||||
stl = f->stl(0,0,:,:) ; top layer (0-30cm) dom cat soiltype
|
||||
sbl = f->sbl(0,0,:,:) ; bottom layer (30-90cm) dom cat soiltype
|
||||
lat2d = f->lat(0,0,:,:)
|
||||
lon2d = f->lon(0,0,:,:)
|
||||
lsMask= f->lnd(0,0,:,:) ; land (1) water (0) mas
|
||||
|
||||
;************************************************
|
||||
; Use mask function to set all ocean areas to _FillValue
|
||||
;************************************************
|
||||
use = mask(use,lsMask,1)
|
||||
stl = mask(stl,lsMask,1)
|
||||
sbl = mask(sbl,lsMask,1)
|
||||
|
||||
;************************************************
|
||||
; Associate 2D coordinates with variables for plotting
|
||||
;************************************************
|
||||
use@lat2d = lat2d
|
||||
use@lon2d = lon2d
|
||||
stl@lat2d = lat2d
|
||||
stl@lon2d = lon2d
|
||||
sbl@lat2d = lat2d
|
||||
sbl@lon2d = lon2d
|
||||
|
||||
;************************************************
|
||||
; The file should be examined via: ncdump -v grid_type static.wrsi
|
||||
; This will print the print type. then enter below.
|
||||
;************************************************
|
||||
projection = "mercator"
|
||||
|
||||
;************************************************
|
||||
; create plots
|
||||
;************************************************
|
||||
wks = gsn_open_wks("ps" ,"WRF_static") ; ps,pdf,x11,ncgm,eps
|
||||
gsn_define_colormap(wks ,"BlAqGrYeOrReVi200"); choose colormap
|
||||
|
||||
res = True ; plot mods desired
|
||||
res@gsnSpreadColors = True ; use full range of colormap
|
||||
res@cnFillOn = True ; color plot desired
|
||||
res@cnLinesOn = False ; turn off contour lines
|
||||
res@cnLineLabelsOn = False ; turn off contour labels
|
||||
res@cnLevelSpacingF = 1 ; manually specify interval
|
||||
res@cnFillMode = "RasterFill" ; activate raster mode
|
||||
res@lbLabelAutoStride = True ; let NCL figure lb stride
|
||||
|
||||
;************************************************
|
||||
; Turn on lat / lon labeling
|
||||
;************************************************
|
||||
;;res@pmTickMarkDisplayMode = "Always" ; turn on tickmarks
|
||||
|
||||
dimll = dimsizes(lat2d)
|
||||
nlat = dimll(0)
|
||||
mlon = dimll(1)
|
||||
|
||||
res@mpProjection = projection
|
||||
res@mpLimitMode = "Corners"
|
||||
res@mpLeftCornerLatF = lat2d(0,0)
|
||||
res@mpLeftCornerLonF = lon2d(0,0)
|
||||
res@mpRightCornerLatF = lat2d(nlat-1,mlon-1)
|
||||
res@mpRightCornerLonF = lon2d(nlat-1,mlon-1)
|
||||
|
||||
res@mpCenterLonF = f->LoV ; set center logitude
|
||||
|
||||
if (projection.eq."LambertConformal") then
|
||||
res@mpLambertParallel1F = f->Latin1
|
||||
res@mpLambertParallel2F = f->Latin2
|
||||
res@mpLambertMeridianF = f->LoV
|
||||
end if
|
||||
|
||||
res@mpFillOn = False ; turn off map fill
|
||||
res@mpOutlineDrawOrder = "PostDraw" ; draw continental outline last
|
||||
res@mpOutlineBoundarySets = "GeophysicalAndUSStates" ; state boundaries
|
||||
|
||||
;;res@tfDoNDCOverlay = True ; True only for 'native' grid
|
||||
res@gsnAddCyclic = False ; data are not cyclic
|
||||
|
||||
;************************************************
|
||||
; allocate array for 3 plots
|
||||
;************************************************
|
||||
plts = new (3,"graphic")
|
||||
|
||||
;************************************************
|
||||
; Tell NCL not to draw or advance frame for individual plots
|
||||
;************************************************
|
||||
res@gsnDraw = False ; (a) do not draw
|
||||
res@gsnFrame = False ; (b) do not advance 'frame'
|
||||
|
||||
plts(0) = gsn_csm_contour_map(wks,use,res)
|
||||
plts(1) = gsn_csm_contour_map(wks,stl,res)
|
||||
plts(2) = gsn_csm_contour_map(wks,sbl,res)
|
||||
;************************************************
|
||||
; create panel: panel plots have their own set of resources
|
||||
;************************************************
|
||||
resP = True ; modify the panel plot
|
||||
resP@txString = "Land Use and Soil Type"
|
||||
resP@gsnMaximize = True ; maximize panel area
|
||||
resP@gsnPanelRowSpec = True ; specify 1 top, 2 lower level
|
||||
gsn_panel(wks,plts,(/1,2/),resP) ; now draw as one plot
|
||||
|
||||
end
|
||||
|
||||
160
samples/NCL/WRF_track_1.ncl
Normal file
160
samples/NCL/WRF_track_1.ncl
Normal file
@@ -0,0 +1,160 @@
|
||||
;********************************************************
|
||||
; Plot storm stracks from wrfout files.
|
||||
;********************************************************
|
||||
;
|
||||
; JUN-18-2005
|
||||
; So-Young Ha (MMM/NCAR)
|
||||
; SEP-01-2006
|
||||
; Slightly modified by Mary Haley to add some extra comments.
|
||||
; ===========================================
|
||||
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/wrf/WRF_contributed.ncl"
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/wrf/WRFUserARW.ncl"
|
||||
|
||||
|
||||
begin
|
||||
|
||||
; DATES
|
||||
date = (/1512,1600,1612,1700,1712,1800,1812,1900/)
|
||||
ndate = dimsizes(date)
|
||||
|
||||
sdate = sprinti("%4.0i",date)
|
||||
|
||||
; Experiment name (for legend)
|
||||
EXP = (/"EXP_I"/) ; (/"EXP_I","EXP_II","EXP_III"/)
|
||||
nexp = dimsizes(EXP)
|
||||
|
||||
; To get lat/lon info.
|
||||
|
||||
a = addfile("wrfout_d01_2003-07-15_00:00:00.nc","r")
|
||||
|
||||
lat2d = a->XLAT(0,:,:)
|
||||
lon2d = a->XLONG(0,:,:)
|
||||
dimll = dimsizes(lat2d)
|
||||
nlat = dimll(0)
|
||||
mlon = dimll(1)
|
||||
|
||||
; Sea Level Pressure
|
||||
slp = wrf_user_getvar(a,"slp",0)
|
||||
dims = dimsizes(slp)
|
||||
|
||||
; Array for track
|
||||
time = new(ndate,string)
|
||||
imin = new(ndate,integer)
|
||||
jmin = new(ndate,integer)
|
||||
smin = new(ndate,integer)
|
||||
|
||||
; =======
|
||||
; ndate
|
||||
; =======
|
||||
fs = systemfunc("ls wrfout*00")
|
||||
nfs= dimsizes(fs)
|
||||
if(nfs .ne. ndate) then
|
||||
print("Check input data:"+nfs+" .ne. "+ndate)
|
||||
end if
|
||||
|
||||
do ifs=0,nfs-1
|
||||
f = addfile(fs(ifs)+".nc","r")
|
||||
time(ifs) = wrf_user_list_times(f)
|
||||
; print(time(ifs))
|
||||
slp2d = wrf_user_getvar(f,"slp",0)
|
||||
|
||||
; We need to convert 2-D array to 1-D array to find the minima.
|
||||
slp1d = ndtooned(slp2d)
|
||||
smin(ifs) = minind(slp1d)
|
||||
|
||||
; Convert the index for 1-D array back to the indeces for 2-D array.
|
||||
minij = ind_resolve(ind(slp1d.eq.min(slp2d)),dims)
|
||||
imin(ifs) = minij(0,0)
|
||||
jmin(ifs) = minij(0,1)
|
||||
|
||||
; print(time(ifs)+" : "+min(slp2d)+" ("+imin(ifs)+","+jmin(ifs)+")")
|
||||
end do
|
||||
;
|
||||
|
||||
; Graphics section
|
||||
|
||||
wks=gsn_open_wks("ps","track") ; Open PS file.
|
||||
gsn_define_colormap(wks,"BlGrYeOrReVi200") ; Change color map.
|
||||
|
||||
res = True
|
||||
res@gsnDraw = False ; Turn off draw.
|
||||
res@gsnFrame = False ; Turn off frame advance.
|
||||
res@gsnMaximize = True ; Maximize plot in frame.
|
||||
|
||||
res@tiMainString = "Hurricane Isabel" ; Main title
|
||||
|
||||
WRF_map_c(a,res,0) ; Set up map resources
|
||||
; (plot options)
|
||||
plot = gsn_csm_map(wks,res) ; Create a map.
|
||||
|
||||
; Set up resources for polymarkers.
|
||||
gsres = True
|
||||
gsres@gsMarkerIndex = 16 ; filled dot
|
||||
;gsres@gsMarkerSizeF = 0.005 ; default - 0.007
|
||||
cols = (/5,160,40/)
|
||||
|
||||
; Set up resources for polylines.
|
||||
res_lines = True
|
||||
res_lines@gsLineThicknessF = 3. ; 3x as thick
|
||||
|
||||
dot = new(ndate,graphic) ; Make sure each gsn_add_polyxxx call
|
||||
line = new(ndate,graphic) ; is assigned to a unique variable.
|
||||
|
||||
; Loop through each date and add polylines to the plot.
|
||||
do i = 0,ndate-2
|
||||
res_lines@gsLineColor = cols(0)
|
||||
xx=(/lon2d(imin(i),jmin(i)),lon2d(imin(i+1),jmin(i+1))/)
|
||||
yy=(/lat2d(imin(i),jmin(i)),lat2d(imin(i+1),jmin(i+1))/)
|
||||
line(i) = gsn_add_polyline(wks,plot,xx,yy,res_lines)
|
||||
end do
|
||||
|
||||
lon1d = ndtooned(lon2d)
|
||||
lat1d = ndtooned(lat2d)
|
||||
|
||||
; Loop through each date and add polymarkers to the plot.
|
||||
do i = 0,ndate-1
|
||||
print("dot:"+lon1d(smin(i))+","+lat1d(smin(i)))
|
||||
gsres@gsMarkerColor = cols(0)
|
||||
dot(i)=gsn_add_polymarker(wks,plot,lon1d(smin(i)),lat1d(smin(i)),gsres)
|
||||
end do
|
||||
|
||||
; Date (Legend)
|
||||
txres = True
|
||||
txres@txFontHeightF = 0.015
|
||||
txres@txFontColor = cols(0)
|
||||
|
||||
txid1 = new(ndate,graphic)
|
||||
; Loop through each date and draw a text string on the plot.
|
||||
do i = 0, ndate-1
|
||||
txres@txJust = "CenterRight"
|
||||
ix = smin(i) - 4
|
||||
print("Eye:"+ix)
|
||||
if(i.eq.1) then
|
||||
txres@txJust = "CenterLeft"
|
||||
ix = ix + 8
|
||||
end if
|
||||
txid1(i) = gsn_add_text(wks,plot,sdate(i),lon1d(ix),lat1d(ix),txres)
|
||||
end do
|
||||
|
||||
; Add marker and text for legend. (Or you can just use "pmLegend" instead.)
|
||||
txres@txJust = "CenterLeft"
|
||||
|
||||
txid2 = new(nexp,graphic)
|
||||
pmid2 = new(nexp,graphic)
|
||||
do i = 0,nexp-1
|
||||
gsres@gsMarkerColor = cols(i)
|
||||
txres@txFontColor = cols(i)
|
||||
ii = ((/129,119,109/)) ; ilat
|
||||
jj = ((/110,110,110/)) ; jlon
|
||||
ji = ii*mlon+jj ; col x row
|
||||
pmid2(i) = gsn_add_polymarker(wks,plot,lon1d(ji(i)),lat1d(ji(i)),gsres)
|
||||
txid2(i) = gsn_add_text(wks,plot,EXP(i),lon1d(ji(i)+5),lat1d(ji(i)),txres)
|
||||
end do
|
||||
|
||||
draw(plot)
|
||||
frame(wks)
|
||||
end
|
||||
129
samples/NCL/cru_8.ncl
Normal file
129
samples/NCL/cru_8.ncl
Normal file
@@ -0,0 +1,129 @@
|
||||
;*****************************************************
|
||||
; cru_8.ncl
|
||||
;
|
||||
; Concepts illustrated:
|
||||
; - Plotting CRU (Climate Research Unit)/ BADC data
|
||||
; - Selecting a sub-period
|
||||
; - calculating a climatology
|
||||
; - Drawing raster contours; very basic graphics
|
||||
;
|
||||
;*****************************************************
|
||||
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl" ; not needed 6.20 onward
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
|
||||
|
||||
; create references (pointers) to the files
|
||||
|
||||
diri = "./"
|
||||
fcld = addfile(diri+"cru_ts3.21.1901.2012.cld.dat.nc", "r")
|
||||
fdtr = addfile(diri+"cru_ts3.21.1901.2012.dtr.dat.nc", "r")
|
||||
ffrs = addfile(diri+"cru_ts3.21.1901.2012.frs.dat.nc", "r")
|
||||
fpet = addfile(diri+"cru_ts3.21.1901.2012.pet.dat.nc", "r")
|
||||
fpre = addfile(diri+"cru_ts3.21.1901.2012.pre.dat.nc", "r")
|
||||
ftmn = addfile(diri+"cru_ts3.21.1901.2012.tmn.dat.nc", "r")
|
||||
ftmp = addfile(diri+"cru_ts3.21.1901.2012.tmp.dat.nc", "r")
|
||||
ftmx = addfile(diri+"cru_ts3.21.1901.2012.tmx.dat.nc", "r")
|
||||
fvap = addfile(diri+"cru_ts3.21.1901.2012.vap.dat.nc", "r")
|
||||
fwet = addfile(diri+"cru_ts3.21.1901.2012.wet.dat.nc", "r")
|
||||
|
||||
; specify start & last dates (arbitrary)
|
||||
|
||||
ymStrt = 199101
|
||||
ymLast = 200012
|
||||
|
||||
; get index values of start/lat dates
|
||||
|
||||
time = fcld->time
|
||||
yyyymm = cd_calendar(time, -1)
|
||||
|
||||
ntStrt = ind(yyyymm.eq.ymStrt) ; index values
|
||||
ntLast = ind(yyyymm.eq.ymLast)
|
||||
|
||||
; read time segment
|
||||
|
||||
cld = fcld->cld(ntStrt:ntLast,:,:)
|
||||
dtr = fdtr->dtr(ntStrt:ntLast,:,:)
|
||||
frs = ffrs->frs(ntStrt:ntLast,:,:)
|
||||
pet = fpet->pet(ntStrt:ntLast,:,:)
|
||||
pre = fpre->pre(ntStrt:ntLast,:,:)
|
||||
tmn = ftmn->tmn(ntStrt:ntLast,:,:)
|
||||
tmp = ftmp->tmp(ntStrt:ntLast,:,:)
|
||||
tmx = ftmx->tmx(ntStrt:ntLast,:,:)
|
||||
vap = fvap->vap(ntStrt:ntLast,:,:)
|
||||
wet = fwet->wet(ntStrt:ntLast,:,:)
|
||||
|
||||
printVarSummary(cld) ; [time | 120] x [lat | 360] x [lon | 720]
|
||||
|
||||
; calculate monthly climatologies
|
||||
|
||||
cldclm = clmMonTLL(cld)
|
||||
dtrclm = clmMonTLL(dtr)
|
||||
frsclm = clmMonTLL(frs)
|
||||
petclm = clmMonTLL(pet)
|
||||
preclm = clmMonTLL(pre)
|
||||
tmnclm = clmMonTLL(tmn)
|
||||
tmpclm = clmMonTLL(tmp)
|
||||
tmxclm = clmMonTLL(tmx)
|
||||
vapclm = clmMonTLL(vap)
|
||||
wetclm = clmMonTLL(wet)
|
||||
|
||||
|
||||
printVarSummary(cldclm) ; [month | 12] x [lat | 360] x [lon | 720]
|
||||
|
||||
;************************************
|
||||
; create plots ... very simple
|
||||
;************************************
|
||||
|
||||
nt = 6
|
||||
month = "July"
|
||||
yrStrt = ymStrt/100
|
||||
yrLast = ymLast/100
|
||||
title = month+": "+yrStrt+"-"+yrLast
|
||||
|
||||
wks = gsn_open_wks("ps","cru") ; open a ps file
|
||||
gsn_define_colormap(wks,"ncl_default") ; choose colormap; not needed 6.20 onward
|
||||
plot = new(2,graphic) ; create graphic array
|
||||
|
||||
res = True
|
||||
res@cnFillOn = True ; turn on color fill; not needed 6.20 onward
|
||||
res@cnFillMode = "RasterFill" ; Raster Mode
|
||||
res@cnLinesOn = False ; Turn off contour lines
|
||||
|
||||
res@gsnDraw = False ; do not draw picture
|
||||
res@gsnFrame = False ; do not advance frame
|
||||
res@lbOrientation = "Vertical" ; vertical label bar
|
||||
|
||||
resp = True
|
||||
resp@gsnMaximize = True ; make ps, eps, pdf large
|
||||
|
||||
resp@txString = title+": CLD, FRS"
|
||||
plot(0)=gsn_csm_contour_map_ce(wks,cldclm(nt,:,:),res)
|
||||
plot(1)=gsn_csm_contour_map_ce(wks,frsclm(nt,:,:),res)
|
||||
gsn_panel(wks,plot,(/2,1/),resp)
|
||||
|
||||
resp@txString = title+": PET, VAP"
|
||||
plot(0)=gsn_csm_contour_map_ce(wks,petclm(nt,:,:),res)
|
||||
plot(1)=gsn_csm_contour_map_ce(wks,vapclm(nt,:,:),res)
|
||||
gsn_panel(wks,plot,(/2,1/),resp)
|
||||
|
||||
resp@txString = title+": TMN, TMX"
|
||||
plot(0)=gsn_csm_contour_map_ce(wks,tmnclm(nt,:,:),res)
|
||||
plot(1)=gsn_csm_contour_map_ce(wks,tmxclm(nt,:,:),res)
|
||||
gsn_panel(wks,plot,(/2,1/),resp)
|
||||
|
||||
resp@txString = title+": TMP, DTR"
|
||||
plot(0)=gsn_csm_contour_map_ce(wks,tmpclm(nt,:,:),res)
|
||||
plot(1)=gsn_csm_contour_map_ce(wks,dtrclm(nt,:,:),res)
|
||||
gsn_panel(wks,plot,(/2,1/),resp)
|
||||
|
||||
resp@txString = title+": WET, PRE"
|
||||
plot(0)=gsn_csm_contour_map_ce(wks,wetclm(nt,:,:),res)
|
||||
|
||||
;colors = (/ ... /)
|
||||
;res@cnFillPalette = colors ; optional: distinct colors for categories
|
||||
res@cnLevelSelectionMode = "ExplicitLevels" ; use unequal spacing
|
||||
res@cnLevels = (/2.0,10,25,37.5,50,75,100,125,150,175,200,300,400,500,750/)
|
||||
|
||||
plot(1)=gsn_csm_contour_map_ce(wks,preclm(nt,:,:),res)
|
||||
gsn_panel(wks,plot,(/2,1/),resp)
|
||||
20
samples/NCL/gsn_csm_xy2_time_series_inputs.ncl
Normal file
20
samples/NCL/gsn_csm_xy2_time_series_inputs.ncl
Normal file
@@ -0,0 +1,20 @@
|
||||
;******************** Inputs Regarding Input and Output Data *************************************
|
||||
|
||||
;netCDFFilePath = "NULL-MYD04_L2.051-MIL2ASAE.0022-AERONET_AOD_L2.2-20112106165049.nc"
|
||||
;outputFilePath = "plot-output"
|
||||
|
||||
;******************* Inputs Regarding Data Structure ***********************************************
|
||||
|
||||
;lPlotVariablesList = "mean_AERONET_AOD_L2_2_AOD0558intrp_Ames,mean_MIL2ASAE_0022_AOD0866b_Ames"
|
||||
;rPlotVariablesList = "medn_MYD04_L2_051_AOD0550dpbl_l_Ames"
|
||||
|
||||
;xDimName = "time"
|
||||
;xDimSize = 365
|
||||
|
||||
;******************* Inputs Regarding the View Annotations ****************************************
|
||||
|
||||
;title = "MAPSS Time Series"
|
||||
;yLAxisLabel = "Mean AOD"
|
||||
;yRAxisLabel = "Median AOD"
|
||||
|
||||
;*******************END INPUTS ********************************************************************
|
||||
128
samples/NCL/hdf4sds_7.ncl
Normal file
128
samples/NCL/hdf4sds_7.ncl
Normal file
@@ -0,0 +1,128 @@
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
|
||||
;**************************************************************
|
||||
; User Input
|
||||
;***************************************************************
|
||||
; INPUT
|
||||
diri = "./" ; input directory
|
||||
fili = "wv_LV3_MET08_20050102_12345678_L00013712E00013712.hdf"
|
||||
|
||||
pltDir = "./" ; directory for plot output
|
||||
sfx = get_file_suffix(fili,1)
|
||||
;pltName = sfx@fBase ; output graphic name
|
||||
pltName = "hdf4sds"
|
||||
pltType = "ps"
|
||||
|
||||
;***************************************************************
|
||||
; End User Input
|
||||
;***************************************************************
|
||||
|
||||
;***************************************************************
|
||||
; Open SEVIRI L3 'wv' HDF file
|
||||
;***************************************************************
|
||||
; Note the rather unusual data format: flag *prepended* to data value
|
||||
;***************************************************************
|
||||
; integer twc_lv3 ( fakeDim0, fakeDim1 )
|
||||
; long_name : total water vapour column + flag
|
||||
; units : fmmmm
|
||||
; format : I4
|
||||
; valid_range : ( 10000, 38000 )
|
||||
; _FillValue : -99
|
||||
; legend_01 : f = flag
|
||||
; legend_02 : f = 1 averaged level 2 values
|
||||
; legend_03 : f = 2 interpolated from averaged level 2 values
|
||||
; legend_04 : f = 3 gaps filled with NVAP climatology
|
||||
; legend_05 : mmmm = water vapour column in mm * 100. as integer
|
||||
; legend_06 : Example: 11025 means: flag = 1, 10.25 mm water vapour column
|
||||
; min_lat : -74.75
|
||||
; max_lat : 61.75
|
||||
; min_lon : -75.25
|
||||
; max_lon : 75.25
|
||||
; dlat : 0.5
|
||||
; dlon : 0.5
|
||||
;---------------------------------------------------------------
|
||||
|
||||
f = addfile (diri+fili, "r")
|
||||
ifx = f->twc_lv3 ; fmmmm (integer)
|
||||
printVarSummary(ifx)
|
||||
|
||||
flag = ifx/10000 ; extract flag
|
||||
ix = ifx - flag*10000 ; extract mmmm
|
||||
x = ix*0.01 ; scale
|
||||
|
||||
; create meta data for 'x'
|
||||
|
||||
dimx = dimsizes(x)
|
||||
nlat = dimx(0) ; grid size x(nlat,mlon)
|
||||
mlon = dimx(1)
|
||||
|
||||
lat = fspan(ifx@min_lat, ifx@max_lat, nlat)
|
||||
lat@units = "degrees_north"
|
||||
lon = fspan(ifx@min_lon, ifx@max_lon, mlon)
|
||||
lon@units = "degrees_east"
|
||||
|
||||
x!0 = "lat"
|
||||
x!1 = "lon"
|
||||
x&lat = lat
|
||||
x&lon = lon
|
||||
x@long_name = "SEVIRI: Total Water Vapor"
|
||||
x@units = "mm"
|
||||
|
||||
delete( [/ifx, ix/] ) ; no longer needed
|
||||
|
||||
;***************************************************************
|
||||
; Create plot
|
||||
;***************************************************************
|
||||
wks = gsn_open_wks(pltType, pltDir+pltName)
|
||||
|
||||
plot = new (2, "graphic")
|
||||
|
||||
res = True ; plot mods desired
|
||||
res@gsnAddCyclic = False ; data noty global
|
||||
res@gsnDraw = False
|
||||
res@gsnFrame = False
|
||||
|
||||
res@cnFillOn = True ; turn on color fill
|
||||
res@cnLinesOn = False ; turn of contour lines
|
||||
res@cnFillMode = "RasterFill" ; Raster Mode
|
||||
res@cnLinesOn = False ; Turn off contour lines
|
||||
res@cnLineLabelsOn = False ; Turn off contour lines
|
||||
res@cnMissingValFillColor= "background" ; "foreground"
|
||||
|
||||
res@mpCenterLonF = 0.5*(min(x&lon) + max(x&lon))
|
||||
res@mpMinLatF = min(x&lat)
|
||||
res@mpMaxLatF = max(x&lat)
|
||||
res@mpMinLonF = min(x&lon)
|
||||
res@mpMaxLonF = max(x&lon)
|
||||
|
||||
;res@lbOrientation = "Vertical"
|
||||
|
||||
plot(0) = gsn_csm_contour_map_ce(wks,x, res)
|
||||
|
||||
; plot flag
|
||||
|
||||
copy_VarCoords(x, flag)
|
||||
flag@long_name = "Flag"
|
||||
flag@units = "1=avg(L2), 2=int(L2), 3=NVAP"
|
||||
print(flag&lat+" "+flag(:,{30}))
|
||||
|
||||
res@cnLevelSelectionMode = "ManualLevels" ; set manual contour levels
|
||||
res@cnMinLevelValF = 2 ; set min contour level
|
||||
res@cnMaxLevelValF = 3 ; one less than max
|
||||
res@cnLevelSpacingF = 1 ; set contour spacing
|
||||
|
||||
res@lbLabelStrings = ispan(1,3,1) ; 1, 2, 3
|
||||
res@lbLabelPosition = "Center" ; label position
|
||||
res@lbLabelAlignment = "BoxCenters"
|
||||
|
||||
res@gsnLeftString = ""
|
||||
res@gsnRightString = ""
|
||||
res@gsnCenterString = "flag: 1=avg(L2), 2=int(L2), 3=NVAP"
|
||||
|
||||
plot(1) = gsn_csm_contour_map_ce(wks,flag, res)
|
||||
|
||||
resP = True ; modify the panel plot
|
||||
resP@txString = fili
|
||||
resP@gsnMaximize = True
|
||||
gsn_panel(wks,plot,(/1,2/),resP) ; now draw as one plot
|
||||
125
samples/NCL/mask_12.ncl
Normal file
125
samples/NCL/mask_12.ncl
Normal file
@@ -0,0 +1,125 @@
|
||||
;----------------------------------------------------------------------
|
||||
; mask_12.ncl
|
||||
;
|
||||
; Concepts illustrated:
|
||||
; - Using a worldwide shapefile to create a land/ocean mask
|
||||
; - Masking a data array based on a geographical area
|
||||
; - Attaching shapefile polylines to a map plot
|
||||
; - Attaching lat/lon points to a map using gsn_coordinates
|
||||
;----------------------------------------------------------------------
|
||||
; Downloaded GSHHS shapefiles from:
|
||||
;
|
||||
; http://www.ngdc.noaa.gov/mgg/shorelines/data/gshhg/latest/
|
||||
;
|
||||
; Used the "coarsest" one: "GSHHS_shp/c/GSHHS_c_L1.shp".
|
||||
;----------------------------------------------------------------------
|
||||
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
|
||||
load "./shapefile_mask_data.ncl"
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
; Main code
|
||||
;----------------------------------------------------------------------
|
||||
begin
|
||||
WRITE_MASK = True
|
||||
DEBUG = False
|
||||
|
||||
;---Read data to plot and mask
|
||||
dir = "$NCARG_ROOT/lib/ncarg/data/cdf/"
|
||||
cdf_prefix = "uv300"
|
||||
cdf_file = dir + cdf_prefix + ".nc"
|
||||
fin = addfile(cdf_file,"r")
|
||||
u = fin->U(1,:,:)
|
||||
;
|
||||
; Create a mask array the same size as "u", using
|
||||
; lat/lon data read off a shapefile.
|
||||
;
|
||||
shpfile = "GSHHS_shp/c/GSHHS_c_L1.shp"
|
||||
opt = True
|
||||
opt@return_mask = True
|
||||
|
||||
land_mask = shapefile_mask_data(u,shpfile,opt)
|
||||
|
||||
;---Mask "u" against land and ocean.
|
||||
u_land_mask = where(land_mask.eq.1,u,u@_FillValue)
|
||||
u_ocean_mask = where(land_mask.eq.0,u,u@_FillValue)
|
||||
copy_VarMeta(u,u_land_mask)
|
||||
copy_VarMeta(u,u_ocean_mask)
|
||||
|
||||
;---Start the graphics
|
||||
wks = gsn_open_wks("ps","mask")
|
||||
|
||||
res = True
|
||||
|
||||
res@gsnMaximize = True ; maximize plot in frame
|
||||
res@gsnDraw = False ; don't draw plot yet
|
||||
res@gsnFrame = False ; don't advance frame yet
|
||||
|
||||
res@cnFillOn = True
|
||||
res@cnLineLabelsOn = False
|
||||
res@cnLinesOn = False
|
||||
|
||||
;---Make sure both plots have same contour levels
|
||||
mnmxint = nice_mnmxintvl(min(u),max(u),25,False)
|
||||
res@cnLevelSelectionMode = "ManualLevels"
|
||||
res@cnMinLevelValF = mnmxint(0)
|
||||
res@cnMaxLevelValF = mnmxint(1)
|
||||
res@cnLevelSpacingF = mnmxint(2)
|
||||
|
||||
res@lbLabelBarOn = False
|
||||
res@gsnAddCyclic = False
|
||||
|
||||
res@mpFillOn = False
|
||||
res@mpOutlineOn = False
|
||||
|
||||
res@gsnRightString = ""
|
||||
res@gsnLeftString = ""
|
||||
|
||||
;---Create plot of original data and attach shapefile outlines
|
||||
res@tiMainString = "Original data with shapefile outlines"
|
||||
map_data = gsn_csm_contour_map(wks,u,res)
|
||||
dum1 = gsn_add_shapefile_polylines(wks,map_data,shpfile,False)
|
||||
|
||||
;---Create plots of masked data
|
||||
res@tiMainString = "Original data masked against land"
|
||||
map_land_mask = gsn_csm_contour_map(wks,u_land_mask,res)
|
||||
res@tiMainString = "Original data masked against ocean"
|
||||
map_ocean_mask = gsn_csm_contour_map(wks,u_ocean_mask,res)
|
||||
|
||||
if(DEBUG) then
|
||||
mkres = True
|
||||
; mkres@gsMarkerSizeF = 0.007
|
||||
mkres@gsnCoordsAttach = True
|
||||
gsn_coordinates(wks,map_data,u,mkres)
|
||||
mkres@gsnCoordsNonMissingColor = "yellow"
|
||||
mkres@gsnCoordsMissingColor = "black"
|
||||
gsn_coordinates(wks,map_land_mask,u_land_mask,mkres)
|
||||
gsn_coordinates(wks,map_ocean_mask,u_ocean_mask,mkres)
|
||||
end if
|
||||
|
||||
;---Add shapefile outlines
|
||||
dum2 = gsn_add_shapefile_polylines(wks,map_land_mask,shpfile,False)
|
||||
dum3 = gsn_add_shapefile_polylines(wks,map_ocean_mask,shpfile,False)
|
||||
|
||||
;---Draw all three plots on one page
|
||||
pres = True
|
||||
pres@gsnMaximize = True
|
||||
pres@gsnPanelLabelBar = True
|
||||
gsn_panel(wks,(/map_data,map_land_mask,map_ocean_mask/),(/3,1/),pres)
|
||||
|
||||
if(WRITE_MASK) then
|
||||
delete(fin) ; Close file before we open again.
|
||||
;
|
||||
; Make copy of file so we don't overwrite original.
|
||||
; This is not necessary, but it's safer.
|
||||
;
|
||||
new_cdf_file = cdf_prefix + "_with_mask.nc"
|
||||
system("/bin/cp " + cdf_file + " " + new_cdf_file)
|
||||
finout = addfile(new_cdf_file,"w")
|
||||
filevardef(finout, "land_mask", typeof(land_mask), (/ "lat", "lon" /) )
|
||||
finout->land_mask = (/land_mask/)
|
||||
end if
|
||||
end
|
||||
|
||||
115
samples/NCL/mcsst_1.ncl
Normal file
115
samples/NCL/mcsst_1.ncl
Normal file
@@ -0,0 +1,115 @@
|
||||
;*****************************************************
|
||||
; mcsst_1.ncl
|
||||
;
|
||||
; Concepts illustrated:
|
||||
; - Plotting NAVO MCSST data
|
||||
; - Using fbindirread to read in fortran binary data
|
||||
; - Converting "byte" data to "float"
|
||||
; - Adding meta data (attributes and coordinates) to a variable
|
||||
; - Adding gray to an existing color map
|
||||
; - Spanning all but the last two colors in a color map for contour fill
|
||||
; - Drawing raster contours
|
||||
;
|
||||
;*****************************************************
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
|
||||
;***************************************
|
||||
; type of data available on file
|
||||
;***************************************
|
||||
; ipar=0 Weekly Binned Sea Surface Temperature
|
||||
; ipar=1 Number of Points in Bin
|
||||
; ipar=2 Weekly Binned Sea Surface Temperature Anomaly
|
||||
; ipar=3 Interpolated Sea Surface Temperature
|
||||
; ipar=4 Interpolated Sea Surface Temperature Anomaly
|
||||
;***************************************
|
||||
begin
|
||||
ipar = 3
|
||||
fname = "2001311d18N16.dat"
|
||||
tmp = fbindirread(fname,ipar,(/1024,2048/),"byte")
|
||||
;***************************************
|
||||
; convert to float and then change to true SST
|
||||
;***************************************
|
||||
xslope = 0.15
|
||||
if(ipar.eq.4.or.ipar.eq.2)then ; anom has different intercept
|
||||
yint = -20.0
|
||||
end if
|
||||
if(ipar.eq.3.or.ipar.eq.0)then
|
||||
yint = -3.0
|
||||
end if
|
||||
sst = new((/1024,2048/),"float") ; create float var
|
||||
sst = tmp*xslope+yint ; convert to float
|
||||
delete(tmp) ; delete unecessary array
|
||||
;***************************************
|
||||
; assign missing values. The original missing value was zero, but since it was
|
||||
; not assigned in NCL, it was not recognized. The new missing values are
|
||||
; listed below. These will be changed later.
|
||||
;***************************************
|
||||
if(ipar.eq.4)then
|
||||
sst@_FillValue = -20
|
||||
end if
|
||||
if(ipar.eq.3.or.ipar.eq.0)then
|
||||
sst@_FillValue = -3
|
||||
end if
|
||||
;***************************************
|
||||
; create coordinate variables
|
||||
;***************************************
|
||||
nlat = 1024
|
||||
dy = 180./nlat
|
||||
lat = (90. -(ispan(0,1023,1)*dy))-dy/2
|
||||
lat!0 = "lat"
|
||||
lat&lat = lat
|
||||
lat@units = "degrees_north"
|
||||
|
||||
nlon = 2048
|
||||
dx = 360./nlon
|
||||
lon = (ispan(0,2047,1)*dx)+dx/2-180. ; note -180. added by sjm to align
|
||||
lon!0 = "lon"
|
||||
lon&lon = lon
|
||||
lon@units = "degrees_east"
|
||||
;***************************************
|
||||
; fill out the netCDF data model
|
||||
;***************************************
|
||||
sst!0 = "lat" ; name dimensions
|
||||
sst!1 = "lon" ; ditto
|
||||
sst = sst(::-1,:) ; reverse lat orientation
|
||||
sst@long_name = "NAVO MCSST" ; assign long_name
|
||||
sst@units = "deg C" ; assign units
|
||||
sst&lat = lat ; assign lat cv
|
||||
sst&lon = lon ; assign lon cv
|
||||
sst@_FillValue = -999. ; assign missing value
|
||||
;***************************************
|
||||
; get year and day from filename
|
||||
;***************************************
|
||||
res = True ; plot mods desired
|
||||
title = stringtochar(fname) ; parse file name to get date
|
||||
year = title(0:3)
|
||||
jday = title(4:6)
|
||||
res@gsnCenterString = year+" "+jday ; create center string
|
||||
;***************************************
|
||||
; create plot
|
||||
;***************************************
|
||||
wks = gsn_open_wks("ps","mcsst") ; open workstation (plot destination)
|
||||
gsn_define_colormap(wks,"BlGrYeOrReVi200") ; choose colormap
|
||||
;
|
||||
; This will not be necessary in V6.1.0 and later. Named colors can
|
||||
; be used without having to first add them to the color map.
|
||||
;
|
||||
d = NhlNewColor(wks,0.8,0.8,0.8) ; add gray to colormap
|
||||
|
||||
|
||||
res@cnFillOn = True ; turn on color
|
||||
res@gsnSpreadColors = True ; use full range of colormap
|
||||
res@gsnSpreadColorStart = 2 ; start at color 2
|
||||
res@gsnSpreadColorEnd = -3 ; don't use added gray
|
||||
res@cnLinesOn = False ; no contour lines
|
||||
res@cnFillDrawOrder = "PreDraw" ; draw contours before continents
|
||||
res@gsnMaximize = True ; maximize plot
|
||||
|
||||
|
||||
; For a grid this size, it is better to use raster mode. It will be
|
||||
; significantly faster, and will not go over NCL's 16mb default plot size.
|
||||
res@cnFillMode = "RasterFill" ; turn on raster mode
|
||||
|
||||
plot = gsn_csm_contour_map_ce(wks,sst,res) ; contour the variable
|
||||
|
||||
end
|
||||
3
samples/NCL/primero.ncl
Normal file
3
samples/NCL/primero.ncl
Normal file
@@ -0,0 +1,3 @@
|
||||
val=102
|
||||
a=val/4.
|
||||
print(a)
|
||||
172
samples/NCL/topo_9.ncl
Normal file
172
samples/NCL/topo_9.ncl
Normal file
@@ -0,0 +1,172 @@
|
||||
;----------------------------------------------------------------------
|
||||
; topo_9.ncl
|
||||
;
|
||||
; Concepts illustrated:
|
||||
; - Recreating a jpeg topographic image as an NCL map object
|
||||
; - Zooming in on a jpeg image
|
||||
; - Drawing a box around an area of interest on a map
|
||||
; - Attaching polylines to a map
|
||||
; - Using "overlay" to overlay multiple contour plots
|
||||
; - Using more than 256 colors per frame
|
||||
; - Using functions for cleaner code
|
||||
;----------------------------------------------------------------------
|
||||
; NOTE: This example will only work with NCL V6.1.0 and later.
|
||||
;
|
||||
; This script recreates a JPEG image that was converted to a NetCDF
|
||||
; file with color separated bands using the open source tool
|
||||
; "gdal_translate":
|
||||
;
|
||||
; gdal_translate -ot Int16 -of netCDF EarthMap_2500x1250.jpg \
|
||||
; EarthMap_2500x1250.nc
|
||||
;----------------------------------------------------------------------
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
; This function imports a JPEG image that's on the whole globe,
|
||||
; and recreates it as an NCL map object that is zoomed in on the
|
||||
; southern tip of Africa.
|
||||
;----------------------------------------------------------------------
|
||||
undef("recreate_jpeg_image")
|
||||
function recreate_jpeg_image(wks,minlat,maxlat,minlon,maxlon)
|
||||
begin
|
||||
orig_jpg_filename = "EarthMap_2500x1250.jpg"
|
||||
nc_filename = "EarthMap_2500x1250.nc"
|
||||
|
||||
;--You could use a system call to do the NetCDF conversion
|
||||
; cmd = "gdal_translate -ot Int16 -of netCDF " + jpeg_filename + \
|
||||
; " " + nc_filename)
|
||||
; system(cmd)
|
||||
|
||||
;---Read the three bands of data
|
||||
f = addfile(nc_filename,"r")
|
||||
Band1 = where(f->Band1.gt.255, 255, f->Band1) ; red channel
|
||||
Band2 = where(f->Band2.gt.255, 255, f->Band2) ; green channel
|
||||
Band3 = where(f->Band3.gt.255, 255, f->Band3) ; blue channel
|
||||
|
||||
band_dims = dimsizes(Band3)
|
||||
nlat = band_dims(0)
|
||||
nlon = band_dims(1)
|
||||
print("dimensions of image = " + nlat + " x " + nlon)
|
||||
|
||||
;
|
||||
; Add lat/lon data so we can overlay on a map, and/or
|
||||
; overlay contours. We know the image is global,
|
||||
; cylindrical equidistant, and centered about lon=0.
|
||||
;
|
||||
lat = fspan( -90, 90,nlat)
|
||||
lon = fspan(-180,180,nlon)
|
||||
lat@units = "degrees_north"
|
||||
lon@units = "degrees_east"
|
||||
|
||||
Band1!0 = "lat"
|
||||
Band1!1 = "lon"
|
||||
Band2!0 = "lat"
|
||||
Band2!1 = "lon"
|
||||
Band3!0 = "lat"
|
||||
Band3!1 = "lon"
|
||||
Band1&lat = lat
|
||||
Band1&lon = lon
|
||||
Band2&lat = lat
|
||||
Band2&lon = lon
|
||||
Band3&lat = lat
|
||||
Band3&lon = lon
|
||||
|
||||
res = True
|
||||
|
||||
res@gsnMaximize = True
|
||||
|
||||
res@gsnFrame = False ; Don't draw or advance
|
||||
res@gsnDraw = False ; frame yet.
|
||||
|
||||
res@cnFillOn = True
|
||||
res@cnFillMode = "RasterFill" ; Raster fill can be faster
|
||||
|
||||
res@cnLevelSelectionMode = "EqualSpacedLevels"
|
||||
res@cnMaxLevelCount = 254
|
||||
res@cnFillBackgroundColor = (/ 1., 1., 1., 1./)
|
||||
|
||||
res@cnLinesOn = False ; Turn off contour lines .
|
||||
res@cnLineLabelsOn = False ; Turn off contour labels
|
||||
res@cnInfoLabelOn = False ; Turn off info label
|
||||
res@lbLabelBarOn = False ; Turn off labelbar
|
||||
res@gsnRightString = "" ; Turn off subtitles
|
||||
res@gsnLeftString = ""
|
||||
res@pmTickMarkDisplayMode = "Always"
|
||||
|
||||
;---Construct RGBA colormaps...
|
||||
ramp = fspan(0., 1., 255)
|
||||
reds = new((/255, 4/), float)
|
||||
greens = new((/255, 4/), float)
|
||||
blues = new((/255, 4/), float)
|
||||
|
||||
reds = 0
|
||||
greens = 0
|
||||
blues = 0
|
||||
|
||||
reds(:,0) = ramp
|
||||
greens(:,1) = ramp
|
||||
blues(:,2) = ramp
|
||||
|
||||
; The red contour map is plotted fully opaque; the green and blue
|
||||
; are plotted completely transparent. When overlain, the colors
|
||||
; combine (rather magically).
|
||||
reds(:,3) = 1.
|
||||
greens(:,3) = 0
|
||||
blues(:,3) = 0
|
||||
|
||||
res@cnFillColors = greens
|
||||
greenMap = gsn_csm_contour(wks, Band2, res)
|
||||
|
||||
res@cnFillColors = blues
|
||||
blueMap = gsn_csm_contour(wks, Band3, res)
|
||||
|
||||
;---This will be our base, so make it a map plot.
|
||||
res@cnFillColors = reds
|
||||
res@gsnAddCyclic = False
|
||||
|
||||
res@mpFillOn = False
|
||||
|
||||
;---Zoom in on area of interest
|
||||
res@mpMinLatF = minlat
|
||||
res@mpMaxLatF = maxlat
|
||||
res@mpMinLonF = minlon
|
||||
res@mpMaxLonF = maxlon
|
||||
|
||||
redMap = gsn_csm_contour_map(wks, Band1, res)
|
||||
|
||||
;---Overlay everything to create the topo map
|
||||
overlay(redMap, greenMap)
|
||||
overlay(redMap, blueMap)
|
||||
|
||||
return(redMap)
|
||||
end
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
; Main code
|
||||
;----------------------------------------------------------------------
|
||||
begin
|
||||
;---Recreating jpeg images only works for X11 and PNG.
|
||||
wks = gsn_open_wks("png","topo")
|
||||
|
||||
;---Southern part of Africa
|
||||
minlat = -40
|
||||
maxlat = 5
|
||||
minlon = 10
|
||||
maxlon = 40
|
||||
|
||||
map = recreate_jpeg_image(wks,minlat,maxlat,minlon,maxlon)
|
||||
|
||||
;---Overlay a red box
|
||||
lonbox = (/ 15, 35, 35, 15, 15/)
|
||||
latbox = (/-30,-30,-10,-10,-30/)
|
||||
|
||||
lnres = True
|
||||
lnres@gsLineColor = "red" ; red box
|
||||
lnres@gsLineThicknessF = 4.0 ; make box thicker
|
||||
box = gsn_add_polyline(wks,map,lonbox,latbox,lnres)
|
||||
|
||||
draw(map) ; Drawing the map will draw the red box
|
||||
frame(wks)
|
||||
|
||||
end
|
||||
120
samples/NCL/traj_3.ncl
Normal file
120
samples/NCL/traj_3.ncl
Normal file
@@ -0,0 +1,120 @@
|
||||
;*************************************************
|
||||
; traj_3.ncl
|
||||
;*************************************************
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
|
||||
external TRAJ "./particle.so"
|
||||
;*************************************************
|
||||
begin
|
||||
|
||||
path = "./data.asc"
|
||||
data = asciiread(path,(/500,6/),"float")
|
||||
;*************************************************
|
||||
; some parameters
|
||||
;*************************************************
|
||||
np = 1
|
||||
nq = 500
|
||||
ncor= 8
|
||||
xrot = new((/np,nq/),float)
|
||||
yrot = new((/np,nq/),float)
|
||||
xaxis = new(ncor,float)
|
||||
yaxis = new(ncor,float)
|
||||
;**************************************************
|
||||
; convert data into rotated format
|
||||
;**************************************************
|
||||
TRAJ::particle(path,xrot,yrot,nq,np,xaxis,yaxis,ncor)
|
||||
;**************************************************
|
||||
; create plot
|
||||
;**************************************************
|
||||
wks = gsn_open_wks("ps","traj") ; Open an ps file
|
||||
|
||||
xyres = True
|
||||
xyres@gsnFrame = False ; don't advance the frame
|
||||
xyres@gsnDraw = False ; don't draw indivdual plots
|
||||
xyres@tmXTBorderOn = False ; don't draw top axis
|
||||
xyres@tmXBBorderOn = False ; don't draw bottom axis
|
||||
xyres@tmYRBorderOn = False ; don't draw right axis
|
||||
xyres@tmYLBorderOn = False ; don't draw left axis
|
||||
xyres@tmXTOn = False ; don't draw top-axis tick marks
|
||||
xyres@tmXBOn = False ; don't draw bottom-axis tick marks
|
||||
xyres@tmYROn = False ; don't draw right-axis tick marks
|
||||
xyres@tmYLOn = False ; don't draw left-axis tick marks
|
||||
|
||||
xyres@xyLineColors = (/"red"/) ; set the line color to red
|
||||
xyres@xyLineThicknessF = 4.0 ; 4 times the line thickness
|
||||
|
||||
xyres@trXMaxF = 15000 ; choose range of axis even though
|
||||
xyres@trXMinF = -10000 ; we don't see them
|
||||
xyres@trYMaxF = 1000
|
||||
xyres@trYMinF = -1000
|
||||
|
||||
plot = gsn_xy(wks,xrot,yrot,xyres) ; Draw trajectory
|
||||
;**********************************************
|
||||
; create arrays needed for the bounding box
|
||||
;**********************************************
|
||||
a1 = new(5,float)
|
||||
b1 = new(5,float)
|
||||
a2 = new(5,float)
|
||||
b2 = new(5,float)
|
||||
a3 = new(2,float)
|
||||
b3 = new(2,float)
|
||||
a4 = new(2,float)
|
||||
b4 = new(2,float)
|
||||
a5 = new(2,float)
|
||||
b5 = new(2,float)
|
||||
a6 = new(2,float)
|
||||
b6 = new(2,float)
|
||||
a0 = new(2,float)
|
||||
b0 = new(2,float)
|
||||
;**********************************************
|
||||
; determine values of each bounding line from information
|
||||
; returned from particle.f
|
||||
;**********************************************
|
||||
a1(0:3) = xaxis(:3)
|
||||
b1(0:3) = yaxis(:3)
|
||||
a1(4) = xaxis(0)
|
||||
b1(4) = yaxis(0)
|
||||
|
||||
a2(0:3) = xaxis(4:)
|
||||
b2(0:3) = yaxis(4:)
|
||||
a2(4) = xaxis(4)
|
||||
b2(4) = yaxis(4)
|
||||
|
||||
a3 = xaxis(0:4:4)
|
||||
b3 = yaxis(0:4:4)
|
||||
a4 = xaxis(1:5:4)
|
||||
b4 = yaxis(1:5:4)
|
||||
|
||||
a5 = xaxis(2:6:4)
|
||||
b5 = yaxis(2:6:4)
|
||||
a6 = xaxis(3:7:4)
|
||||
b6 = yaxis(3:7:4)
|
||||
|
||||
a0(0) = xaxis(3)
|
||||
b0(0) = yaxis(3)
|
||||
a0(1) = xrot(0,0)
|
||||
b0(1) = yrot(0,0)
|
||||
;***************************************************************
|
||||
; create bounding box by drawing multiple xy plots on top of
|
||||
; each other. each with their individual axis turned off.
|
||||
;***************************************************************
|
||||
xyres@xyLineColors = (/"black"/) ; line color
|
||||
xyres@xyLineThicknessF = 1.0 ; regular line thickness
|
||||
|
||||
bottom = gsn_xy(wks,a1,b1,xyres) ; Draw the bottom bounding box.
|
||||
top = gsn_xy(wks,a2,b2,xyres) ; Draw the top bounding box.
|
||||
side1 = gsn_xy(wks,a3,b3,xyres) ; Draw a side line.
|
||||
side2 = gsn_xy(wks,a4,b4,xyres) ; Draw a side line.
|
||||
side3 = gsn_xy(wks,a5,b5,xyres) ; Draw a side line.
|
||||
side4 = gsn_xy(wks,a6,b6,xyres) ; Draw a side line.
|
||||
;***************************************************************
|
||||
; now draw a large brown line to represent the chimney
|
||||
;***************************************************************
|
||||
xyres@xyLineColors = (/"brown"/) ; chimney color
|
||||
xyres@xyLineThicknessF = 9.0 ; thick line
|
||||
xyres@tiMainString = "Pollutant Trajectory in a 3D Volume"
|
||||
chimney = gsn_xy(wks,a0,b0,xyres) ; Draw the chimney.
|
||||
|
||||
draw(wks)
|
||||
frame(wks)
|
||||
|
||||
end
|
||||
167
samples/NCL/tsdiagram_1.ncl
Normal file
167
samples/NCL/tsdiagram_1.ncl
Normal file
@@ -0,0 +1,167 @@
|
||||
; Read potential temp (TEMP), salinity (SALT)
|
||||
; Compute potential density (PD) for specified range PD(t,s)
|
||||
; (use ncl function based on Yeager's algorithm for rho computation)
|
||||
; Assumes annual and zonally avgeraged input data set (i.e, one time slice)
|
||||
; Used K.Lindsay's "za" for zonal avg -- already binned into basins
|
||||
; Plots temp vs salt (scatter plot), pd overlay
|
||||
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/shea_util.ncl"
|
||||
|
||||
begin
|
||||
; ================================> ; PARAMETERS
|
||||
case = "PHC2_gx1v3"
|
||||
ocnfile = "za_PHC2_T_S_gx1v3.nc"
|
||||
|
||||
depth_min = 14895.82 ; in cm, depth of first layer to be included
|
||||
depth_max = 537499.9
|
||||
;
|
||||
; plot limits
|
||||
;
|
||||
smincn = 32.5
|
||||
smaxcn = 37.0
|
||||
tmincn = -2.
|
||||
tmaxcn = 22.
|
||||
;
|
||||
; Choose basin index
|
||||
;
|
||||
; 0 = global 1 = southern ocean 2 = pacific 3 = indian 6 = atlantic
|
||||
; 8 = labrador 9 = GIN 10 = arctic
|
||||
;
|
||||
bi = 2
|
||||
|
||||
;=====> basin check
|
||||
|
||||
if(bi.lt.0.or.bi.gt.10) then
|
||||
print("basin index "+ bi + " not supported")
|
||||
exit
|
||||
end if
|
||||
|
||||
if(bi.eq.0) then
|
||||
basin = "Global"
|
||||
blab = "global"
|
||||
end if
|
||||
if(bi.eq.1) then
|
||||
basin = "Southern Ocean"
|
||||
blab = "so"
|
||||
end if
|
||||
if(bi.eq.2) then
|
||||
basin = "Pacific Ocean"
|
||||
blab = "pacific"
|
||||
end if
|
||||
if(bi.eq.3) then
|
||||
basin = "Indian Ocean"
|
||||
blab = "indian"
|
||||
end if
|
||||
if(bi.eq.6) then
|
||||
basin = "Atlantic Ocean"
|
||||
blab = "atlanticn"
|
||||
end if
|
||||
if(bi.eq.8) then
|
||||
basin = "Labrador Sea"
|
||||
blab = "lab"
|
||||
end if
|
||||
if(bi.eq.9) then
|
||||
basin = "GIN Sea"
|
||||
blab = "gin"
|
||||
end if
|
||||
if(bi.eq.10) then
|
||||
basin = "Arctic Ocean"
|
||||
blab = "arctic"
|
||||
end if
|
||||
|
||||
;=====> initial resource settings
|
||||
|
||||
wks = gsn_open_wks("ps","tsdiagram") ; Open a Postscript file
|
||||
|
||||
;===== data
|
||||
focn = addfile(ocnfile, "r")
|
||||
salt = focn->SALT(0,:,{depth_min:depth_max},:) ;(basins, z_t, lat_t)
|
||||
temp = focn->TEMP(0,:,{depth_min:depth_max},:)
|
||||
|
||||
;====section out choice basin
|
||||
temp_ba = temp(bi,:,:)
|
||||
salt_ba = salt(bi,:,:)
|
||||
|
||||
;===== put into scatter array format
|
||||
tdata_ba = ndtooned(temp_ba)
|
||||
sdata_ba = ndtooned(salt_ba)
|
||||
|
||||
ydata = tdata_ba
|
||||
xdata = sdata_ba
|
||||
|
||||
;============== compute potenial density (PD), using rho_mwjf
|
||||
;
|
||||
; for potential density, depth = 0. (i.e. density as if brought to surface)
|
||||
;
|
||||
;===========================================================================
|
||||
; WARNING: T-S diagrams use POTENTIAL DENSITY... if set depth to something
|
||||
; other then 0, then you will be plotting density contours computed for the
|
||||
; specified depth layer.
|
||||
;===========================================================================
|
||||
|
||||
depth = 0. ;in meters
|
||||
tspan = fspan(tmincn,tmaxcn,51)
|
||||
sspan = fspan(smincn,smaxcn,51)
|
||||
|
||||
; the more points the better... using Yeager's numbers
|
||||
|
||||
t_range = conform_dims((/51,51/),tspan,0)
|
||||
s_range = conform_dims((/51,51/),sspan,1)
|
||||
|
||||
pd = rho_mwjf(t_range,s_range,depth)
|
||||
|
||||
pd!0 = "temp"
|
||||
pd!1 = "salt"
|
||||
pd&temp = tspan
|
||||
pd&salt = sspan
|
||||
pd = 1000.*(pd-1.) ; Put into kg/m3 pot den units
|
||||
|
||||
; printVarSummary(pd)
|
||||
; printVarInfo(pd,"rho_mwjf")
|
||||
|
||||
;=================Graphics
|
||||
|
||||
;--- scatter plot
|
||||
res = True
|
||||
res@gsnMaximize = True
|
||||
res@gsnDraw = False
|
||||
res@gsnFrame = False
|
||||
|
||||
res@xyMarkLineModes = "Markers"
|
||||
res@xyMarkers = 16
|
||||
res@xyMarkerColors = "black"
|
||||
res@pmLegendDisplayMode = "Never"
|
||||
res@txFontHeightF = 0.01
|
||||
res@tiMainString = case + " ANN AVG: T-S Diagram"
|
||||
res@tiXAxisString = salt@units
|
||||
res@tiXAxisFontHeightF = 0.02
|
||||
res@tiYAxisString = temp@units
|
||||
res@tiYAxisFontHeightF = 0.02
|
||||
res@trXMinF = smincn
|
||||
res@trXMaxF = smaxcn
|
||||
res@trYMinF = tmincn
|
||||
res@trYMaxF = tmaxcn
|
||||
res@gsnRightString = depth_min/100. + "-"+depth_max/100. +"m"
|
||||
res@gsnLeftString = basin
|
||||
|
||||
plot = gsn_csm_xy(wks,xdata,ydata,res)
|
||||
|
||||
;----- pd overlay
|
||||
resov = True
|
||||
resov@gsnDraw = False
|
||||
resov@gsnFrame = False
|
||||
resov@cnLevelSelectionMode = "AutomaticLevels"
|
||||
resov@cnInfoLabelOn = "False"
|
||||
resov@cnLineLabelPlacementMode = "Constant"
|
||||
resov@cnLineLabelFontHeightF = ".02"
|
||||
|
||||
plotpd = gsn_csm_contour(wks,pd,resov)
|
||||
overlay(plot,plotpd)
|
||||
|
||||
draw(plot)
|
||||
frame(wks)
|
||||
|
||||
end
|
||||
141
samples/NCL/unique_9.ncl
Normal file
141
samples/NCL/unique_9.ncl
Normal file
@@ -0,0 +1,141 @@
|
||||
;************************************
|
||||
; unique_9.ncl
|
||||
;
|
||||
; Concepts illustrated:
|
||||
; - Drawing raster contours over a map
|
||||
; - Creating a topography plot using raster contours
|
||||
; - Reading data from binary files
|
||||
; - Manually creating lat/lon coordinate arrays
|
||||
; - Customizing a labelbar for a contour plot
|
||||
;************************************
|
||||
; This example generates a topo map over
|
||||
; the area of Trinidad, Colorado.
|
||||
;************************************
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
|
||||
|
||||
begin
|
||||
|
||||
wks = gsn_open_wks("ps","unique")
|
||||
|
||||
;----------------- read the west binary data -------------------------
|
||||
binfile = "trinidad-w.bin"
|
||||
|
||||
quad_name = fbinrecread(binfile,0,60,"character")
|
||||
|
||||
map_cornersW = fbinrecread(binfile,1,4,"double")
|
||||
|
||||
lonW = fbinrecread(binfile,2,(/1201/),"double")
|
||||
|
||||
latW = fbinrecread(binfile,3,(/1201/),"double")
|
||||
|
||||
minmax_elevW = fbinrecread(binfile,4,2,"double")
|
||||
|
||||
tmpW = fbinrecread(binfile,5,(/1201,1201/),"integer")
|
||||
|
||||
;----------------- read the east binary data -------------------------
|
||||
binfile = "trinidad-e.bin"
|
||||
|
||||
quad_name = fbinrecread(binfile,0,60,"character")
|
||||
|
||||
map_cornersE = fbinrecread(binfile,1,4,"double")
|
||||
|
||||
lonE = fbinrecread(binfile,2,(/1201/),"double")
|
||||
|
||||
latE = fbinrecread(binfile,3,(/1201/),"double")
|
||||
|
||||
minmax_elevE = fbinrecread(binfile,4,2,"double")
|
||||
|
||||
tmpE = fbinrecread(binfile,5,(/1201,1201/),"integer")
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
min_elev = min((/minmax_elevW(0),minmax_elevE(0)/))*3.28
|
||||
max_elev = max((/minmax_elevW(1),minmax_elevE(1)/))*3.28
|
||||
|
||||
lat = new(1201,"double")
|
||||
lat = latW
|
||||
lat!0 = "lat"
|
||||
lat&lat = latW ; same as latE
|
||||
lat@long_name = "latitude"
|
||||
lat@units = "degrees_north"
|
||||
|
||||
lon = new(2401,"double")
|
||||
lon(0:1200) = lonW
|
||||
lon(1201:2400) = lonE(1:1200)
|
||||
lon!0 = "lon"
|
||||
lon&lon = lon
|
||||
lon@long_name = "longitude"
|
||||
lon@units = "degrees_east"
|
||||
|
||||
data = new((/1201,2401/),"float") ; (lat,lon)
|
||||
data!0 = "lat"
|
||||
data&lat = lat
|
||||
data!1 = "lon"
|
||||
data&lon = lon
|
||||
data(:,0:1200) = (/tmpW*3.28/) ; convert to feet
|
||||
data(:,1201:2400) = (/tmpE(:,1:1200)*3.28/) ; convert to feet
|
||||
;-------------------------------------------------------------
|
||||
|
||||
;
|
||||
; Define colormap.
|
||||
;
|
||||
cmap = (/(/1.00, 1.00, 1.00/),(/0.00, 0.00, 0.00/), \
|
||||
(/0.51, 0.13, 0.94/),(/0.00, 0.00, 0.59/), \
|
||||
(/0.00, 0.00, 0.80/),(/0.25, 0.41, 0.88/), \
|
||||
(/0.12, 0.56, 1.00/),(/0.00, 0.75, 1.00/), \
|
||||
(/0.63, 0.82, 1.00/),(/0.82, 0.96, 1.00/), \
|
||||
(/1.00, 1.00, 0.78/),(/1.00, 0.88, 0.20/), \
|
||||
(/1.00, 0.67, 0.00/),(/1.00, 0.43, 0.00/), \
|
||||
(/1.00, 0.00, 0.00/),(/0.78, 0.00, 0.00/), \
|
||||
(/0.63, 0.14, 0.14/),(/1.00, 0.41, 0.70/)/)
|
||||
|
||||
gsn_define_colormap(wks,cmap)
|
||||
|
||||
res = True
|
||||
res@gsnMaximize = True
|
||||
res@gsnAddCyclic = False
|
||||
|
||||
; map plot resources
|
||||
res@mpFillOn = False
|
||||
res@mpLimitMode = "Corners"
|
||||
res@mpDataBaseVersion = "Ncarg4_1"
|
||||
res@mpOutlineBoundarySets = "AllBoundaries"
|
||||
res@mpLeftCornerLonF = map_cornersW(0)
|
||||
res@mpLeftCornerLatF = map_cornersW(1)
|
||||
res@mpRightCornerLonF = map_cornersE(2)
|
||||
res@mpRightCornerLatF = map_cornersE(3)
|
||||
|
||||
; contour resources
|
||||
res@cnFillOn = True
|
||||
res@cnLinesOn = False
|
||||
res@cnFillMode = "RasterFill"
|
||||
res@cnLevelSelectionMode = "ExplicitLevels"
|
||||
res@cnLevels = (/ 5000., 6000., 7000., 8000., 8500., 9000., \
|
||||
9500.,10000.,10500.,11000.,11500.,12000., \
|
||||
12500.,13000.,13500./)
|
||||
|
||||
; tickmark resources
|
||||
res@pmTickMarkDisplayMode = "Always"
|
||||
res@tmXBLabelFontHeightF = 0.010
|
||||
|
||||
; labelbar resources
|
||||
res@pmLabelBarWidthF = 0.60
|
||||
res@txFontHeightF = 0.012
|
||||
res@lbTitleString = "elevation above mean sea level (feet)"
|
||||
res@lbTitleFontHeightF = 0.012
|
||||
res@lbLabelFontHeightF = 0.008
|
||||
res@lbTitleOffsetF = -0.27
|
||||
res@lbBoxMinorExtentF = 0.15
|
||||
res@pmLabelBarOrthogonalPosF = -.05
|
||||
|
||||
; title resources
|
||||
res@tiMainString = "USGS DEM TRINIDAD (1 x 2 degrees)"
|
||||
res@tiMainOffsetYF = -0.02 ; Move title down towards graphic.
|
||||
res@tiMainFontHeightF = 0.015
|
||||
res@gsnLeftString = "Min Elevation: "+min_elev
|
||||
res@gsnRightString = "Max Elevation: "+max_elev
|
||||
res@gsnCenterString = "Scale 1:250,000"
|
||||
|
||||
plot = gsn_csm_contour_map(wks,data,res)
|
||||
|
||||
end
|
||||
131
samples/NCL/viewport_4.ncl
Normal file
131
samples/NCL/viewport_4.ncl
Normal file
@@ -0,0 +1,131 @@
|
||||
; ***********************************************
|
||||
; viewport_4.ncl
|
||||
;
|
||||
; Concepts illustrated:
|
||||
; - Drawing an XY plot with multiple curves
|
||||
; - Using drawNDCGrid to draw a nicely labeled NDC grid
|
||||
; - Changing the size/shape of an XY plot using viewport resources
|
||||
; - Drawing two XY plots on the same page using viewport resources
|
||||
; - Drawing polylines, polymarkers, and text in NDC space
|
||||
; - Using "getvalues" to retrieve resource values
|
||||
; - Maximizing plots after they've been created
|
||||
; ***********************************************
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/shea_util.ncl"
|
||||
|
||||
;********************************************************************
|
||||
; Draw a box around the viewport of the given object..
|
||||
;********************************************************************
|
||||
procedure draw_vp_box(wks,plot)
|
||||
local vpx, vpy, vpw, vph, xbox, ybox, lnres, mkres, txres
|
||||
begin
|
||||
|
||||
; Retrieve the viewport values of the drawable object.
|
||||
getvalues plot
|
||||
"vpXF" : vpx
|
||||
"vpYF" : vpy
|
||||
"vpWidthF" : vpw
|
||||
"vpHeightF" : vph
|
||||
end getvalues
|
||||
|
||||
; Set up some marker resources.
|
||||
mkres = True
|
||||
mkres@gsMarkerIndex = 16 ; filled dot
|
||||
mkres@gsMarkerSizeF = 0.02 ; larger than default
|
||||
mkres@gsMarkerColor = "Red"
|
||||
|
||||
; Draw a single marker at the vpXF/vpYF location.
|
||||
gsn_polymarker_ndc(wks,vpx,vpy,mkres)
|
||||
|
||||
|
||||
; Set up some text resources.
|
||||
txres = True
|
||||
txres@txJust = "BottomLeft"
|
||||
txres@txFontHeightF = 0.018
|
||||
txres@txFontColor = "Blue"
|
||||
txres@txBackgroundFillColor = "white"
|
||||
|
||||
gsn_text_ndc(wks,"(vpXF="+vpx+", vpYF="+vpy+")",vpx,vpy+0.02,txres)
|
||||
; Set up some line resources.
|
||||
lnres = True
|
||||
lnres@gsLineColor = "Red" ; line color
|
||||
lnres@gsLineThicknessF = 2.0 ; 3.5 times as thick
|
||||
|
||||
; Draw lines indicating the width and height
|
||||
xline = (/vpx, vpx+vpw/)
|
||||
yline = (/vpy-0.05,vpy-0.05/)
|
||||
gsn_polyline_ndc(wks,xline,yline,lnres)
|
||||
|
||||
xline = (/vpx+0.05,vpx+0.05/)
|
||||
yline = (/vpy,vpy-vph/)
|
||||
gsn_polyline_ndc(wks,xline,yline,lnres)
|
||||
|
||||
txres@txJust = "CenterCenter"
|
||||
gsn_text_ndc(wks,"vpWidthF = " + vpw,vpx+vpw/2.,vpy-0.05,txres)
|
||||
|
||||
txres@txAngleF = 90.
|
||||
gsn_text_ndc(wks,"vpHeightF = " + vph,vpx+0.05,vpy-vph/2.,txres)
|
||||
end
|
||||
|
||||
;********************************************************************
|
||||
; Main code
|
||||
;********************************************************************
|
||||
begin
|
||||
;************************************************
|
||||
; read in data
|
||||
;************************************************
|
||||
f = addfile ("$NCARG_ROOT/lib/ncarg/data/cdf/uv300.nc","r")
|
||||
u = f->U ; get u data
|
||||
;************************************************
|
||||
; plotting parameters
|
||||
;************************************************
|
||||
wks = gsn_open_wks ("ps","viewport") ; open workstation
|
||||
|
||||
res = True ; plot mods desired
|
||||
|
||||
res@gsnFrame = False ; don't advance frame yet
|
||||
|
||||
res@vpWidthF = 0.8 ; set width and height
|
||||
res@vpHeightF = 0.3
|
||||
|
||||
; First plot
|
||||
res@tiMainString = "Plot 1"
|
||||
|
||||
res@vpXF = 0.15
|
||||
res@vpYF = 0.9 ; Higher on the page
|
||||
|
||||
plot1 = gsn_csm_xy (wks,u&lat,u(0,:,{82}),res) ; create plot
|
||||
|
||||
; Second plot
|
||||
res@tiMainString = "Plot 2"
|
||||
|
||||
res@vpXF = 0.15 ; Same X location as first plot
|
||||
res@vpYF = 0.4 ; Lower on the page
|
||||
|
||||
plot2 = gsn_csm_xy (wks,u&lat,u(0,:,{3}),res) ; create plot
|
||||
|
||||
; Advance the frame
|
||||
frame(wks)
|
||||
|
||||
; Now draw the two plots with illustrations.
|
||||
|
||||
drawNDCGrid(wks) ; Draw helpful grid lines showing NDC square.
|
||||
|
||||
draw(plot1) ; Draw the two plots
|
||||
draw(plot2)
|
||||
|
||||
draw_vp_box(wks,plot1) ; Draw boxes around the two viewports.
|
||||
draw_vp_box(wks,plot2)
|
||||
|
||||
frame(wks) ; Advance the frame.
|
||||
|
||||
|
||||
;
|
||||
; Uncomment the next two lines if you want to maximize these plots for
|
||||
; PS or PDF output.
|
||||
;
|
||||
; psres = True
|
||||
; maximize_output(wks,psres) ; calls draw and frame for you
|
||||
end
|
||||
120
samples/NCL/weather_sym_6.ncl
Normal file
120
samples/NCL/weather_sym_6.ncl
Normal file
@@ -0,0 +1,120 @@
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
|
||||
|
||||
begin
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;
|
||||
; Example of plotting station model data over a map
|
||||
; illustrating how the wind barb directions are adjusted
|
||||
; for the map projection.
|
||||
;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;
|
||||
; City names.
|
||||
;
|
||||
cities = (/ "NCAR", "Seattle", "San Francisco", \
|
||||
"Los Angeles", "Billings", "El Paso", \
|
||||
"Houston", "Kansas City", "Minneapolis", \
|
||||
"Chicago", "Detroit", "Atlanta", \
|
||||
"Miami", "New York", "Eugene", \
|
||||
"Boise", "Salt Lake", "Phoenix", \
|
||||
"Albuquerque", "Bismarck", "Tulsa", \
|
||||
"Dallas", "Little Rock", "Lexington", \
|
||||
"Charlotte", "Norfolk", "Bangor" \
|
||||
/)
|
||||
city_lats = (/ 40.0, 47.6, 37.8, \
|
||||
34.1, 45.8, 31.8, \
|
||||
29.8, 39.1, 45.0, \
|
||||
41.9, 42.3, 33.8, \
|
||||
25.8, 40.8, 44.1, \
|
||||
43.6, 40.7, 33.5, \
|
||||
35.1, 46.7, 36.0, \
|
||||
32.8, 34.7, 38.1, \
|
||||
35.2, 36.8, 44.8 \
|
||||
/)
|
||||
city_lons = (/ -105.0, -122.3, -122.4, \
|
||||
-118.3, -108.5, -106.5, \
|
||||
-095.3, -094.1, -093.8, \
|
||||
-087.6, -083.1, -084.4, \
|
||||
-080.2, -074.0, -123.1, \
|
||||
-116.2, -111.9, -112.1, \
|
||||
-106.6, -100.8, -096.0, \
|
||||
-096.8, -092.3, -084.1, \
|
||||
-080.8, -076.3, -068.8 \
|
||||
/)
|
||||
;
|
||||
; Station model data for the 27 cities.
|
||||
;
|
||||
imdat = (/"11000000751126021360300004955054054600007757087712", \
|
||||
"11103100011104021080300004959055050600517043080369", \
|
||||
"11206200031102021040300004963056046601517084081470", \
|
||||
"11309300061000021020300004967057042602017125082581", \
|
||||
"11412400091002021010300004971058038602517166083592", \
|
||||
"11515500121004020000300004975050034603017207084703", \
|
||||
"11618600151006020030300004979051030603507248085814", \
|
||||
"11721700181008020050300004983052026604007289086925", \
|
||||
"11824800211009020070300004987053022604507323087036", \
|
||||
"11927900241011020110300004991054018605017364088147", \
|
||||
"11030000271013020130300004995055014605517405089258", \
|
||||
"11133100301015020170300004999056010606017446080369", \
|
||||
"11236200331017020200300004000057006606517487081470", \
|
||||
"11339300361019020230300004004058002607017528082581", \
|
||||
"11442400391021020250300004008050000607517569083692", \
|
||||
"11545500421023020270300004012051040608017603084703", \
|
||||
"11648600451025020290300004017052008608517644085814", \
|
||||
"11751700481027020310300004021053012609017685086925", \
|
||||
"11854800511029020330300004025054016609507726087036", \
|
||||
"11958900541031020360300004029055018610007767088147", \
|
||||
"11060000571033020380300004033056030610507808089258", \
|
||||
"11163100601035020410300004037057034611007849080369", \
|
||||
"11266200631037020430300004041058043611507883081470", \
|
||||
"11369300661039020470300004045050041612007924082581", \
|
||||
"11472400691041020500300004048051025612507965083692", \
|
||||
"11575500721043020530300004051052022613507996084703", \
|
||||
"11678600751048021580300004055053013614007337085814" \
|
||||
/)
|
||||
|
||||
;
|
||||
; Define a color map and open a workstation.
|
||||
;
|
||||
cmap = (/ \
|
||||
(/ 1., 1., 1. /), \ ; color index 0 - white
|
||||
(/ 0., 0., 0. /) \ ; color index 1 - black
|
||||
/)
|
||||
wks = gsn_open_wks("ps","weather_sym")
|
||||
gsn_define_colormap(wks,cmap)
|
||||
|
||||
;
|
||||
; Draw a world map.
|
||||
;
|
||||
mpres = True
|
||||
mpres@gsnFrame = False
|
||||
mpres@mpSatelliteDistF = 1.3
|
||||
mpres@mpOutlineBoundarySets = "USStates"
|
||||
mpres@mpCenterLatF = 40.
|
||||
mpres@mpCenterLonF = -97.
|
||||
mpres@mpCenterRotF = 35.
|
||||
map = gsn_map(wks,"Satellite",mpres)
|
||||
|
||||
;
|
||||
; Scale the station model plot (all aspects of the station
|
||||
; model plots are scaled as per the size of the wind barb).
|
||||
;
|
||||
wmsetp("wbs",0.018)
|
||||
;
|
||||
; In the middle of Nebraska, draw a wind barb for a north wind
|
||||
; with a magnitude of 15 knots.
|
||||
;
|
||||
wmbarbmap(wks,42.,-99.,0.,-15.)
|
||||
|
||||
;
|
||||
; Draw the station model data at the selected cities. The call
|
||||
; to wmsetp informs wmstnm that the wind barbs will be drawn over
|
||||
; a map. To illustrate the adjustment for plotting the model
|
||||
; data over a map, all winds are from the north.
|
||||
;
|
||||
wmsetp("ezf",1)
|
||||
wmstnm(wks,city_lats,city_lons,imdat)
|
||||
|
||||
frame(wks)
|
||||
|
||||
end
|
||||
151
samples/NCL/xy_29.ncl
Normal file
151
samples/NCL/xy_29.ncl
Normal file
@@ -0,0 +1,151 @@
|
||||
; xy_29.ncl
|
||||
;
|
||||
; Concepts illustrated:
|
||||
; - Reading data from an ASCII file with headers
|
||||
; - Creating a separate procedure to create a specific plot
|
||||
; - Attaching polymarkers to an XY plot
|
||||
;
|
||||
; This script was originally from Dr. Birgit Hassler (NOAA)
|
||||
;****************************************************
|
||||
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
|
||||
|
||||
;************************************************
|
||||
; Plot Procedure
|
||||
;************************************************
|
||||
procedure plotTCOPolym(pltName[1]:string, pltType[1]:string, filName[1]:string \
|
||||
,xTitle[1]:string , yTitle[1]:string \
|
||||
,year[*]:numeric, y[*]:numeric)
|
||||
local wks, res, ntim, gsres, MarkerCol, OldYear, i, xmarker, ymarker
|
||||
|
||||
begin
|
||||
wks = gsn_open_wks(pltType,pltName)
|
||||
gsn_define_colormap(wks,"default")
|
||||
|
||||
res = True
|
||||
res@gsnMaximize = True ; make "ps", "eps", "pdf" large
|
||||
|
||||
res@vpHeightF = 0.5 ; change aspect ratio of plot
|
||||
res@vpWidthF = 0.75
|
||||
res@vpXF = 0.15 ; start plot at x ndc coord
|
||||
res@tiXAxisString = xTitle
|
||||
res@tiYAxisString = yTitle
|
||||
res@tiMainString = filName
|
||||
|
||||
ntim = dimsizes(year)
|
||||
res@trXMinF = year(0)-1
|
||||
res@trXMaxF = year(ntim-1)+1
|
||||
|
||||
res@gsnDraw = False
|
||||
res@gsnFrame = False
|
||||
res@xyMarkLineMode = "markers"
|
||||
res@xyMarker = 16
|
||||
res@xyMarkerColor = "Background"
|
||||
plot = gsn_csm_xy (wks,year,y,res) ; create plot frame ork
|
||||
|
||||
; add different color polymarkers for each year
|
||||
gsres = True
|
||||
MarkerCol = 2
|
||||
OldYear = year(0)
|
||||
|
||||
do i=0,ntim-1
|
||||
xmarker = year(i)
|
||||
ymarker = y(i)
|
||||
|
||||
if (i.gt.0) then
|
||||
if (year(i).gt.OldYear) then
|
||||
MarkerCol = MarkerCol+1
|
||||
end if
|
||||
OldYear = year(i)
|
||||
end if
|
||||
|
||||
gsres@gsMarkerColor = MarkerCol
|
||||
gsres@gsMarkerIndex = 16
|
||||
;gsres@gsMarkerSizeF = 15.0
|
||||
; add (attach) polymarkers to existing plot object
|
||||
plot@$unique_string("dum")$ = gsn_add_polymarker(wks,plot,xmarker,ymarker,gsres)
|
||||
end do
|
||||
|
||||
draw(plot)
|
||||
frame(wks)
|
||||
end
|
||||
|
||||
;***********************************************************
|
||||
; MAIN
|
||||
;***********************************************************
|
||||
pltType = "ps" ; "ps", "eps", "png", "x11"
|
||||
|
||||
; read multiple ascii file names
|
||||
;;fili = "Southpole_TCOTimeSeries_11.dat"
|
||||
|
||||
diri = "./"
|
||||
fili = systemfunc("cd "+diri+" ; ls *TCOT*dat")
|
||||
print(fili)
|
||||
|
||||
nfil = dimsizes(fili)
|
||||
|
||||
nhead= 4 ; number of header lines on ascii file(s)
|
||||
ncol = 4 ; year, month, day, O3
|
||||
|
||||
do nf=0,nfil-1
|
||||
sfx = get_file_suffix(fili(nf), 0) ; sfx = ".dat"
|
||||
filx = sfx@fBase ; filx= "Southpole_TCOTimeSeries_11"
|
||||
; read ascii files
|
||||
data = readAsciiTable(diri+fili(nf), ncol, "float", nhead)
|
||||
dimd = dimsizes(data)
|
||||
ntim = dimd(0) ; # rows
|
||||
|
||||
year = toint( data(:,0) ) ; user decision ... convert to integer
|
||||
mon = toint( data(:,1) )
|
||||
day = toint( data(:,2) )
|
||||
|
||||
hour = new (ntim, "integer", "No_FillValue")
|
||||
mn = new (ntim, "integer", "No_FillValue")
|
||||
sec = new (ntim, "double" , "No_FillValue")
|
||||
hour = 0
|
||||
mn = 0
|
||||
sec = 0d0
|
||||
; create COARDS/udunits time variable
|
||||
;;tunits = "days since 1900-01-01 00:00:0.0"
|
||||
tunits = "days since "+year(0)+"-"+mon(0)+"-"+day(0)+" 00:00:0.0"
|
||||
time = cd_inv_calendar(year,mon,day,hour,mn,sec,tunits, 0)
|
||||
time!0 = "time"
|
||||
time&time = time
|
||||
;printVarSummary(time)
|
||||
|
||||
; create a Gregorin 'date' variable
|
||||
date = year*10000 + mon*100 + day
|
||||
date!0 = "time"
|
||||
date@units = "yyyymmdd"
|
||||
date&time = time
|
||||
;printVarSummary(date)
|
||||
|
||||
O3 = data(:,3)
|
||||
O3@long_name = "total column ozone"
|
||||
O3@units = "DU"
|
||||
|
||||
O3!0 = "time"
|
||||
O3&time = time
|
||||
;printVarSummary(O3)
|
||||
;print(" ")
|
||||
;print(date+" "+time+" "+O3)
|
||||
|
||||
; plot
|
||||
yTitle = O3@long_name
|
||||
year@long_name = "YEAR"
|
||||
|
||||
plotTCOPolym (filx, pltType, fili(nf), year@long_name, yTitle, year, O3)
|
||||
|
||||
delete(time) ; delete ... size (# rows) may change in the next file
|
||||
delete(date)
|
||||
delete(year)
|
||||
delete(mon )
|
||||
delete(day )
|
||||
delete(mn )
|
||||
delete(sec )
|
||||
delete(O3 )
|
||||
delete(data)
|
||||
end do
|
||||
|
||||
142
samples/PHP/file_display.inc
Normal file
142
samples/PHP/file_display.inc
Normal file
@@ -0,0 +1,142 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Plugins are described by creating a $plugin array which will be used
|
||||
* by the system that includes this file.
|
||||
*/
|
||||
$plugin = array(
|
||||
'single' => TRUE,
|
||||
'title' => t('File display'),
|
||||
'description' => t('Displays the file with a configurable style.'),
|
||||
'required context' => new ctools_context_required(t('File'), 'entity:file'),
|
||||
'category' => t('File'),
|
||||
'defaults' => array(
|
||||
'displays' => array(),
|
||||
),
|
||||
);
|
||||
|
||||
/**
|
||||
* Render the node content.
|
||||
*/
|
||||
function file_entity_file_display_content_type_render($subtype, $conf, $panel_args, $context) {
|
||||
if (!empty($context) && empty($context->data)) {
|
||||
return;
|
||||
}
|
||||
$file = isset($context->data) ? clone($context->data) : NULL;
|
||||
$block = new stdClass();
|
||||
$block->module = 'file_entity';
|
||||
$block->delta = $file->fid;
|
||||
|
||||
if (empty($file)) {
|
||||
$block->delta = 'placeholder';
|
||||
$block->title = t('File display');
|
||||
$block->content = t('File display goes here.');
|
||||
}
|
||||
else {
|
||||
if (!empty($conf['identifier'])) {
|
||||
$file->ctools_template_identifier = $conf['identifier'];
|
||||
}
|
||||
|
||||
$block->title = $file->filename;
|
||||
$block->content = file_view_file($file, $conf['displays']);
|
||||
}
|
||||
|
||||
if (!empty($conf['link']) && $file) {
|
||||
$block->title_link = entity_uri('file', $file);
|
||||
}
|
||||
|
||||
return $block;
|
||||
}
|
||||
|
||||
/**
|
||||
* Edit form for this plugin.
|
||||
*/
|
||||
function file_entity_file_display_content_type_edit_form($form, &$form_state) {
|
||||
$conf = $form_state['conf'];
|
||||
$form['#tree'] = TRUE;
|
||||
$form['#attached']['js'][] = drupal_get_path('module', 'file_entity') . '/file_entity.admin.js';
|
||||
|
||||
// Retrieve available formatters for this file. We can load all file types
|
||||
// since we don't know which type the file is at this point.
|
||||
$formatters = file_info_formatter_types();
|
||||
|
||||
// Formatter status.
|
||||
$form['displays']['status'] = array(
|
||||
'#type' => 'item',
|
||||
'#title' => t('Enabled displays'),
|
||||
'#prefix' => '<div id="file-displays-status-wrapper">',
|
||||
'#suffix' => '</div>',
|
||||
);
|
||||
$i=0;
|
||||
foreach ($formatters as $name => $formatter) {
|
||||
$form['displays']['status'][$name] = array(
|
||||
'#type' => 'checkbox',
|
||||
'#title' => check_plain($formatter['label']),
|
||||
'#default_value' => !empty($conf['displays'][$name]['status']),
|
||||
'#description' => isset($formatter['description']) ? filter_xss($formatter['description']) : NULL,
|
||||
'#parents' => array('displays', $name, 'status'),
|
||||
'#weight' => (isset($formatter['weight']) ? $formatter['weight'] : 0) + ($i / 1000),
|
||||
);
|
||||
$i++;
|
||||
}
|
||||
// Formatter order (tabledrag).
|
||||
$form['displays']['order'] = array(
|
||||
'#type' => 'item',
|
||||
'#title' => t('Display precedence order'),
|
||||
'#theme' => 'file_entity_file_display_order',
|
||||
);
|
||||
foreach ($formatters as $name => $formatter) {
|
||||
$form['displays']['order'][$name]['label'] = array(
|
||||
'#markup' => check_plain($formatter['label']),
|
||||
);
|
||||
$form['displays']['order'][$name]['weight'] = array(
|
||||
'#type' => 'weight',
|
||||
'#title' => t('Weight for @title', array('@title' => $formatter['label'])),
|
||||
'#title_display' => 'invisible',
|
||||
'#delta' => 50,
|
||||
'#default_value' => isset($conf['displays'][$name]['weight']) ? $conf['displays'][$name]['weight'] : 0,
|
||||
'#parents' => array('displays', $name, 'weight'),
|
||||
);
|
||||
$form['displays']['order'][$name]['#weight'] = $form['displays']['order'][$name]['weight']['#default_value'];
|
||||
}
|
||||
|
||||
// Formatter settings.
|
||||
$form['display_settings_title'] = array(
|
||||
'#type' => 'item',
|
||||
'#title' => t('Display settings'),
|
||||
);
|
||||
$form['display_settings'] = array(
|
||||
'#type' => 'vertical_tabs',
|
||||
);
|
||||
$i=0;
|
||||
foreach ($formatters as $name => $formatter) {
|
||||
if (isset($formatter['settings callback']) && ($function = $formatter['settings callback']) && function_exists($function)) {
|
||||
$defaults = !empty($formatter['default settings']) ? $formatter['default settings'] : array();
|
||||
$settings = !empty($conf['displays'][$name]['settings']) ? $conf['displays'][$name]['settings'] : array();
|
||||
$settings += $defaults;
|
||||
$settings_form = $function($form, $form_state, $settings, $name, $file_type, $view_mode);
|
||||
if (!empty($settings_form)) {
|
||||
$form['displays']['settings'][$name] = array(
|
||||
'#type' => 'fieldset',
|
||||
'#title' => check_plain($formatter['label']),
|
||||
'#parents' => array('displays', $name, 'settings'),
|
||||
'#group' => 'display_settings',
|
||||
'#weight' => (isset($formatter['weight']) ? $formatter['weight'] : 0) + ($i / 1000),
|
||||
) + $settings_form;
|
||||
}
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
return $form;
|
||||
}
|
||||
|
||||
function file_entity_file_display_content_type_edit_form_submit($form, &$form_state) {
|
||||
// Copy everything from our defaults.
|
||||
foreach (array_keys($form_state['plugin']['defaults']) as $key) {
|
||||
$form_state['conf'][$key] = $form_state['values'][$key];
|
||||
}
|
||||
}
|
||||
|
||||
function file_entity_file_display_content_type_admin_title($subtype, $conf, $context) {
|
||||
return t('"@s" content', array('@s' => $context->identifier));
|
||||
}
|
||||
37
samples/Pascal/image_url.inc
Normal file
37
samples/Pascal/image_url.inc
Normal file
@@ -0,0 +1,37 @@
|
||||
function GetUnixMangaImageURL: Boolean;
|
||||
var
|
||||
i: Integer;
|
||||
l: TStringList;
|
||||
s: String;
|
||||
begin
|
||||
l := TStringList.Create;
|
||||
s := manager.container.PageContainerLinks[workCounter];
|
||||
Result := GetPage(TObject(l), s , manager.container.Manager.retryConnect);
|
||||
|
||||
if Self.Terminated then
|
||||
begin
|
||||
l.Free;
|
||||
parse.Free;
|
||||
Exit;
|
||||
end;
|
||||
|
||||
parse := TStringList.Create;
|
||||
Parser := THTMLParser.Create(PChar(l.Text));
|
||||
Parser.OnFoundTag := OnTag;
|
||||
Parser.OnFoundText := OnText;
|
||||
Parser.Exec;
|
||||
Parser.Free;
|
||||
l.Free;
|
||||
if parse.Count > 0 then
|
||||
begin
|
||||
for i := 0 to parse.Count - 1 do
|
||||
begin
|
||||
if (Pos('STYLE="border', parse[i]) > 0) and (Pos('<IMG', parse[i]) > 0) then
|
||||
begin
|
||||
manager.container.PageLinks[workCounter] := Trim(GetVal(parse[i], 'SRC'));
|
||||
Break;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
parse.Free;
|
||||
end;
|
||||
56
samples/Pascal/libc.inc
Normal file
56
samples/Pascal/libc.inc
Normal file
@@ -0,0 +1,56 @@
|
||||
{
|
||||
This file is part of the Free Component Library (FCL)
|
||||
Copyright (c) 1999-2002 by the Free Pascal development team
|
||||
|
||||
BIOS functions unit for Nintendo DS
|
||||
Copyright (c) 2006 by Francesco Lombardi
|
||||
|
||||
See the file COPYING.FPC, included in this distribution,
|
||||
for details about the copyright.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
*****************************************************************************}
|
||||
|
||||
function __errno: plongint; cdecl; export;
|
||||
begin
|
||||
|
||||
end;
|
||||
|
||||
|
||||
function S_ISBLK(m: longint): boolean; inline;
|
||||
begin
|
||||
result := (m and _IFMT) = _IFBLK;
|
||||
end;
|
||||
|
||||
function S_ISCHR(m: longint): boolean; inline;
|
||||
begin
|
||||
result := (m and _IFMT) = _IFCHR;
|
||||
end;
|
||||
|
||||
function S_ISDIR(m: longint): boolean; inline;
|
||||
begin
|
||||
result := (m and _IFMT) = _IFDIR;
|
||||
end;
|
||||
|
||||
function S_ISFIFO(m: longint): boolean; inline;
|
||||
begin
|
||||
result := (m and _IFMT) = _IFIFO;
|
||||
end;
|
||||
|
||||
function S_ISREG(m: longint): boolean; inline;
|
||||
begin
|
||||
result := (m and _IFMT) = _IFREG;
|
||||
end;
|
||||
|
||||
function S_ISLNK(m: longint): boolean; inline;
|
||||
begin
|
||||
result := (m and _IFMT) = _IFLNK;
|
||||
end;
|
||||
|
||||
function S_ISSOCK(m: longint): boolean; inline;
|
||||
begin
|
||||
result := (m and _IFMT) = _IFSOCK;
|
||||
end;
|
||||
502
samples/Pascal/vmops_impl.inc
Normal file
502
samples/Pascal/vmops_impl.inc
Normal file
@@ -0,0 +1,502 @@
|
||||
operator+(a, b: TVector)res: TVector;
|
||||
var
|
||||
i, an, bn, rn: Integer;
|
||||
begin
|
||||
an := Length(a);
|
||||
bn := Length(b);
|
||||
rn := math.max(an, bn);
|
||||
SetLength(res, rn);
|
||||
for i := 0 to rn - 1 do res[i] := a[i mod an] + b[i mod bn];
|
||||
end;
|
||||
|
||||
operator+(a: TVector; b: Double)res: TVector;
|
||||
var
|
||||
i, n: Integer;
|
||||
begin
|
||||
n := Length(a);
|
||||
SetLength(res, n);
|
||||
for i := 0 to n - 1 do res[i] := a[i] + b;
|
||||
end;
|
||||
|
||||
operator+(a: Double; b: TVector)res: TVector;
|
||||
var
|
||||
i, n: Integer;
|
||||
begin
|
||||
n := Length(b);
|
||||
SetLength(res, n);
|
||||
for i := 0 to n - 1 do res[i] := a + b[i];
|
||||
end;
|
||||
|
||||
operator-(a: TVector)res: TVector;
|
||||
var
|
||||
i, n: Integer;
|
||||
begin
|
||||
n := Length(a);
|
||||
SetLength(res, n);
|
||||
for i := 0 to n - 1 do res[i] := -a[i];
|
||||
end;
|
||||
|
||||
operator-(a, b: TVector)res: TVector;
|
||||
var
|
||||
i, an, bn, rn: Integer;
|
||||
begin
|
||||
an := Length(a);
|
||||
bn := Length(b);
|
||||
rn := math.max(an, bn);
|
||||
SetLength(res, rn);
|
||||
for i := 0 to rn - 1 do res[i] := a[i mod an] - b[i mod bn];
|
||||
end;
|
||||
|
||||
operator-(a: TVector; b: Double)res: TVector;
|
||||
var
|
||||
i, n: Integer;
|
||||
begin
|
||||
n := Length(a);
|
||||
SetLength(res, n);
|
||||
for i := 0 to n - 1 do res[i] := a[i] - b;
|
||||
end;
|
||||
|
||||
operator-(a: Double; b: TVector)res: TVector;
|
||||
var
|
||||
i, n: Integer;
|
||||
begin
|
||||
n := Length(b);
|
||||
SetLength(res, n);
|
||||
for i := 0 to n - 1 do res[i] := a - b[i];
|
||||
end;
|
||||
|
||||
operator*(a, b: TVector)res: TVector;
|
||||
var
|
||||
i, an, bn, rn: Integer;
|
||||
begin
|
||||
an := Length(a);
|
||||
bn := Length(b);
|
||||
rn := math.max(an, bn);
|
||||
SetLength(res, rn);
|
||||
for i := 0 to rn - 1 do res[i] := a[i mod an] * b[i mod bn];
|
||||
end;
|
||||
|
||||
operator*(a: TVector; b: Double)res: TVector;
|
||||
var
|
||||
i, n: Integer;
|
||||
begin
|
||||
n := Length(a);
|
||||
SetLength(res, n);
|
||||
for i := 0 to n - 1 do res[i] := a[i] * b;
|
||||
end;
|
||||
|
||||
operator*(a: Double; b: TVector)res: TVector;
|
||||
var
|
||||
i, n: Integer;
|
||||
begin
|
||||
n := Length(b);
|
||||
SetLength(res, n);
|
||||
for i := 0 to n - 1 do res[i] := a * b[i];
|
||||
end;
|
||||
|
||||
operator/(a, b: TVector)res: TVector;
|
||||
var
|
||||
i, an, bn, rn: Integer;
|
||||
begin
|
||||
an := Length(a);
|
||||
bn := Length(b);
|
||||
rn := math.max(an, bn);
|
||||
SetLength(res, rn);
|
||||
for i := 0 to rn - 1 do res[i] := a[i mod an] / b[i mod bn];
|
||||
end;
|
||||
|
||||
operator/(a: TVector; b: Double)res: TVector;
|
||||
var
|
||||
i, n: Integer;
|
||||
begin
|
||||
n := Length(a);
|
||||
SetLength(res, n);
|
||||
for i := 0 to n - 1 do res[i] := a[i] / b;
|
||||
end;
|
||||
|
||||
operator/(a: Double; b: TVector)res: TVector;
|
||||
var
|
||||
i, n: Integer;
|
||||
begin
|
||||
n := Length(b);
|
||||
SetLength(res, n);
|
||||
for i := 0 to n - 1 do res[i] := a / b[i];
|
||||
end;
|
||||
|
||||
operator**(a, b: Double)res: Double;
|
||||
begin
|
||||
if IsNan(a) or IsNan(b) then res := NaN
|
||||
else if b = Infinity then begin
|
||||
if a = NegInfinity then res := NaN
|
||||
else case sign(a) of
|
||||
1: res := Infinity;
|
||||
0: res := 0;
|
||||
-1: res := NegInfinity;
|
||||
end;
|
||||
end else if b = NegInfinity then begin
|
||||
if a = NegInfinity then res := NaN
|
||||
else case sign(a) of
|
||||
1: res := 0;
|
||||
0: res := Infinity;
|
||||
-1: res := 0;
|
||||
end;
|
||||
end else res := power(a, b);
|
||||
end;
|
||||
|
||||
operator**(a, b: TVector)res: TVector;
|
||||
var
|
||||
i, an, bn, rn: Integer;
|
||||
begin
|
||||
an := Length(a);
|
||||
bn := Length(b);
|
||||
rn := math.max(an, bn);
|
||||
SetLength(res, rn);
|
||||
for i := 0 to rn - 1 do res[i] := a[i mod an] ** b[i mod bn];
|
||||
end;
|
||||
|
||||
operator**(a: TVector; b: Double)res: TVector;
|
||||
var
|
||||
i, n: Integer;
|
||||
begin
|
||||
n := Length(a);
|
||||
SetLength(res, n);
|
||||
for i := 0 to n - 1 do res[i] := a[i] ** b;
|
||||
end;
|
||||
|
||||
operator**(a: Double; b: TVector)res: TVector;
|
||||
var
|
||||
i, n: Integer;
|
||||
begin
|
||||
n := Length(b);
|
||||
SetLength(res, n);
|
||||
for i := 0 to n - 1 do res[i] := a ** b[i];
|
||||
end;
|
||||
|
||||
operator><(a: TVector; b: TVector)res: TMatrix;
|
||||
var
|
||||
i, an, bn, rn: Integer;
|
||||
begin
|
||||
an := Length(a);
|
||||
bn := Length(b);
|
||||
if an * bn = 0 then Exit(nil);
|
||||
rn := math.max(an, bn);
|
||||
SetLength(res, 1);
|
||||
SetLength(res[0], 1);
|
||||
res[0][0] := 0;
|
||||
for i := 0 to rn - 1 do res[0][0] := res[0][0] + a[i mod an] * b[i mod bn];
|
||||
end;
|
||||
|
||||
operator+(a: TMatrix; b: TMatrix)res: TMatrix;
|
||||
var
|
||||
i, an: Integer;
|
||||
begin
|
||||
an := Length(a);
|
||||
SetLength(res, an);
|
||||
for i := 0 to an - 1 do res[i] := a[i] + b[i];
|
||||
end;
|
||||
|
||||
operator+(a: TMatrix; b: Double)res: TMatrix;
|
||||
var
|
||||
i, n: Integer;
|
||||
begin
|
||||
n := Length(a);
|
||||
SetLength(res, n);
|
||||
for i := 0 to n - 1 do res[i] := a[i] + b;
|
||||
end;
|
||||
|
||||
operator+(a: Double; b: TMatrix)res: TMatrix;
|
||||
var
|
||||
i, n: Integer;
|
||||
begin
|
||||
n := Length(b);
|
||||
SetLength(res, n);
|
||||
for i := 0 to n - 1 do res[i] := a + b[i];
|
||||
end;
|
||||
|
||||
operator+(a: TMatrix; b: TVector)res: TMatrix;
|
||||
begin
|
||||
res := a + matrix(b, Length(a), Length(a[0]));
|
||||
end;
|
||||
|
||||
operator+(a: TVector; b: TMatrix)res: TMatrix;
|
||||
begin
|
||||
res := b + matrix(a, Length(b), Length(b[0]));
|
||||
end;
|
||||
|
||||
operator-(a: TMatrix)res: TMatrix;
|
||||
var
|
||||
i, n: Integer;
|
||||
begin
|
||||
n := Length(a);
|
||||
SetLength(res, n);
|
||||
for i := 0 to n - 1 do res[i] := -a[i];
|
||||
end;
|
||||
|
||||
operator-(a: TMatrix; b: TMatrix)res: TMatrix;
|
||||
var
|
||||
i, an: Integer;
|
||||
begin
|
||||
an := Length(a);
|
||||
SetLength(res, an);
|
||||
for i := 0 to an - 1 do res[i] := a[i] - b[i];
|
||||
end;
|
||||
|
||||
operator-(a: TMatrix; b: Double)res: TMatrix;
|
||||
var
|
||||
i, n: Integer;
|
||||
begin
|
||||
n := Length(a);
|
||||
SetLength(res, n);
|
||||
for i := 0 to n - 1 do res[i] := a[i] - b;
|
||||
end;
|
||||
|
||||
operator-(a: Double; b: TMatrix)res: TMatrix;
|
||||
var
|
||||
i, n: Integer;
|
||||
begin
|
||||
n := Length(b);
|
||||
SetLength(res, n);
|
||||
for i := 0 to n - 1 do res[i] := a - b[i];
|
||||
end;
|
||||
|
||||
operator-(a: TMatrix; b: TVector)res: TMatrix;
|
||||
begin
|
||||
res := a - matrix(b, Length(a), Length(a[0]));
|
||||
end;
|
||||
|
||||
operator-(a: TVector; b: TMatrix)res: TMatrix;
|
||||
begin
|
||||
res := b - matrix(a, Length(b), Length(b[0]));
|
||||
end;
|
||||
|
||||
operator*(a: TMatrix; b: TMatrix)res: TMatrix;
|
||||
var
|
||||
i, an: Integer;
|
||||
begin
|
||||
an := Length(a);
|
||||
SetLength(res, an);
|
||||
for i := 0 to an - 1 do res[i] := a[i] * b[i];
|
||||
end;
|
||||
|
||||
operator*(a: TMatrix; b: Double)res: TMatrix;
|
||||
var
|
||||
i, n: Integer;
|
||||
begin
|
||||
n := Length(a);
|
||||
SetLength(res, n);
|
||||
for i := 0 to n - 1 do res[i] := a[i] * b;
|
||||
end;
|
||||
|
||||
operator*(a: Double; b: TMatrix)res: TMatrix;
|
||||
var
|
||||
i, n: Integer;
|
||||
begin
|
||||
n := Length(b);
|
||||
SetLength(res, n);
|
||||
for i := 0 to n - 1 do res[i] := a * b[i];
|
||||
end;
|
||||
|
||||
operator*(a: TMatrix; b: TVector)res: TMatrix;
|
||||
begin
|
||||
res := a * matrix(b, Length(a), Length(a[0]));
|
||||
end;
|
||||
|
||||
operator*(a: TVector; b: TMatrix)res: TMatrix;
|
||||
begin
|
||||
res := b * matrix(a, Length(b), Length(b[0]));
|
||||
end;
|
||||
|
||||
operator/(a: TMatrix; b: TMatrix)res: TMatrix;
|
||||
var
|
||||
i, an: Integer;
|
||||
begin
|
||||
an := Length(a);
|
||||
SetLength(res, an);
|
||||
for i := 0 to an - 1 do res[i] := a[i] / b[i];
|
||||
end;
|
||||
|
||||
operator/(a: TMatrix; b: Double)res: TMatrix;
|
||||
var
|
||||
i, n: Integer;
|
||||
begin
|
||||
n := Length(a);
|
||||
SetLength(res, n);
|
||||
for i := 0 to n - 1 do res[i] := a[i] / b;
|
||||
end;
|
||||
|
||||
operator/(a: Double; b: TMatrix)res: TMatrix;
|
||||
var
|
||||
i, n: Integer;
|
||||
begin
|
||||
n := Length(b);
|
||||
SetLength(res, n);
|
||||
for i := 0 to n - 1 do res[i] := a / b[i];
|
||||
end;
|
||||
|
||||
operator/(a: TMatrix; b: TVector)res: TMatrix;
|
||||
begin
|
||||
res := a / matrix(b, Length(a), Length(a[0]));
|
||||
end;
|
||||
|
||||
operator/(a: TVector; b: TMatrix)res: TMatrix;
|
||||
begin
|
||||
res := b / matrix(a, Length(b), Length(b[0]));
|
||||
end;
|
||||
|
||||
operator**(a: TMatrix; b: TMatrix)res: TMatrix;
|
||||
var
|
||||
i, an: Integer;
|
||||
begin
|
||||
an := Length(a);
|
||||
SetLength(res, an);
|
||||
for i := 0 to an - 1 do res[i] := a[i] ** b[i];
|
||||
end;
|
||||
|
||||
operator**(a: TMatrix; b: Double)res: TMatrix;
|
||||
var
|
||||
i, n: Integer;
|
||||
begin
|
||||
n := Length(a);
|
||||
SetLength(res, n);
|
||||
for i := 0 to n - 1 do res[i] := a[i] ** b;
|
||||
end;
|
||||
|
||||
operator**(a: Double; b: TMatrix)res: TMatrix;
|
||||
var
|
||||
i, n: Integer;
|
||||
begin
|
||||
n := Length(b);
|
||||
SetLength(res, n);
|
||||
for i := 0 to n - 1 do res[i] := a ** b[i];
|
||||
end;
|
||||
|
||||
operator**(a: TMatrix; b: TVector)res: TMatrix;
|
||||
begin
|
||||
res := a ** matrix(b, Length(a), Length(a[0]));
|
||||
end;
|
||||
|
||||
operator**(a: TVector; b: TMatrix)res: TMatrix;
|
||||
begin
|
||||
res := b ** matrix(a, Length(b), Length(b[0]));
|
||||
end;
|
||||
|
||||
operator><(a: TMatrix; b: TMatrix)res: TMatrix;
|
||||
var
|
||||
i, j, n, m: Integer;
|
||||
begin
|
||||
n := Length(a);
|
||||
m := Length(b);
|
||||
if (n = 1) and (m = 1) then Exit(vector(a) >< vector(b));
|
||||
SetLength(res, n);
|
||||
for i := 0 to n - 1 do begin
|
||||
j := 0;
|
||||
res[i] := a[i][j] * b[j];
|
||||
for j := 1 to m - 1 do res[i] := res[i] + a[i][j] * b[j];
|
||||
end;
|
||||
end;
|
||||
|
||||
operator><(a: TMatrix; b: TVector)res: TMatrix;
|
||||
begin
|
||||
res := a >< matrix(b, 1, Length(b));
|
||||
end;
|
||||
|
||||
operator><(a: TVector; b: TMatrix)res: TMatrix;
|
||||
begin
|
||||
res := matrix(a, 1, Length(a)) >< b;
|
||||
end;
|
||||
|
||||
function vector(a: array of const): TVector;
|
||||
var
|
||||
i, n: Integer;
|
||||
begin
|
||||
n := Length(a);
|
||||
SetLength(Result, n);
|
||||
for i := 0 to n - 1 do case a[i].VType of
|
||||
vtInteger: Result[i] := a[i].VInteger;
|
||||
vtExtended: Result[i] := a[i].VExtended^;
|
||||
vtCurrency: Result[i] := a[i].VCurrency^;
|
||||
vtInt64: Result[i] := a[i].VInt64^;
|
||||
end;
|
||||
end;
|
||||
|
||||
function vector(a: TMatrix): TVector; inline;
|
||||
var
|
||||
i, j, n, m : Integer;
|
||||
begin
|
||||
n := Length(a);
|
||||
if n = 0 then Exit(nil);
|
||||
m := Length(a[0]);
|
||||
if m = 0 then Exit(nil);
|
||||
SetLength(Result, m * n);
|
||||
for i := 0 to m - 1 do
|
||||
for j := 0 to n - 1 do
|
||||
Result[i * n + j] := a[j][i];
|
||||
end;
|
||||
|
||||
function matrix(data: TVector; nrow, ncol: Integer; byrow: Boolean): TMatrix;
|
||||
var
|
||||
i, j, n, c: Integer;
|
||||
begin
|
||||
n := Length(data);
|
||||
if n = 0 then Exit(nil);
|
||||
if (nrow = 0) and (ncol = 0) then ncol := 1;
|
||||
if nrow = 0 then nrow := (n div ncol) + sign(n mod ncol);
|
||||
if ncol = 0 then ncol := (n div nrow) + sign(n mod nrow);
|
||||
SetLength(Result, nrow);
|
||||
for i := 0 to nrow - 1 do begin
|
||||
SetLength(Result[i], ncol);
|
||||
for j := 0 to ncol - 1 do begin
|
||||
if byrow then c := i * ncol + j else c := j * nrow + i;
|
||||
Result[i][j] := data[c mod n];
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
function matrix(data: TMatrix; nrow, ncol: Integer; byrow: Boolean): TMatrix;
|
||||
begin
|
||||
Result := matrix(vector(data), nrow, ncol, byrow);
|
||||
end;
|
||||
|
||||
function rep(data: TVector; times: TVector): TVector;
|
||||
var
|
||||
i, j, n, m, s, c: Integer;
|
||||
begin
|
||||
Result := nil;
|
||||
n := Length(data);
|
||||
m := Length(times);
|
||||
if n * m = 0 then Exit;
|
||||
s := 0;
|
||||
for i := 0 to n - 1 do begin
|
||||
c := trunc(times[i mod m]);
|
||||
if c > 0 then s += c;
|
||||
end;
|
||||
SetLength(Result, s);
|
||||
c := 0;
|
||||
for i := 0 to n - 1 do begin
|
||||
s := trunc(times[i mod m]);
|
||||
for j := 1 to s do begin
|
||||
Result[c] := data[i];
|
||||
Inc(c);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
function rep(data: TVector; len: Integer): TVector;
|
||||
var
|
||||
i, j, n: Integer;
|
||||
begin
|
||||
n := Length(data);
|
||||
SetLength(Result, n * len);
|
||||
if n = 0 then Exit;
|
||||
for i := 0 to len - 1 do
|
||||
for j := 0 to n - 1 do
|
||||
Result[i * n + j] := data[j];
|
||||
end;
|
||||
|
||||
function rep(data: Double; len: Integer): TVector;
|
||||
var
|
||||
i: Integer;
|
||||
begin
|
||||
SetLength(Result, len);
|
||||
for i := 0 to len - 1 do Result[i] := data;
|
||||
end;
|
||||
23
samples/SQL/hostcache_set_state.inc
Normal file
23
samples/SQL/hostcache_set_state.inc
Normal file
@@ -0,0 +1,23 @@
|
||||
# Helper for hostcache_*.test
|
||||
|
||||
# Set a known initial state for the test
|
||||
|
||||
flush status;
|
||||
flush hosts;
|
||||
flush user_resources;
|
||||
flush privileges;
|
||||
|
||||
# Print critical setup
|
||||
|
||||
select @@global.debug;
|
||||
select @@global.max_connect_errors;
|
||||
select @@global.max_user_connections;
|
||||
select @@global.max_connections;
|
||||
|
||||
# Make sure there are no remaining records that can change the test outcome
|
||||
|
||||
select `User`, `Host` from mysql.`user` where `host` like '%\\%%';
|
||||
select `User`, `Host` from mysql.`user` where `user` like '192.%';
|
||||
select `User`, `Host` from mysql.`user` where `user` like '2001:%';
|
||||
select `User`, `Host` from mysql.`user` where `user` like 'santa.claus.%';
|
||||
|
||||
246
samples/SourcePawn/Check.inc
Normal file
246
samples/SourcePawn/Check.inc
Normal file
@@ -0,0 +1,246 @@
|
||||
// Checkpoint Manager
|
||||
// (c) João Pedro Lopes, All right's reserved
|
||||
//
|
||||
// Feel free to change any line above, as long as you post the 'fix' / 'patch' at the forum
|
||||
// and send a copy to jplopes@live.com.pt
|
||||
|
||||
/* natives
|
||||
native CreateCheckpoint(ownerid, chpid, Float:posX, Float:posY, Float:posZ, Float:size); // Creates a checkpoint
|
||||
native SetCheckpointInterior(chpid, interiorid); // Changes the checkpoint interior
|
||||
native SetCheckpointVirtualWorld(chpid, VirtualWorldID); // Changes the Checkpoint vWorld
|
||||
native ToggleCheckpointActive(chpid, bool:active); // Deactivates / Activates the checkpoint
|
||||
native ChangeCheckpointOwner(chpid, owner); // Change the checkpoint owner
|
||||
native RemoveCheckpoint(chpid); // Removes the specified checkpoint
|
||||
native StartCheckpointSeeking(); // Starts seeking for each individual
|
||||
native StopCheckpointSeeking(); // Stops the system
|
||||
native VerifyCheckpoint(playerid); // Place this at OnPlayerEnterCheckpoint
|
||||
*/
|
||||
|
||||
// Function Forwards
|
||||
forward public OnCheckpointEnter(playerid, checkpointid);
|
||||
|
||||
#if defined _CHECKPOINT_MANAGER_INCLUDED
|
||||
#endinput
|
||||
#endif
|
||||
|
||||
#define _CHECKPOINT_MANAGER_INCLUDED
|
||||
#pragma library CheckpointManager
|
||||
|
||||
#include <a_samp>
|
||||
|
||||
#define MAX_CHECKPOINTS 200
|
||||
#define CHECKPOINT_SEEKER_DELAY 300
|
||||
|
||||
#define GLOBAL_OWNER_ID -1
|
||||
|
||||
|
||||
// CHECKPOINT ENUMERATION
|
||||
enum _checkpointEnum{
|
||||
_chp_populated, // Is this slot of the memory populated?
|
||||
|
||||
_chp_id, // The ID of the checkpoint
|
||||
_chp_owner, // The ID of the player who this checkpoint is visible too
|
||||
|
||||
Float:_chp_posX, // The X position of this checkpoint
|
||||
Float:_chp_posY, // The Y position of this checkpoint
|
||||
Float:_chp_posZ, // The Z position of this checkpoint
|
||||
Float:_chp_size, // The checkpoint size
|
||||
Float:_chp_viewDistance, // The checkpoint view distance
|
||||
|
||||
bool:_chp_active, // Is this checkpoint active?
|
||||
|
||||
_chp_interior_id, // The interior id of this checkpoint
|
||||
_chp_world_id // The world id of this checkpoint
|
||||
};
|
||||
|
||||
// DATA ARRAYS
|
||||
new _checkpoints[MAX_CHECKPOINTS][_checkpointEnum];
|
||||
new _p_VisibleCheckpoint[MAX_PLAYERS];
|
||||
new _chp_manager_timer_id;
|
||||
|
||||
// DATA VARIABLES
|
||||
new _totalCheckpoints;
|
||||
|
||||
// --------------------------------------------------------------------------------------------------------
|
||||
// Creates a new checkpoint with some initial data
|
||||
stock CreateCheckpoint(__ownerid, __chpid, Float:__posX, Float:__posY, Float:__posZ, Float:__size){
|
||||
// Max checkpoint reached?
|
||||
if(_totalCheckpoints == MAX_CHECKPOINTS) return 0;
|
||||
|
||||
// First checkpoint? Setting everything to unpopulated
|
||||
if(!_totalCheckpoints){
|
||||
for(new i; i < MAX_PLAYERS; i++) _p_VisibleCheckpoint[i] = -1;
|
||||
for(new i; i < MAX_CHECKPOINTS; i++){
|
||||
_checkpoints[i][_chp_populated] = false;
|
||||
}
|
||||
|
||||
// Sending the Initialization Info
|
||||
printf("[Checkpoint Manager : Version 0.1.1b] System Initialized...", __chpid);
|
||||
}
|
||||
|
||||
// Getting the first open slot
|
||||
new _slot;
|
||||
for(new i = 0; i < MAX_CHECKPOINTS; i++){
|
||||
if(!_checkpoints[i][_chp_populated]){
|
||||
_slot = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Adding the new checkpoint
|
||||
_checkpoints[_slot][_chp_populated] = true;
|
||||
_checkpoints[_slot][_chp_id] = __chpid;
|
||||
_checkpoints[_slot][_chp_owner] = __ownerid;
|
||||
_checkpoints[_slot][_chp_posX] = __posX;
|
||||
_checkpoints[_slot][_chp_posY] = __posY;
|
||||
_checkpoints[_slot][_chp_posZ] = __posZ;
|
||||
_checkpoints[_slot][_chp_size] = __size;
|
||||
_checkpoints[_slot][_chp_viewDistance] = 50.0;
|
||||
_checkpoints[_slot][_chp_active] = true;
|
||||
_checkpoints[_slot][_chp_interior_id] = 0;
|
||||
_checkpoints[_slot][_chp_world_id] = 0;
|
||||
|
||||
printf("[Checkpoint Manager] Checkpoint created (%d) at slot %d", __chpid, _slot);
|
||||
printf("Checkpoint Position: { %f, %f, %f }", _checkpoints[_slot][_chp_posX], _checkpoints[_slot][_chp_posY], _checkpoints[_slot][_chp_posZ]);
|
||||
|
||||
_totalCheckpoints++;
|
||||
return 1;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------
|
||||
stock SetCheckpointInterior(__chpid, __interiorid){
|
||||
new _slot = __ChpSlotByID(__chpid);
|
||||
if(_slot > -1){
|
||||
// Valid slot?
|
||||
_checkpoints[_slot][_chp_interior_id] = __interiorid;
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------
|
||||
stock SetCheckpointVirtualWorld(__chpid, __virtual_world_id){
|
||||
new _slot = __ChpSlotByID(__chpid);
|
||||
if(_slot > -1){
|
||||
_checkpoints[_slot][_chp_world_id] = __virtual_world_id;
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
stock ToggleCheckpointActive(__chpid, bool:__active){
|
||||
new _slot = __ChpSlotByID(__chpid);
|
||||
if(_slot > -1){
|
||||
_checkpoints[_slot][_chp_active] = __active;
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
stock ChangeCheckpointOwner(__chpid, __owner){
|
||||
new _slot = __ChpSlotByID(__chpid);
|
||||
if(_slot > -1){
|
||||
_checkpoints[_slot][_chp_owner] = __owner;
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
stock RemoveCheckpoint(__chpid){
|
||||
new _slot = __ChpSlotByID(__chpid);
|
||||
if(_slot > -1){
|
||||
// Deleting the checkpoint
|
||||
_checkpoints[_slot][_chp_populated] = false;
|
||||
_checkpoints[_slot][_chp_id] = -1;
|
||||
_checkpoints[_slot][_chp_owner] = 255;
|
||||
_checkpoints[_slot][_chp_posX] = -1;
|
||||
_checkpoints[_slot][_chp_posY] = -1;
|
||||
_checkpoints[_slot][_chp_posZ] = -1;
|
||||
_checkpoints[_slot][_chp_size] = -1;
|
||||
_checkpoints[_slot][_chp_viewDistance] = -1;
|
||||
_checkpoints[_slot][_chp_active] = false;
|
||||
_checkpoints[_slot][_chp_interior_id] = -1;
|
||||
_checkpoints[_slot][_chp_world_id] = -1;
|
||||
_totalCheckpoints--;
|
||||
printf("\n[Checkpoint Manager] Checkpoint removed (ID: %d)", __chpid);
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------
|
||||
// Gets the checkpoint slot by id
|
||||
stock __ChpSlotByID(__chpid){
|
||||
for(new i; i < MAX_CHECKPOINTS; i++){
|
||||
if(_checkpoints[i][_chp_id] == __chpid) return i;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
forward CheckpointSeeker();
|
||||
stock StartCheckpointSeeking(){
|
||||
_chp_manager_timer_id = SetTimer("CheckpointSeeker", CHECKPOINT_SEEKER_DELAY, 1);
|
||||
return 1;
|
||||
}
|
||||
|
||||
stock StopCheckpointSeeking(){
|
||||
KillTimer(_chp_manager_timer_id);
|
||||
return 1;
|
||||
}
|
||||
|
||||
public CheckpointSeeker(){
|
||||
new Float:__posX, Float:__posY, Float:__posZ;
|
||||
new __interior;
|
||||
new __virtualWorld;
|
||||
for(new i; i < MAX_PLAYERS; i++)
|
||||
{
|
||||
if(!IsPlayerConnected(i)) continue;
|
||||
|
||||
GetPlayerPos(i, Float:__posX, Float:__posY, Float:__posZ);
|
||||
// Is the player near a checkpoint?
|
||||
if(_p_VisibleCheckpoint[i] > -1)
|
||||
{
|
||||
// If the player is no longer near that point
|
||||
if(__posX < (_checkpoints[_p_VisibleCheckpoint[i]][_chp_posX] - _checkpoints[_p_VisibleCheckpoint[i]][_chp_viewDistance])
|
||||
|| __posX > (_checkpoints[_p_VisibleCheckpoint[i]][_chp_posX] + _checkpoints[_p_VisibleCheckpoint[i]][_chp_viewDistance])
|
||||
|| __posY < (_checkpoints[_p_VisibleCheckpoint[i]][_chp_posY] - _checkpoints[_p_VisibleCheckpoint[i]][_chp_viewDistance])
|
||||
|| __posY > (_checkpoints[_p_VisibleCheckpoint[i]][_chp_posY] + _checkpoints[_p_VisibleCheckpoint[i]][_chp_viewDistance])){
|
||||
DisablePlayerCheckpoint(i);
|
||||
_p_VisibleCheckpoint[i] = -1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Getting the player Interior and virtual world
|
||||
__interior = GetPlayerInterior(i);
|
||||
__virtualWorld = GetPlayerVirtualWorld(i);
|
||||
|
||||
// Looking for a new checkpoint
|
||||
for(new j = 0; j < MAX_CHECKPOINTS; j++){
|
||||
if(!_checkpoints[j][_chp_populated]) continue;
|
||||
if((_checkpoints[j][_chp_owner] != i) && (_checkpoints[j][_chp_owner] != -1)) continue;
|
||||
if(_checkpoints[j][_chp_interior_id] != __interior) continue;
|
||||
if(_checkpoints[j][_chp_world_id] != __virtualWorld) continue;
|
||||
|
||||
if(__posX > (_checkpoints[j][_chp_posX] - _checkpoints[j][_chp_viewDistance])
|
||||
&& __posX < (_checkpoints[j][_chp_posX] + _checkpoints[j][_chp_viewDistance])
|
||||
&& __posY > (_checkpoints[j][_chp_posY] - _checkpoints[j][_chp_viewDistance])
|
||||
&& __posY < (_checkpoints[j][_chp_posY] + _checkpoints[j][_chp_viewDistance])){
|
||||
SetPlayerCheckpoint(i, _checkpoints[j][_chp_posX], _checkpoints[j][_chp_posY], _checkpoints[j][_chp_posZ], _checkpoints[j][_chp_size]);
|
||||
_p_VisibleCheckpoint[i] = j;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
stock VerifyCheckpoint(__playerid){
|
||||
if(_p_VisibleCheckpoint[__playerid] >= 0){
|
||||
OnCheckpointEnter(__playerid, _checkpoints[_p_VisibleCheckpoint[__playerid]][_chp_id]);
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
91
samples/SourcePawn/fixed.inc
Normal file
91
samples/SourcePawn/fixed.inc
Normal file
@@ -0,0 +1,91 @@
|
||||
/* Fixed point arithmetic
|
||||
*
|
||||
* (c) Copyright 1998-2011, ITB CompuPhase
|
||||
* This file is provided as is (no warranties).
|
||||
*/
|
||||
#pragma library Fixed
|
||||
|
||||
const fround_method: {
|
||||
fround_round = 0,
|
||||
fround_floor,
|
||||
fround_ceil,
|
||||
fround_tozero,
|
||||
fround_unbiased
|
||||
}
|
||||
|
||||
native Fixed:fixed(value);
|
||||
native Fixed:strfixed(const string[]);
|
||||
native Fixed:fmul(Fixed:oper1, Fixed:oper2);
|
||||
native Fixed:fdiv(Fixed:dividend, Fixed:divisor);
|
||||
native Fixed:ffract(Fixed:value);
|
||||
native fround(Fixed:value, fround_method:method=fround_round);
|
||||
native Fixed:fpower(Fixed:value, exponent);
|
||||
native Fixed:fsqroot(Fixed:value);
|
||||
native Fixed:fabs(Fixed:value);
|
||||
|
||||
#pragma rational Fixed(3)
|
||||
|
||||
/* user defined operators */
|
||||
native Fixed:operator*(Fixed:oper1, Fixed:oper2) = fmul;
|
||||
native Fixed:operator/(Fixed:oper1, Fixed:oper2) = fdiv;
|
||||
native Fixed:operator=(oper) = fixed;
|
||||
|
||||
stock Fixed:operator++(Fixed:oper)
|
||||
return oper + fixed(1);
|
||||
|
||||
stock Fixed:operator--(Fixed:oper)
|
||||
return oper - fixed(1);
|
||||
|
||||
stock Fixed:operator*(Fixed:oper1, oper2)
|
||||
return Fixed: (_:oper1 * oper2); /* "*" is commutative */
|
||||
|
||||
stock Fixed:operator/(Fixed:oper1, oper2)
|
||||
return oper1 / fixed(oper2);
|
||||
|
||||
stock Fixed:operator/(oper1, Fixed:oper2)
|
||||
return fdiv(fixed(oper1), oper2);
|
||||
|
||||
stock Fixed:operator+(Fixed:oper1, oper2)
|
||||
return oper1 + fixed(oper2); /* "+" is commutative */
|
||||
|
||||
stock Fixed:operator-(Fixed:oper1, oper2)
|
||||
return oper1 - fixed(oper2);
|
||||
|
||||
stock Fixed:operator-(oper1, Fixed:oper2)
|
||||
return fixed(oper1) - oper2;
|
||||
|
||||
stock bool:operator>(Fixed:oper1, oper2)
|
||||
return oper1 > fixed(oper2);
|
||||
|
||||
stock bool:operator>(oper1, Fixed:oper2)
|
||||
return fixed(oper1) > oper2;
|
||||
|
||||
stock bool:operator>=(Fixed:oper1, oper2)
|
||||
return oper1 >= fixed(oper2);
|
||||
|
||||
stock bool:operator>=(oper1, Fixed:oper2)
|
||||
return fixed(oper1) >= oper2;
|
||||
|
||||
stock bool:operator<(Fixed:oper1, oper2)
|
||||
return oper1 < fixed(oper2);
|
||||
|
||||
stock bool:operator<(oper1, Fixed:oper2)
|
||||
return fixed(oper1) < oper2;
|
||||
|
||||
stock bool:operator<=(Fixed:oper1, oper2)
|
||||
return oper1 <= fixed(oper2);
|
||||
|
||||
stock bool:operator<=(oper1, Fixed:oper2)
|
||||
return fixed(oper1) <= oper2;
|
||||
|
||||
stock bool:operator==(Fixed:oper1, oper2) /* "==" is commutative */
|
||||
return oper1 == fixed(oper2);
|
||||
|
||||
stock bool:operator!=(Fixed:oper1, oper2) /* "!=" is commutative */
|
||||
return oper1 != fixed(oper2);
|
||||
|
||||
/* forbidden operations */
|
||||
forward operator%(Fixed:oper1, Fixed:oper2);
|
||||
forward operator%(Fixed:oper1, oper2);
|
||||
forward operator%(oper1, Fixed:oper2);
|
||||
|
||||
289
samples/SourcePawn/mfile.inc
Normal file
289
samples/SourcePawn/mfile.inc
Normal file
@@ -0,0 +1,289 @@
|
||||
/* mFile 1.1 by Minokon
|
||||
*
|
||||
* (c) Copyright by Minokon 2010
|
||||
* (c) y_files Copyright by Y_Less 2010
|
||||
*
|
||||
*/
|
||||
|
||||
#if defined _mfile_included
|
||||
#endinput
|
||||
#endif
|
||||
#define _mfile_included
|
||||
|
||||
//Defines
|
||||
#define MAX_LINE_SIZE 80 //Max lenght of one line in file
|
||||
#define MAX_KEY_SIZE 50 //Max lenght of key in line (to =)
|
||||
#define MAX_VALUE_SIZE 50 //Max lenght of value in line (past =)
|
||||
#define TMP_FILE "tmpfile.txt"
|
||||
|
||||
//Natives
|
||||
/*
|
||||
native mCreateFile(const file[]);
|
||||
native mRemoveFile(const file[]);
|
||||
native mClearFile(const file[]);
|
||||
native bool:mFileExist(const file[]);
|
||||
native mRenameFile(const file[], const newname[]);
|
||||
native mFindFile(const name[], dest[], &index, sizename=sizeof dest);
|
||||
native mCreateDir(const name[]);
|
||||
native mRenameDir(const dir[], const newname[]);
|
||||
native mFindDir(const name[], dest[], &index, sizename=sizeof dest);
|
||||
native mHowLines(const file[]);
|
||||
native mRemoveNewLine(string[]); //removes "\n" from string
|
||||
native mGetString(const file[], const key[], bool:ignorecase=false);
|
||||
native mGetInt(const file[], const key[], bool:ignorecase=false);
|
||||
native mGetFloat(const file[], const key[], &Float:value);
|
||||
native mSetString(const file[], const key[], const new_value[]);
|
||||
native mSetInt(const file[], const key[], new_value);
|
||||
native mSetFloat(const file[], const key[], Float:new_value);
|
||||
native mIsSet(const file[], const key[], bool:ignorecase=false);
|
||||
native mUnSet(const file[], const key[]);
|
||||
native mIsFileEmpty(const file[]);
|
||||
native y_files
|
||||
*/
|
||||
//y_files by Y_Less Functions
|
||||
native ffind(const pattern[], filename[], len, &idx);
|
||||
native frename(const oldname[], const newname[]);
|
||||
native dfind(const pattern[], filename[], len, &idx);
|
||||
native dcreate(const name[]);
|
||||
native drename(const oldname[], const newname[]);
|
||||
|
||||
//Forwards
|
||||
forward OnFileCreated(file[]);
|
||||
forward OnFileRemoved(file[]);
|
||||
forward OnFileCleared(file[]);
|
||||
forward OnFileRenamed(oldname[], newname[]);
|
||||
forward OnDirCreated(dir[]);
|
||||
forward OnDirRenamed(oldname[], newname[]);
|
||||
|
||||
stock mCreateFile(const file[])
|
||||
{
|
||||
if(fexist(file)) fremove(file);
|
||||
new File:mfile = fopen(file, io_write);
|
||||
fclose(mfile);
|
||||
CallLocalFunction("OnFileCreated", "s", file);
|
||||
return 1;
|
||||
}
|
||||
|
||||
stock mRemoveFile(const file[])
|
||||
{
|
||||
CallLocalFunction("OnFileRemoved", "s", file);
|
||||
return fremove(file);
|
||||
}
|
||||
|
||||
stock mClearFile(const file[])
|
||||
{
|
||||
if(!fremove(file)) return 0;
|
||||
new File:mfile = fopen(file, io_write);
|
||||
fclose(mfile);
|
||||
CallLocalFunction("OnFileCleared", "s", file);
|
||||
return 1;
|
||||
}
|
||||
|
||||
stock bool:mFileExist(const file[])
|
||||
if(fexist(file)) return true; //dla ciekawych: fexist nie zwraca booleanu
|
||||
else return false;
|
||||
|
||||
stock mRenameFile(const file[], const newname[])
|
||||
{
|
||||
CallLocalFunction("OnFileRenamed", "ss", file, newname);
|
||||
return frename(file, newname);
|
||||
}
|
||||
|
||||
stock mFindFile(const name[], dest[], &index, sizename=sizeof dest)
|
||||
return ffind(name, dest, sizename, index);
|
||||
|
||||
stock mCreateDir(const name[])
|
||||
{
|
||||
CallLocalFunction("OnDirCreated", "s", name);
|
||||
return dcreate(name);
|
||||
}
|
||||
|
||||
stock mRenameDir(const dir[], const newname[])
|
||||
{
|
||||
CallLocalFunction("OnDirRenamed", "ss", dir, newname);
|
||||
return drename(dir, newname);
|
||||
}
|
||||
|
||||
stock mFindDir(const name[], dest[], &index, sizename=sizeof dest)
|
||||
return dfind(name, dest, sizename, index);
|
||||
|
||||
stock mHowLines(const file[])
|
||||
{
|
||||
new lines, str[MAX_LINE_SIZE];
|
||||
new File:mfile = fopen(file, io_read);
|
||||
while(fread(mfile, str)) lines++;
|
||||
fclose(mfile);
|
||||
return lines;
|
||||
}
|
||||
|
||||
stock mRemoveNewLine(string[])
|
||||
{
|
||||
new pos = strfind(string, "\n");
|
||||
if(pos != -1)
|
||||
{
|
||||
strdel(string, pos, pos+2);
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
stock mGetString(const file[], const key[], bool:ignorecase=false)
|
||||
{
|
||||
//Create file if not exists
|
||||
if(!fexist(file))
|
||||
{
|
||||
new File:created = fopen(file, io_write);
|
||||
fclose(created);
|
||||
}
|
||||
new //Variables
|
||||
File:mfile = fopen(file, io_read), //Open file
|
||||
str[MAX_LINE_SIZE],
|
||||
str2[MAX_KEY_SIZE],
|
||||
str3[MAX_VALUE_SIZE],
|
||||
pos;
|
||||
//Find key in file
|
||||
while(fread(mfile, str))
|
||||
{
|
||||
pos = strfind(str, "=", ignorecase);
|
||||
strmid(str2, str, 0, pos);
|
||||
if(!strcmp(str2, key, ignorecase, strlen(key)+1))
|
||||
{
|
||||
strmid(str3, str, pos+1, strlen(str));
|
||||
mRemoveNewLine(str3);
|
||||
break;
|
||||
}
|
||||
}
|
||||
fclose(mfile);
|
||||
return str3;
|
||||
}
|
||||
|
||||
stock mGetInt(const file[], const key[], bool:ignorecase=false)
|
||||
return strval(mGetString(file, key, ignorecase));
|
||||
|
||||
stock mGetFloat(const file[], const key[], &Float:value, bool:ignorecase=false)
|
||||
value = floatstr(mGetString(file, key, ignorecase));
|
||||
|
||||
stock mSetString(const file[], const key[], const new_value[])
|
||||
{
|
||||
//Create file if not exists
|
||||
if(!fexist(file))
|
||||
{
|
||||
new File:created = fopen(file, io_write);
|
||||
fclose(created);
|
||||
}
|
||||
new //Variables
|
||||
str[MAX_LINE_SIZE],
|
||||
str2[MAX_KEY_SIZE],
|
||||
str3[MAX_LINE_SIZE],
|
||||
bool:lFinded = false;
|
||||
//Open file
|
||||
new File:mfile = fopen(file, io_read);
|
||||
//Create cache file
|
||||
new File:tmpfile = fopen(TMP_FILE, io_write);
|
||||
fclose(tmpfile);
|
||||
//Open cache file
|
||||
tmpfile = fopen(TMP_FILE, io_append);
|
||||
format(str3, sizeof str3, "%s=%s\n", key, new_value);
|
||||
while(fread(mfile, str))
|
||||
{
|
||||
strmid(str2, str, 0, strfind(str, "="));
|
||||
if(!strcmp(str2, key))
|
||||
{
|
||||
fwrite(tmpfile, str3);
|
||||
lFinded = true;
|
||||
}
|
||||
else
|
||||
fwrite(tmpfile, str);
|
||||
}
|
||||
if(!lFinded) //if line not found
|
||||
fwrite(tmpfile, str3);
|
||||
//Close and remove old file
|
||||
fclose(mfile);
|
||||
fremove(file);
|
||||
//Close cache file and rename it
|
||||
fclose(tmpfile);
|
||||
frename(TMP_FILE, file);
|
||||
return 1;
|
||||
}
|
||||
|
||||
stock mSetInt(const file[], const key[], new_value)
|
||||
{
|
||||
new str[MAX_VALUE_SIZE];
|
||||
valstr(str, new_value);
|
||||
mSetString(file, key, str);
|
||||
return 1;
|
||||
}
|
||||
|
||||
stock mSetFloat(const file[], const key[], Float:new_value)
|
||||
{
|
||||
new str[MAX_VALUE_SIZE];
|
||||
format(str, sizeof str, "%f", new_value);
|
||||
return mSetString(file, key, str);
|
||||
}
|
||||
|
||||
stock bool:mIsSet(const file[], const key[], bool:ignorecase=false)
|
||||
{
|
||||
//If fexists return false
|
||||
if(!fexist(file)) return false;
|
||||
new //Variables
|
||||
File:mfile = fopen(file, io_read), //Open file
|
||||
str[MAX_LINE_SIZE],
|
||||
str2[MAX_KEY_SIZE],
|
||||
bool:finded = false;
|
||||
//Find key in file
|
||||
while(fread(mfile, str))
|
||||
{
|
||||
strmid(str2, str, 0, strfind(str, "="));
|
||||
if(!strcmp(str2, key, ignorecase, strlen(key)+1))
|
||||
{
|
||||
finded = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
fclose(mfile);
|
||||
return finded;
|
||||
}
|
||||
|
||||
stock mUnSet(const file[], const key[])
|
||||
{
|
||||
if(!fexist(file)) return 0;
|
||||
new //Variables
|
||||
str[MAX_LINE_SIZE],
|
||||
str2[MAX_KEY_SIZE];
|
||||
//Open file
|
||||
new File:mfile = fopen(file, io_read);
|
||||
//Create cache file
|
||||
new File:tmpfile = fopen(TMP_FILE, io_write);
|
||||
fclose(tmpfile);
|
||||
//Open cache file
|
||||
tmpfile = fopen(TMP_FILE, io_append);
|
||||
while(fread(mfile, str))
|
||||
{
|
||||
strmid(str2, str, 0, strfind(str, "="));
|
||||
if(strcmp(str2, key) != 0)
|
||||
fwrite(tmpfile, str);
|
||||
}
|
||||
//Close and remove old file
|
||||
fclose(mfile);
|
||||
fremove(file);
|
||||
//Close cache file and rename it
|
||||
fclose(tmpfile);
|
||||
frename(TMP_FILE, file);
|
||||
return 1;
|
||||
}
|
||||
|
||||
stock bool:mIsFileEmpty(const file[])
|
||||
{
|
||||
if(!fexist(file)) return true;
|
||||
new File:mfile = fopen(file, io_read);
|
||||
if(flength(mfile) <= 1)
|
||||
{
|
||||
fclose(mfile);
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
fclose(mfile);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
633
samples/SourcePawn/y_testing.inc
Normal file
633
samples/SourcePawn/y_testing.inc
Normal file
@@ -0,0 +1,633 @@
|
||||
/**--------------------------------------------------------------------------**\
|
||||
====================================
|
||||
y_testing - Run unit tests easilly
|
||||
====================================
|
||||
Description:
|
||||
Runs any functions named as tests when the Testing_Run function is called.
|
||||
Legal:
|
||||
Version: MPL 1.1
|
||||
|
||||
The contents of this file are subject to the Mozilla Public License Version
|
||||
1.1 (the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
http://www.mozilla.org/MPL/
|
||||
|
||||
Software distributed under the License is distributed on an "AS IS" basis,
|
||||
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
for the specific language governing rights and limitations under the
|
||||
License.
|
||||
|
||||
The Original Code is the YSI testing include.
|
||||
|
||||
The Initial Developer of the Original Code is Alex "Y_Less" Cole.
|
||||
Portions created by the Initial Developer are Copyright (C) 2011
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributors:
|
||||
ZeeX, koolk, JoeBullet/Google63, g_aSlice/Slice
|
||||
|
||||
Thanks:
|
||||
JoeBullet/Google63 - Handy arbitrary ASM jump code using SCTRL.
|
||||
ZeeX - Very productive conversations.
|
||||
koolk - IsPlayerinAreaEx code.
|
||||
TheAlpha - Danish translation.
|
||||
breadfish - German translation.
|
||||
Fireburn - Dutch translation.
|
||||
yom - French translation.
|
||||
50p - Polish translation.
|
||||
Zamaroht - Spanish translation.
|
||||
Dracoblue, sintax, mabako, Xtreme, other coders - Producing other modes
|
||||
for me to strive to better.
|
||||
Pixels^ - Running XScripters where the idea was born.
|
||||
Matite - Pestering me to release it and using it.
|
||||
|
||||
Very special thanks to:
|
||||
Thiadmer - PAWN, whose limits continue to amaze me!
|
||||
Kye/Kalcor - SA:MP.
|
||||
SA:MP Team past, present and future - SA:MP.
|
||||
|
||||
Version:
|
||||
1.0
|
||||
Changelog:
|
||||
16/02/12:
|
||||
Added better error reporting (less verbose passes).
|
||||
Removed "Tests:".
|
||||
Added player requiring tests.
|
||||
25/10/10:
|
||||
Integrated in to YSI.
|
||||
06/08/10:
|
||||
First version
|
||||
</remarks>
|
||||
\**--------------------------------------------------------------------------**/
|
||||
|
||||
/*#if defined _inc_a_samp || defined _samp_included || defined _inc_y_version
|
||||
#error y_testing must be the VERY FIRST include in your mode if being used.
|
||||
#endif
|
||||
|
||||
// Now we redefined "native" to do something clever!
|
||||
// "IsPlayerAttachedObjectSlotUsed" is an issue for us...
|
||||
|
||||
// "y_renative" allows native functions to be declared without constantly trying
|
||||
// to redefine it.
|
||||
#include "internal\y_renative"
|
||||
|
||||
#define native%0(%1); _YSI_NO_TAG_NATIVE:_YSI_RE_NATIVE<%0@|||%1|||%0>_YSI_RE_STOCK<%0|||%1|||_:%0@>
|
||||
|
||||
//stock%0(%1){printf(_:_YSI_NO_SQUARE:"native "#%0" called");return _:%0@(%1);}
|
||||
|
||||
#define _YSI_RE_STOCK<%0|||%1|||%2> stock%0(%1){print(_:_YSI_NO_SQUARE:"native "#%0" called");return %2(%1);}
|
||||
|
||||
#define _YSI_NO_SQUARE:%0);%1(%2[%3]%4);} _YSI_NO_SQUARE:%0);%1(%2%4);}
|
||||
|
||||
//#define _YSI_NO_TAG_NATIVE:_YSI_RE_NATIVE<%0:%1|||%2|||%3:%4>%5{%6;%7:%8:%9} _YSI_RE_NATIVE<%1|||%2|||%4>%5{%6;return%8:%9}
|
||||
#define _YSI_NO_TAG_NATIVE:_YSI_RE_NATIVE<%0:%1|||%2|||%3:%4>_YSI_RE_STOCK<%5:%6|||%7|||_:%8:%9> _YSI_RE_NATIVE<%1|||%2|||%4>_YSI_RE_STOCK<%5:%6|||%7|||%8:%9>*/
|
||||
|
||||
#include <a_samp>
|
||||
|
||||
#if defined YSI_TESTS
|
||||
#if defined INCLUDE_TESTS
|
||||
#error Incompatible testing options (YSI_TESTS + INCLUDE_TESTS)
|
||||
#endif
|
||||
#if !defined RUN_TESTS
|
||||
#define RUN_TESTS
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined INCLUDE_TESTS
|
||||
#define RUN_TESTS
|
||||
#define Debug_PrintT va_printf
|
||||
#elseif defined RUN_TESTS
|
||||
#define _AUTO_RUN_TESTS
|
||||
#define Debug_PrintT va_printf
|
||||
#else
|
||||
#if _DEBUG > 0 || defined _YSI_SPECIAL_DEBUG
|
||||
#define RUN_TESTS
|
||||
#define _AUTO_RUN_TESTS
|
||||
//#if defined _YSI_SPECIAL_DEBUG
|
||||
// #define TP printf
|
||||
// //#define TC(%0); %0
|
||||
#define Debug_PrintT va_printf
|
||||
//#else
|
||||
// //#define TP P:0
|
||||
// //#define TC C:0
|
||||
//#endif
|
||||
#else
|
||||
#define Debug_PrintT(%0);
|
||||
// #define Tests:%1() stock bool:Tests_@%1()
|
||||
// #define Test:%1() stock bool:Test_@%1()
|
||||
// #define TestInit:%1() stock Init_@%1()
|
||||
// #define TestClose:%1() stock Shut_@%1()
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#define Y_TESTING_DIALOG_ID (0x7974) // "yt"
|
||||
|
||||
#define TEST_TRUE(%0) Testing_Test(!!%0)
|
||||
#define TEST_FALSE(%0) Testing_Test(!%0)
|
||||
#define TEST_NULL(%0) Testing_Test(0 == %0)
|
||||
#define TEST_NOT_NULL(%0) Testing_Test(0 != %0)
|
||||
#define TEST_N(%0,%1) Testing_Test(%1 == %0)
|
||||
|
||||
#define TEST_TRUE_EX(%0,%2) Testing_Test(bool:(%0), (%2))
|
||||
#define TEST_FALSE_EX(%0,%2) Testing_Test(!(%0), (%2))
|
||||
#define TEST_NULL_EX(%0,%2) Testing_Test((%0) == 0, (%2))
|
||||
#define TEST_N_EX(%0,%1,%2) Testing_Test((%0) == (%1), (%2))
|
||||
|
||||
#define TEST_MSG "\2\2\2\2\2"
|
||||
#define TEST_FAILED "FAIL:"
|
||||
#define TEST_PASSED "PASS!"
|
||||
//#define TEST_FAILED "*** Test Failed:"
|
||||
//#define TEST_PASSED "*** Test Passed:"
|
||||
|
||||
#define _Y_TESTEQ(%0) "\"%0\"")
|
||||
#define _Y_TESTDQ:_Y_TESTEQ(%0"%1"%2) _Y_TESTDQ:_Y_TESTEQ(%0\x22;%1\x22;%2)
|
||||
//#define _Y_TESTCB:_Y_TESTDQ:_Y_TESTEQ(%0)%1) _Y_TESTCB:_Y_TESTDQ:_Y_TESTEQ(%0\x29;%1)
|
||||
#define _Y_TESTCB:_Y_TESTDQ:_Y_TESTEQ(%0)%1) _Y_TESTCB:_Y_TESTDQ:_Y_TESTEQ(%0\x29;%1)
|
||||
#define _Y_TESTOB:_Y_TESTCB:_Y_TESTDQ:_Y_TESTEQ(%0(%1) _Y_TESTOB:_Y_TESTCB:_Y_TESTDQ:_Y_TESTEQ(%0\x28;%1)
|
||||
|
||||
#define ASSERT(%0) Testing_Test(%0,TEST_MSG" %s", _Y_TESTOB:_Y_TESTCB:_Y_TESTDQ:_Y_TESTEQ(%0)
|
||||
#define ASSERT_TRUE(%0) ASSERT(!!%0) //Testing_Test(!!%0,__name)
|
||||
#define ASSERT_FALSE(%0) ASSERT(!%0) //Testing_Test(!%0,__name)
|
||||
#define ASSERT_NULL(%0) ASSERT(0 == %0) //Testing_Test(0==%0,__name)
|
||||
#define ASSERT_N:%1(%0) ASSERT(%1 == %0) //Testing_Test(%1==%0,__name)
|
||||
|
||||
#define ASK(%0) Testing_Ask(playerid,%0)
|
||||
|
||||
static stock
|
||||
YSI_g_sFailMessage[512],
|
||||
YSI_g_sPlayer = cellmax,
|
||||
bool:YSI_g_sAsked,
|
||||
YSI_g_sTests,
|
||||
YSI_g_sFails;
|
||||
|
||||
#if defined RUN_TESTS
|
||||
#define Test:%1() forward bool:Tezt_@%1(); public bool:Tezt_@%1() for(new string:__name[]=#%1,bool:__once=(printf("*** Test %s start", __name) || TRUE);__once;__once=(printf(" ") && FALSE))
|
||||
//#define Tests:%1() forward bool:Test_@%1(); public bool:Test_@%1() for(new string:__name[]=#%1,bool:__once=(printf("*** Test %s start", __name) || TRUE);__once;__once=(printf(" ") && FALSE))
|
||||
#define TestInit:%1() forward Init_@%1(); public Init_@%1() for(new string:__name[]=#%1,bool:__once=TRUE;__once;__once=(printf(" ", __name) && FALSE))
|
||||
#define TestClose:%1() forward Shut_@%1(); public Shut_@%1() for(new string:__name[]=#%1,bool:__once=TRUE;__once;__once=(printf(" ", __name) && FALSE))
|
||||
|
||||
#define PTest:%1(%2) forward bool:Tezp_@%1(%2); public bool:Tezp_@%1(%2) for(new string:__name[]=#%1,bool:__once=(printf("*** Player Test %s start", __name) || TRUE);__once;__once=(printf(" ") && FALSE))
|
||||
//#define Tests:%1() forward bool:Test_@%1(); public bool:Test_@%1() for(new string:__name[]=#%1,bool:__once=(printf("*** Test %s start", __name) || TRUE);__once;__once=(printf(" ") && FALSE))
|
||||
#define PTestInit:%1(%2) forward Inip_@%1(%2); public Inip_@%1(%2) for(new string:__name[]=#%1,bool:__once=TRUE;__once;__once=(printf(" ", __name) && FALSE))
|
||||
#define PTestClose:%1(%2) forward Shup_@%1(%2); public Shup_@%1(%2) for(new string:__name[]=#%1,bool:__once=TRUE;__once;__once=(printf(" ", __name) && FALSE))
|
||||
#else
|
||||
#define Test:%1() stock bool:Test_@%1()
|
||||
#define TestInit:%1() stock Init_@%1()
|
||||
#define TestClose:%1() stock Shut_@%1()
|
||||
|
||||
#define PTest:%1(%2) stock bool:Test_@%1(%2)
|
||||
#define PTestInit:%1(%2) stock Init_@%1(%2)
|
||||
#define PTestClose:%1(%2) stock Shut_@%1(%2)
|
||||
#endif
|
||||
|
||||
// These all need to come AFTER the types are defined in case the have tests.
|
||||
#include "internal\y_version"
|
||||
|
||||
#include "y_amx"
|
||||
#include "internal\y_shortfunc"
|
||||
#include "y_debug"
|
||||
|
||||
#include "internal\y_natives"
|
||||
|
||||
#include "y_va"
|
||||
|
||||
/**--------------------------------------------------------------------------**\
|
||||
<summary>Testing_Ask</summary>
|
||||
<param name="playerid">Player to ask a question to.</param>
|
||||
<param name="str[]">What to ask.</param>
|
||||
<param name="va_args<>">Additional data.</param>
|
||||
<returns>
|
||||
-
|
||||
</returns>
|
||||
<remarks>
|
||||
Calls a dialog to ask the player if the given test actually passed.
|
||||
</remarks>
|
||||
\**--------------------------------------------------------------------------**/
|
||||
|
||||
stock Testing_Ask(playerid, str[] = "", va_args<>)
|
||||
{
|
||||
va_format(YSI_g_sFailMessage, sizeof (YSI_g_sFailMessage), str, va_start<2>);
|
||||
ShowPlayerDialog(playerid, Y_TESTING_DIALOG_ID, DIALOG_STYLE_MSGBOX, "Did the test pass?", YSI_g_sFailMessage, "Yes", "No");
|
||||
YSI_g_sAsked = true;
|
||||
}
|
||||
|
||||
stock Testing_Test(bool:x, str[] = "", va_args<>)
|
||||
{
|
||||
P:3("Testing_Test called: %i, \"%s\"", x, str);
|
||||
++YSI_g_sTests;
|
||||
if (!x)
|
||||
{
|
||||
++YSI_g_sFails;
|
||||
if (numargs() == 2)
|
||||
{
|
||||
P:T(TEST_FAILED " %s", va_start<1>);
|
||||
//printf("*** Test failed: %s", str);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (str[0] == '\2')
|
||||
{
|
||||
strunpack(str, !TEST_FAILED, 6);
|
||||
str[5] = ' ';
|
||||
}
|
||||
P:T(str, va_start<2>);
|
||||
}
|
||||
}
|
||||
#if defined TEST_SHOW_PASSES
|
||||
else /*if (numargs() == 2)
|
||||
{
|
||||
P:T(TEST_PASSED " %s", va_start<1>);
|
||||
}
|
||||
else
|
||||
{
|
||||
P:T(str, va_start<2>);
|
||||
if (str[0] == '\2')
|
||||
{
|
||||
strunpack(str, !TEST_PASSED, 17);
|
||||
str[16] = ' ';
|
||||
}
|
||||
printf(str);
|
||||
P:T(str, va_start<2>);*/
|
||||
{
|
||||
P:T(TEST_PASSED, va_start<2>);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
/**--------------------------------------------------------------------------**\
|
||||
<summary>Testing_Run</summary>
|
||||
<param name="&tests">Number of tests run.</param>
|
||||
<param name="&fails">Number of tests which failed.</param>
|
||||
<param name="buffer[33]">The name of the first test which failed.</param>
|
||||
<returns>
|
||||
Wether all tests were sucessful or not.
|
||||
</returns>
|
||||
<remarks>
|
||||
-
|
||||
|
||||
native Testing_Run(&tests, &fails, buffer[33] = "");
|
||||
|
||||
</remarks>
|
||||
\**--------------------------------------------------------------------------**/
|
||||
|
||||
stock bool:Testing_Run(&tests, &fails, lastfail[33] = "", bool:p = false)
|
||||
{
|
||||
P:3("bool:Testing_Run called: %i, %i, \"%s\", %i", tests, fails, lastfail, p);
|
||||
#pragma unused p, lastfail
|
||||
#if defined RUN_TESTS
|
||||
P:2("Testing_Run() called");
|
||||
new
|
||||
idx,
|
||||
buffer[32];
|
||||
while ((idx = AMX_GetPublicName(idx, buffer, "Tezt_@")))
|
||||
{
|
||||
strunpack(buffer, buffer);
|
||||
//++YSI_g_sTests;
|
||||
// Call the setup function if there is one.
|
||||
buffer[0] = 'I';
|
||||
buffer[1] = 'n';
|
||||
buffer[2] = 'i';
|
||||
buffer[3] = 't';
|
||||
CallLocalFunction(buffer, "");
|
||||
// Call the test.
|
||||
buffer[0] = 'T';
|
||||
buffer[1] = 'e';
|
||||
buffer[2] = 'z';
|
||||
buffer[3] = 't';
|
||||
fails = YSI_g_sFails;
|
||||
P:5("Testing_Run(): Calling %s", buffer[6]);
|
||||
CallLocalFunction(buffer, "");
|
||||
#if !defined TEST_SHOW_PASSES
|
||||
if (YSI_g_sFails == fails)
|
||||
{
|
||||
printf(TEST_PASSED);
|
||||
printf(" ");
|
||||
}
|
||||
#endif
|
||||
/*if (YSI_g_sFails != fails)
|
||||
{
|
||||
if (YSI_g_sFails)
|
||||
{
|
||||
++YSI_g_sFails;
|
||||
}
|
||||
else
|
||||
{
|
||||
fails = 0;
|
||||
// Copy the string over.
|
||||
while ((lastfail[fails] = buffer[fails + 6])) ++fails;
|
||||
YSI_g_sFails = 1;
|
||||
}
|
||||
//C:1(if (p) printf("*** Test failed: %s", buffer[fails + 6]););
|
||||
}*/
|
||||
// Call the shutdown function if there is one.
|
||||
buffer[0] = 'S';
|
||||
buffer[1] = 'h';
|
||||
buffer[2] = 'u';
|
||||
buffer[3] = 't';
|
||||
CallLocalFunction(buffer, "");
|
||||
}
|
||||
tests = YSI_g_sTests;
|
||||
fails = YSI_g_sFails;
|
||||
return fails == 0;
|
||||
#else
|
||||
#pragma unused tests, fails, lastfail
|
||||
return true;
|
||||
#endif
|
||||
}
|
||||
|
||||
/**--------------------------------------------------------------------------**\
|
||||
<summary>Testing_Player</summary>
|
||||
<param name="playerid">Player to test on.</param>
|
||||
<param name="&idx">Next test to run.</param>
|
||||
<param name="&tests">Number of tests run.</param>
|
||||
<param name="&fails">Number of tests which failed.</param>
|
||||
<param name="buffer[33]">The name of the first test which failed.</param>
|
||||
<returns>
|
||||
Wether all tests were sucessful or not.
|
||||
</returns>
|
||||
<remarks>
|
||||
-
|
||||
|
||||
native Testing_Run(&tests, &fails, buffer[33] = "");
|
||||
|
||||
</remarks>
|
||||
\**--------------------------------------------------------------------------**/
|
||||
|
||||
stock bool:Testing_Player(playerid, &idx, &tests, &fails, lastfail[33] = "", bool:p = false)
|
||||
{
|
||||
P:3("bool:Testing_Player called: %i, %i, %i, %i, \"%s\", %i", playerid, idx, tests, fails, lastfail, p);
|
||||
#pragma unused p
|
||||
#if defined RUN_TESTS
|
||||
P:2("Testing_Player() called");
|
||||
new
|
||||
//idx,
|
||||
buffer[32];
|
||||
//while ((idx = AMX_GetPublicName(idx, buffer, "Tezt_@")))
|
||||
if ((idx = AMX_GetPublicName(idx, buffer, "Tezp_@")))
|
||||
{
|
||||
strunpack(buffer, buffer);
|
||||
//++YSI_g_sTests;
|
||||
// Call the setup function if there is one.
|
||||
buffer[0] = 'I';
|
||||
buffer[1] = 'n';
|
||||
buffer[2] = 'i';
|
||||
buffer[3] = 'p';
|
||||
CallLocalFunction(buffer, "");
|
||||
// Call the test.
|
||||
buffer[0] = 'T';
|
||||
buffer[1] = 'e';
|
||||
buffer[2] = 'z';
|
||||
buffer[3] = 'p';
|
||||
fails = YSI_g_sFails;
|
||||
P:5("Testing_Player(): Calling %s", buffer[6]);
|
||||
CallLocalFunction(buffer, "");
|
||||
#if !defined TEST_SHOW_PASSES
|
||||
if (YSI_g_sFails == fails)
|
||||
{
|
||||
printf(TEST_PASSED);
|
||||
printf(" ");
|
||||
}
|
||||
#endif
|
||||
/*if (YSI_g_sFails != fails)
|
||||
{
|
||||
if (YSI_g_sFails)
|
||||
{
|
||||
++YSI_g_sFails;
|
||||
}
|
||||
else
|
||||
{
|
||||
fails = 0;
|
||||
// Copy the string over.
|
||||
while ((lastfail[fails] = buffer[fails + 6])) ++fails;
|
||||
YSI_g_sFails = 1;
|
||||
}
|
||||
//C:1(if (p) printf("*** Test failed: %s", buffer[fails + 6]););
|
||||
}*/
|
||||
// Call the shutdown function if there is one.
|
||||
//buffer[0] = 'S';
|
||||
//buffer[1] = 'h';
|
||||
//buffer[2] = 'u';
|
||||
//buffer[3] = 'p';
|
||||
//CallLocalFunction(buffer, "");
|
||||
}
|
||||
tests = YSI_g_sTests;
|
||||
fails = YSI_g_sFails;
|
||||
return fails == 0;
|
||||
#else
|
||||
#pragma unused tests, fails, lastfail
|
||||
return true;
|
||||
#endif
|
||||
}
|
||||
|
||||
#if defined RUN_TESTS
|
||||
/*#define Test:%1() forward bool:Tezt_@%1(); public bool:Tezt_@%1() for(new string:__name[]=#%1,bool:__once=(printf("*** Test %s start", __name) || TRUE);__once;__once=(printf(" ") && FALSE))
|
||||
//#define Tests:%1() forward bool:Test_@%1(); public bool:Test_@%1() for(new string:__name[]=#%1,bool:__once=(printf("*** Test %s start", __name) || TRUE);__once;__once=(printf(" ") && FALSE))
|
||||
#define TestInit:%1() forward Init_@%1(); public Init_@%1() for(new string:__name[]=#%1,bool:__once=TRUE;__once;__once=(printf(" ", __name) && FALSE))
|
||||
#define TestClose:%1() forward Shut_@%1(); public Shut_@%1() for(new string:__name[]=#%1,bool:__once=TRUE;__once;__once=(printf(" ", __name) && FALSE))
|
||||
|
||||
#define PTest:%1(%2) forward bool:Tezp_@%1(%2); public bool:Tezp_@%1(%2) for(new string:__name[]=#%1,bool:__once=(printf("*** Player Test %s start", __name) || TRUE);__once;__once=(printf(" ") && FALSE))
|
||||
//#define Tests:%1() forward bool:Test_@%1(); public bool:Test_@%1() for(new string:__name[]=#%1,bool:__once=(printf("*** Test %s start", __name) || TRUE);__once;__once=(printf(" ") && FALSE))
|
||||
#define PTestInit:%1(%2) forward Inip_@%1(%2); public Inip_@%1(%2) for(new string:__name[]=#%1,bool:__once=TRUE;__once;__once=(printf(" ", __name) && FALSE))
|
||||
#define PTestClose:%1(%2) forward Shup_@%1(%2); public Shup_@%1(%2) for(new string:__name[]=#%1,bool:__once=TRUE;__once;__once=(printf(" ", __name) && FALSE))*/
|
||||
|
||||
#if defined _AUTO_RUN_TESTS
|
||||
#if !defined FILTERSCRIPT
|
||||
// Hook main in gamemodes.
|
||||
main()
|
||||
{
|
||||
// Disable error messages (as we're likely to generate them).
|
||||
state ysi_debug : off;
|
||||
CallLocalFunction("Testing_main", "");
|
||||
new
|
||||
tests,
|
||||
fails;
|
||||
printf(" ");
|
||||
printf(" ||===================|| ");
|
||||
printf(" || STARTING TESTS... || ");
|
||||
printf(" ||===================|| ");
|
||||
printf(" ");
|
||||
Testing_Run(tests, fails, _, true);
|
||||
printf("*** Tests: %d, Fails: %d", tests, fails);
|
||||
if (!fails)
|
||||
{
|
||||
printf(" ");
|
||||
printf(" ||===================|| ");
|
||||
printf(" || ALL TESTS PASSED! || ");
|
||||
printf(" ||===================|| ");
|
||||
printf(" ");
|
||||
}
|
||||
state ysi_debug : on;
|
||||
}
|
||||
|
||||
#define main forward Testing_main(); public Testing_main
|
||||
|
||||
Testing_Next(playerid)
|
||||
{
|
||||
new
|
||||
buffer[32];
|
||||
for ( ; ; )
|
||||
{
|
||||
new
|
||||
fails = YSI_g_sFails;
|
||||
// Get the last test (nicely fails for cellmax).
|
||||
if ((YSI_g_sPlayer = AMX_GetPublicName(YSI_g_sPlayer, buffer, "Tezp_@")))
|
||||
{
|
||||
strunpack(buffer, buffer);
|
||||
// Call the shutdown function if there is one.
|
||||
buffer[0] = 'S';
|
||||
buffer[1] = 'h';
|
||||
buffer[2] = 'u';
|
||||
buffer[3] = 'p';
|
||||
CallLocalFunction(buffer, "i", playerid);
|
||||
}
|
||||
// Get the new test, but don't store the index.
|
||||
if (AMX_GetPublicName(YSI_g_sPlayer, buffer, "Tezp_@"))
|
||||
{
|
||||
YSI_g_sAsked = false;
|
||||
//++YSI_g_sTests;
|
||||
strunpack(buffer, buffer);
|
||||
// Call the setup function if there is one.
|
||||
buffer[0] = 'I';
|
||||
buffer[1] = 'n';
|
||||
buffer[2] = 'i';
|
||||
buffer[3] = 'p';
|
||||
CallLocalFunction(buffer, "i", playerid);
|
||||
// Call the test.
|
||||
buffer[0] = 'T';
|
||||
buffer[1] = 'e';
|
||||
buffer[2] = 'z';
|
||||
buffer[3] = 'p';
|
||||
P:5("Testing_Next(): Calling %s", buffer[6]);
|
||||
CallLocalFunction(buffer, "i", playerid);
|
||||
}
|
||||
else
|
||||
{
|
||||
YSI_g_sAsked = true;
|
||||
// No more tests.
|
||||
printf("*** Tests: %d, Fails: %d", YSI_g_sTests, YSI_g_sFails);
|
||||
if (!YSI_g_sFails)
|
||||
{
|
||||
printf(" ");
|
||||
printf(" ||==========================|| ");
|
||||
printf(" || ALL PLAYER TESTS PASSED! || ");
|
||||
printf(" ||==========================|| ");
|
||||
printf(" ");
|
||||
}
|
||||
}
|
||||
// If the test needs a player but doesn't ask them anything
|
||||
// then we can't wait for "OnDialogResponse" to run the next
|
||||
// one.
|
||||
if (YSI_g_sAsked)
|
||||
{
|
||||
break;
|
||||
}
|
||||
else if (fails == YSI_g_sFails)
|
||||
{
|
||||
printf(TEST_PASSED);
|
||||
}
|
||||
}
|
||||
//while (!YSI_g_sAsked);
|
||||
}
|
||||
|
||||
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
|
||||
{
|
||||
if (dialogid == Y_TESTING_DIALOG_ID)
|
||||
{
|
||||
++YSI_g_sTests;
|
||||
if (response)
|
||||
{
|
||||
// Pass.
|
||||
printf(TEST_PASSED);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Fail.
|
||||
printf(TEST_FAILED " %s", YSI_g_sFailMessage);
|
||||
++YSI_g_sFails;
|
||||
}
|
||||
Testing_Next(playerid);
|
||||
return 1;
|
||||
}
|
||||
#if defined Testing_OnDialogResponse
|
||||
return Testing_OnDialogResponse(playerid, dialogid, response, listitem, inputtext);
|
||||
#else
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
#if defined _ALS_OnDialogResponse
|
||||
#undef OnDialogResponse
|
||||
#else
|
||||
#define _ALS_OnDialogResponse
|
||||
#endif
|
||||
#define OnDialogResponse Testing_OnDialogResponse
|
||||
#if defined Testing_OnDialogResponse
|
||||
forward Testing_OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]);
|
||||
#endif
|
||||
|
||||
public OnPlayerSpawn(playerid)
|
||||
{
|
||||
if (YSI_g_sPlayer == cellmax && !IsPlayerNPC(playerid))
|
||||
{
|
||||
printf(" ");
|
||||
printf(" ||==========================|| ");
|
||||
printf(" || STARTING PLAYER TESTS... || ");
|
||||
printf(" ||==========================|| ");
|
||||
printf(" ");
|
||||
YSI_g_sTests = 0;
|
||||
YSI_g_sFails = 0;
|
||||
Testing_Next(playerid);
|
||||
}
|
||||
#if defined Testing_OnPlayerSpawn
|
||||
return Testing_OnPlayerSpawn(playerid);
|
||||
#else
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
#if defined _ALS_OnPlayerSpawn
|
||||
#undef OnPlayerSpawn
|
||||
#else
|
||||
#define _ALS_OnPlayerSpawn
|
||||
#endif
|
||||
#define OnPlayerSpawn Testing_OnPlayerSpawn
|
||||
#if defined Testing_OnPlayerSpawn
|
||||
forward Testing_OnPlayerSpawn(playerid);
|
||||
#endif
|
||||
#endif
|
||||
#else
|
||||
Testing_RunAll()
|
||||
{
|
||||
// Disable error messages (as we're likely to generate them).
|
||||
state ysi_debug : off;
|
||||
new
|
||||
tests,
|
||||
fails;
|
||||
printf(" ");
|
||||
printf(" ||===================|| ");
|
||||
printf(" || STARTING TESTS... || ");
|
||||
printf(" ||===================|| ");
|
||||
printf(" ");
|
||||
Testing_Run(tests, fails, _, true);
|
||||
printf("*** Tests: %d, Fails: %d", tests, fails);
|
||||
if (!fails)
|
||||
{
|
||||
printf(" ");
|
||||
printf(" ||===================|| ");
|
||||
printf(" || ALL TESTS PASSED! || ");
|
||||
printf(" ||===================|| ");
|
||||
printf(" ");
|
||||
}
|
||||
state ysi_debug : on;
|
||||
}
|
||||
#endif
|
||||
#else
|
||||
//#define Tests:%1() stock bool:Tests_@%1()
|
||||
/*#define Test:%1() stock bool:Test_@%1()
|
||||
#define TestInit:%1() stock Init_@%1()
|
||||
#define TestClose:%1() stock Shut_@%1()
|
||||
|
||||
#define PTest:%1(%2) stock bool:Test_@%1(%2)
|
||||
#define PTestInit:%1(%2) stock Init_@%1(%2)
|
||||
#define PTestClose:%1(%2) stock Shut_@%1(%2)*/
|
||||
#endif
|
||||
18
samples/Text/01_top.ncl
Normal file
18
samples/Text/01_top.ncl
Normal file
@@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<ncl id="topProperty" xmlns="http://www.ncl.org.br/NCL3.0/EDTVProfile">
|
||||
<head>
|
||||
|
||||
<regionBase>
|
||||
<region height="50%" id="imageReg" top="50%"/>
|
||||
</regionBase>
|
||||
|
||||
<descriptorBase>
|
||||
<descriptor id="imageDescriptor" region="imageReg"/>
|
||||
</descriptorBase>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<port component="image" id="entry"/>
|
||||
<media descriptor="imageDescriptor" id="image" src="../resources/images/background.jpg"/>
|
||||
</body>
|
||||
</ncl>
|
||||
34
samples/Text/LIDARLite.ncl
Normal file
34
samples/Text/LIDARLite.ncl
Normal file
@@ -0,0 +1,34 @@
|
||||
G04 DipTrace 2.4.0.2*
|
||||
%INLIDARLite.ncl*%
|
||||
%MOIN*%
|
||||
%ADD11C,0.0394*%
|
||||
%FSLAX44Y44*%
|
||||
G04*
|
||||
G70*
|
||||
G90*
|
||||
G75*
|
||||
G01*
|
||||
%LNBoardOutline*%
|
||||
%LPD*%
|
||||
X0Y23622D2*
|
||||
D11*
|
||||
X27953D1*
|
||||
Y0D1*
|
||||
X0D1*
|
||||
Y23622D1*
|
||||
X591Y23110D2*
|
||||
X13819D1*
|
||||
X591Y591D2*
|
||||
Y11614D1*
|
||||
Y12087D2*
|
||||
Y23110D1*
|
||||
X14291D2*
|
||||
X27520D1*
|
||||
X591Y591D2*
|
||||
X13819D1*
|
||||
X14291D2*
|
||||
X27520D1*
|
||||
Y11614D1*
|
||||
Y12087D2*
|
||||
Y23110D1*
|
||||
M02*
|
||||
22
samples/Text/Site.local.ncl
Normal file
22
samples/Text/Site.local.ncl
Normal file
@@ -0,0 +1,22 @@
|
||||
#define YmakeRoot $(DESTDIR)@prefix@
|
||||
#define ManRoot $(DESTDIR)@mandir@
|
||||
#define LibRoot $(DESTDIR)@libdir@/ncarg
|
||||
#define SharePath $(DESTDIR)@datadir@
|
||||
|
||||
#define BuildWithF90 TRUE
|
||||
#define IncSearch -I/usr/include/netcdf -I/usr/include/udunits2 -I/usr/include/freetype2 -I/usr/include/gdal
|
||||
#define LibSearch -L@libdir@/hdf
|
||||
|
||||
#define BuildNetCDF4 1
|
||||
#define NetCDF4lib -lnetcdf
|
||||
#define BuildCAIRO 1
|
||||
#define CAIROlib -lcairo -lfreetype
|
||||
#define BuildGDAL 1
|
||||
#define GDALlib -lgdal
|
||||
#define BuildHDFEOS 0
|
||||
#define BuildHDFEOS5 0
|
||||
#define BuildTRIANGLE 0
|
||||
#define HDFlib -lmfhdf -ldf -ljpeg -lz
|
||||
#define HDF5lib -lhdf5_hl -lhdf5
|
||||
#define BuildUdunits 1
|
||||
#define UdUnitslib -ludunits2
|
||||
46
samples/Text/main.ncl
Normal file
46
samples/Text/main.ncl
Normal file
@@ -0,0 +1,46 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<!--
|
||||
2008 PUC-RIO/LABORATORIO TELEMIDIA,
|
||||
Some Rights Reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU General Public License version 2 as published by
|
||||
the Free Software Foundation.
|
||||
|
||||
This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. See the GNU General Public License version 2 for more
|
||||
details.
|
||||
|
||||
You should have received a copy of the GNU General Public License version 2
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
-->
|
||||
|
||||
<ncl id="teste" xmlns="http://www.ncl.org.br/NCL3.0/EDTVProfile"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://www.ncl.org.br/NCL3.0/EDTVProfile
|
||||
http://www.ncl.org.br/NCL3.0/profiles/NCL30EDTV.xsd">
|
||||
|
||||
<head>
|
||||
|
||||
<regionBase>
|
||||
<region id="luaRegion" width="100%" height="100%"/>
|
||||
</regionBase>
|
||||
|
||||
<descriptorBase>
|
||||
<descriptor id="luaDesc" region="luaRegion" focusIndex="luaIdx"/>
|
||||
</descriptorBase>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<port id="init" component="lua"/>
|
||||
<media type="application/x-ginga-settings" id="programSettings">
|
||||
<property name="currentKeyMaster" value="luaIdx"/>
|
||||
</media>
|
||||
|
||||
<media id="lua" descriptor="luaDesc" src="game.lua"/>
|
||||
</body>
|
||||
|
||||
</ncl>
|
||||
45
samples/Text/min-help.ncl
Normal file
45
samples/Text/min-help.ncl
Normal file
@@ -0,0 +1,45 @@
|
||||
THE_URL:file://localhost/Users/hubery/Public/ucar/Document/Functions/Built-in/min.shtml
|
||||
THE_TITLE:min
|
||||
NCL Home > Documentation > Functions > General applied math
|
||||
|
||||
min
|
||||
|
||||
Computes the minimum value of a multi-dimensional array.
|
||||
|
||||
Prototype
|
||||
|
||||
function min (
|
||||
value : numeric
|
||||
)
|
||||
|
||||
return_val [1] : numeric
|
||||
|
||||
Arguments
|
||||
|
||||
value
|
||||
|
||||
An array of one or more numeric values of any dimension.
|
||||
|
||||
Return value
|
||||
|
||||
Returns a scalar of the same type as value.
|
||||
|
||||
Description
|
||||
|
||||
This function returns the minimum value for an array of any dimensionality. Missing values are ignored; a missing value
|
||||
is returned only if all values are missing.
|
||||
|
||||
See Also
|
||||
|
||||
max, minind, maxind, dim_min, dim_max, dim_min_n, dim_max_n
|
||||
|
||||
Examples
|
||||
|
||||
Example 1
|
||||
|
||||
f = (/2.1, 3.2, 4.3, 5.4, 6.5, 7.6, 8.7, 9.8/)
|
||||
min_f = min(f)
|
||||
print(min_f) ; Should be 2.1
|
||||
|
||||
|
||||
©2015 UCAR | Privacy Policy | Terms of Use | Contact the Webmaster | Sponsored by NSF
|
||||
21
samples/Text/receiver.ncl
Normal file
21
samples/Text/receiver.ncl
Normal file
@@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<ncl id="sender" xmlns="http://www.ncl.org.br/NCL3.0/EDTVProfile">
|
||||
<head>
|
||||
<regionBase>
|
||||
<region id="rTV" width="100%" height="100%" zIndex="1"/>
|
||||
</regionBase>
|
||||
|
||||
|
||||
<descriptorBase>
|
||||
<descriptor id="dTV" region="rTV" />
|
||||
</descriptorBase>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<port id="pLua" component="lua" />
|
||||
|
||||
<media id="lua" descriptor="dTV" src="receiver.lua" />
|
||||
|
||||
</body>
|
||||
</ncl>
|
||||
40
samples/Text/rmMonAnnCycLLT-help.ncl
Normal file
40
samples/Text/rmMonAnnCycLLT-help.ncl
Normal file
@@ -0,0 +1,40 @@
|
||||
THE_URL:file://localhost/Users/hubery/Public/ucar/Document/Functions/Contributed/rmMonAnnCycLLT.shtml
|
||||
THE_TITLE:rmMonAnnCycLLT
|
||||
NCL Home > Documentation > Functions > Climatology
|
||||
|
||||
rmMonAnnCycLLT
|
||||
|
||||
Removes the annual cycle from "monthly" data.
|
||||
|
||||
Prototype
|
||||
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
|
||||
|
||||
function rmMonAnnCycLLT (
|
||||
x [*][*][*] : numeric
|
||||
)
|
||||
|
||||
return_val [dimsizes(x)] : typeof(x)
|
||||
|
||||
Arguments
|
||||
|
||||
x
|
||||
|
||||
A three-dimensional array of monthly values, dimensioned lat x lon x time. The time dimension must be a multiple of 12.
|
||||
|
||||
Return value
|
||||
|
||||
The results are returned in an array of the same type and dimensionality as x. If the input data contains metadata, these
|
||||
will be retained.
|
||||
|
||||
Description
|
||||
|
||||
This function removes the annual cycle from month (number of months = 12) data and subtracts the long term means from
|
||||
each month.
|
||||
|
||||
See Also
|
||||
|
||||
rmMonAnnCycLLT, rmMonAnnCycTLL, rmMonAnnCycLLLT
|
||||
|
||||
|
||||
©2015 UCAR | Privacy Policy | Terms of Use | Contact the Webmaster | Sponsored by NSF
|
||||
35
samples/Text/zonalAve-help.ncl
Normal file
35
samples/Text/zonalAve-help.ncl
Normal file
@@ -0,0 +1,35 @@
|
||||
THE_URL:file://localhost/Users/hubery/Public/ucar/Document/Functions/Contributed/zonalAve.shtml
|
||||
THE_TITLE:zonalAve
|
||||
NCL Home > Documentation > Functions > General applied math
|
||||
|
||||
zonalAve
|
||||
|
||||
Computes a zonal average of the input array.
|
||||
|
||||
Prototype
|
||||
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
|
||||
|
||||
function zonalAve (
|
||||
x : numeric
|
||||
)
|
||||
|
||||
return_val : typeof(x)
|
||||
|
||||
Arguments
|
||||
|
||||
x
|
||||
|
||||
An array of any size and type.
|
||||
|
||||
Return value
|
||||
|
||||
The results are returned in an array of the same type and one dimension smaller than x. Metadata are preserved.
|
||||
|
||||
Description
|
||||
|
||||
This function computes a zonal average of the input array x. If the input array has a "long_name" or "short_name"
|
||||
attribute, it will be updated.
|
||||
|
||||
|
||||
©2015 UCAR | Privacy Policy | Terms of Use | Contact the Webmaster | Sponsored by NSF
|
||||
167
samples/xBase/sample.prg
Normal file
167
samples/xBase/sample.prg
Normal file
@@ -0,0 +1,167 @@
|
||||
#require "hbtest"
|
||||
|
||||
#pragma linenumber=on
|
||||
|
||||
#include "hbclass.ch"
|
||||
|
||||
#stdout "stdout"
|
||||
#warning "warning"
|
||||
|
||||
#define MYCONST 100
|
||||
#undef MYCONST
|
||||
|
||||
#ifdef __HARBOUR__
|
||||
#else
|
||||
#endif
|
||||
|
||||
#if defined( __HARBOUR__ ) .OR. .T.
|
||||
#elif defined( __HARBOUR__ )
|
||||
#endif
|
||||
|
||||
THREAD STATIC t_var := "thread"
|
||||
|
||||
REQUEST AllTrim
|
||||
ANNOUNCE my_module
|
||||
|
||||
PROCEDURE Main()
|
||||
|
||||
MEMVAR p_var, m_var
|
||||
FIELD fld
|
||||
|
||||
STATIC s_test := "static"
|
||||
LOCAL o := TTest():New( "one", "two" ), tmp
|
||||
LOCAL oError
|
||||
LOCAL bBlock := {| tmp | QOut( tmp ) }
|
||||
LOCAL hHash := { "name" => "value", "name2" => "value2", 2 => 1 }
|
||||
PUBLIC p_var := "public"
|
||||
PRIVATE m_var := "private"
|
||||
PARAMETERS p1
|
||||
|
||||
Set( _SET_DATEFORMAT, "yyyy-mm-dd" )
|
||||
|
||||
CLS
|
||||
@ 10, 10 SAY "Hello world!"
|
||||
|
||||
? hb_ValToExp( o )
|
||||
? m->p1
|
||||
? hHash[ "name" ], hHash[ 2 ]
|
||||
|
||||
FOR tmp := 1 TO 10 STEP 2
|
||||
? tmp
|
||||
NEXT
|
||||
|
||||
FOR EACH tmp IN { "a", "b" } DESCEND
|
||||
? tmp
|
||||
NEXT
|
||||
|
||||
? 10.01 + 2 - 3 / 4 * 5 ^ 6 ** 1
|
||||
? 2 < 1, 2 > 1, 2 >= 1, 2 <= 1, 2 == 1, 2 = 1, 2 != 1, 2 <> 1, 2 # 1
|
||||
? -( 1 + 2 ), "a" $ "ab", 10 % 2
|
||||
|
||||
tmp := 0
|
||||
DO WHILE tmp < 2
|
||||
? tmp++
|
||||
ENDDO
|
||||
|
||||
tmp := 0
|
||||
WHILE tmp < 2
|
||||
? ++tmp
|
||||
IF tmp >= 0xFF
|
||||
LOOP
|
||||
ENDIF
|
||||
EXIT
|
||||
ENDDO
|
||||
|
||||
--tmp
|
||||
tmp--
|
||||
|
||||
IF tmp < -10.0
|
||||
? NIL
|
||||
ELSEIF .F.
|
||||
? 0d19800101
|
||||
ELSE
|
||||
? "string"
|
||||
ENDIF
|
||||
|
||||
DO CASE
|
||||
CASE tmp == 1
|
||||
? "A"
|
||||
OTHERWISE
|
||||
? "B"
|
||||
ENDCASE
|
||||
|
||||
SWITCH tmp
|
||||
CASE 1
|
||||
? "A"
|
||||
EXIT
|
||||
OTHERWISE
|
||||
? "B"
|
||||
ENDSWITCH
|
||||
|
||||
BEGIN SEQUENCE WITH __BreakBlock()
|
||||
BREAK
|
||||
RECOVER USING oError
|
||||
END /* SEQUENCE */
|
||||
|
||||
local_func( @hHash )
|
||||
|
||||
RETURN
|
||||
|
||||
INIT PROCEDURE init_proc()
|
||||
RETURN
|
||||
|
||||
EXIT PROCEDURE exit_proc()
|
||||
RETURN
|
||||
|
||||
PROCEDURE returning_nothing()
|
||||
RETURN
|
||||
|
||||
FUNCTION pub_func()
|
||||
RETURN .T.
|
||||
|
||||
STATIC FUNCTION local_func()
|
||||
RETURN .F.
|
||||
|
||||
CREATE CLASS TTest INHERIT TParent
|
||||
VAR One, Two
|
||||
METHOD New( One )
|
||||
METHOD Test() INLINE QOut( "Hello" )
|
||||
METHOD MethProc()
|
||||
ENDCLASS
|
||||
|
||||
METHOD PROCEDURE MethProc()
|
||||
RETURN
|
||||
|
||||
METHOD New( One ) CLASS TTest
|
||||
|
||||
::super:New()
|
||||
::One := One
|
||||
|
||||
RETURN Self
|
||||
|
||||
CREATE CLASS TParent
|
||||
VAR One
|
||||
METHOD New()
|
||||
ENDCLASS
|
||||
|
||||
METHOD New() CLASS TParent
|
||||
? "TParent:New()"
|
||||
RETURN Self
|
||||
|
||||
// This is a comment
|
||||
/* This is a comment */
|
||||
/* This is
|
||||
a comment */
|
||||
* This is a comment
|
||||
&& This is a comment
|
||||
NOTE This is a comment
|
||||
note This is a comment
|
||||
NOTE
|
||||
|
||||
FUNCTION pub_func2()
|
||||
? "hello world!"
|
||||
? 'hello world!'
|
||||
? "hello\world!"
|
||||
? "\"
|
||||
? "hello world!"
|
||||
RETURN .T.
|
||||
Reference in New Issue
Block a user