-+-+-+-+-+-+-+-+ START OF PART 110 -+-+-+-+-+-+-+-+ X(workstation)d(colour)0 443 y(table.)15 b(The)d(boxes)g(are)g(drawn)f(into)f X(structure)g Fi(stid)p Fq(.)p 1483 540 384 2 v 1483 619 2 80 Xv 1497 594 a Fb(ptk_elemcoun)o(t)p 1864 619 V 1483 621 384 X2 v 0 695 a Fq(Pint)g Fp(ptk_elemcount)i Fq(\()f(Pint)f Fa(stid)h XFq(\))25 795 y(IN)50 b(Pint)e Fa(stid)h Fq(structure)11 b(identi\256er)n(.)0 X895 y(This)16 b(functions)f(counts)h(the)g(number)g(of)g(elements)h(in)e X(structure)h Fi(stid)p Fq(,)j(returning)14 b(the)i(number)g(of)g(elements,)j X(or)d(-1)g(if)0 945 y(the)11 b(structure)g(does)g(not)g(exist.)p X1433 1042 434 2 v 1433 1121 2 80 v 1447 1095 a Fb(ptk_executee)o(lem)p X1864 1121 V 1433 1123 434 2 v 0 1197 a Fq(void)f Fp(ptk_executeelem)j XFq(\()e(ptkselcontent)f(*)p Fa(elcont)f Fq(\))25 1296 y(IN)50 Xb(ptkselcontent)9 b(*)50 b Fa(elcont)e Fq(element)12 b(content.)0 X1396 y(This)h(function)e(creates)j(a)f(structure)f(element)h(which)f(has)i X(the)e(contents)g Fi(elcont)p Fq(.)21 b(The)13 b(element)h(is)e(inserted)g X(into)g(the)g(cur)o(-)0 1446 y(rently)e(open)h(structure.)p X1419 1543 447 2 v 1419 1622 2 80 v 1434 1597 a Fb(ptk_\256ndelemtyp)o(e)p X1864 1622 V 1419 1624 447 2 v 0 1698 a Fq(void)f Fp(ptk_\256ndelemtype)i XFq(\()f(Peltype)g(*)p Fa(eltypelst)p Fq(,)e(Pint)h Fa(lenlst)p XFq(,)g(Psrchdir)h Fa(srchdir)p Fq(,)e(Psrchsta-)406 1748 y(tus)i(*)p XFa(srchstat)p Fq(,)e(Pint)h(*)p Fa(elptr)p Fq(,)g(Pint)g(*)p XFa(lstnum)h Fq(\))25 1799 y(IN)91 b(Peltype)11 b(*)112 b Fa(eltypelst)47 Xb Fq(list)10 b(of)h(element)h(types.)25 1849 y(IN)91 b(Pint)201 Xb Fa(lenlst)95 b Fq(length)10 b(of)h(element)h(type)f(list.)25 X1899 y(IN)91 b(Psrchdir)130 b Fa(srchdir)71 b Fq(search)12 Xb(direction,)f(forwards)g(or)g(backwards.)25 1948 y(OUT)50 Xb(Psrchstatus)11 b(*)50 b Fa(srchstat)j Fq(search)12 b(success)h(or)e X(failure.)25 1998 y(OUT)50 b(Pint)10 b(*)170 b Fa(elptr)109 Xb Fq(found)10 b(element)i(pointer)n(.)25 2048 y(OUT)50 b(Pint)10 Xb(*)170 b Fa(lstnum)74 b Fq(index)11 b(of)g(found)f(item)h(in)g(list.)0 X2117 y(This)k(function)e(searches)k(the)e(currently)f(open)h(structure,)h X(starting)d(at)i(the)g(current)g(element)g(pointer)f(and)h(proceeding)g(in)0 X2167 y(direction)10 b Fi(srchdir)p Fq(,)j(for)e(the)g(\256rst)g(element)h X(whose)f(type)g(matches)i(any)e(of)g(those)g(given)g(in)f Fi(contentlst)p XFq(.)p 1522 2264 344 2 v 1522 2343 2 80 v 1537 2318 a Fb(ptk_\256ndlabel)p X1864 2343 V 1522 2345 344 2 v 0 2419 a Fq(ptkboolean)g Fp(ptk_\256ndlabel)h XFq(\()g(Pint)f Fa(label)p Fq(,)h(Pint)f(*)p Fa(elemptr)g Fq(\))25 X2508 y(IN)146 b(Pint)81 b Fa(label)92 b Fq(label)11 b(value.)25 X2558 y(IN/OUT)49 b(Pint)11 b(*)49 b Fa(elemptr)g Fq(element)12 Xb(pointer)e(of)h(label)g(element.)0 2633 y(This)16 b(function)e(searches)k X(forwards)d(through)g(the)g(currently)g(open)h(structure)f(from)h(the)g X(current)f(editing)g(position)f(look-)0 2683 y(ing)c(for)h(a)h(label)f X(structure)g(element.)16 b(The)c(function)e(returns)g(TRUE)i(if)f XFi(label)h Fq(was)g(found,)f(otherwise)g(F)m(ALSE.)0 2956 y(13th)22 Xb(May)m(,)12 b(1992)636 b(92)839 b(2.01)p eop X%%Page: 93 94 Xbop 0 -137 a Fq(PHIGS)11 b(T)m(oolkit)f(User)i(Manual)1235 Xb(PTK/100)p 1386 -19 480 2 v 1386 60 2 80 v 1400 35 a Fb X(ptk_\256ndnextpickid)p 1864 60 V 1386 62 480 2 v 0 136 a Fq(ptkboolean)10 Xb Fp(ptk_\256ndnextpickid)h Fq(\()g(Pint)g Fa(stid)p Fq(,)f(Psrchdir)h XFa(srchdir)p Fq(,)f(Pint)g(*)p Fa(eltptr)p Fq(,)g(Pint)g(*)p XFa(pickid)g Fq(\))25 225 y(IN)91 b(Pint)120 b Fa(stid)100 b XFq(structure)11 b(identi\256er)n(.)25 275 y(IN)91 b(Psrchdir)49 Xb Fa(srchdir)f Fq(search)12 b(direction.)25 324 y(OUT)50 b(Pint)10 Xb(*)89 b Fa(eltptr)76 b Fq(element)12 b(pointer)e(of)h(pick)g(identi\256er)n X(.)25 374 y(OUT)50 b(Pint)10 b(*)89 b Fa(pickid)64 b Fq(pick)11 Xb(identi\256er)f(value.)0 443 y(This)15 b(function)e(searches)k(structure)d XFi(stid)p Fq(,)j(starting)c(at)i(element)g Fi(elptr)h Fq(and)f(proceeding)f X(in)h(direction)e Fi(srchdir)p Fq(,)18 b(look-)0 493 y(ing)11 Xb(for)h(a)g(pick)g(identi\256er)f(structure)h(element.)18 b(The)13 Xb(function)d(returns)i(TRUE)g(if)g(a)h(pick)e(identi\256er)g(was)i(found,)f X(otherwise)0 543 y(F)m(ALSE.)p 1503 640 364 2 v 1503 719 2 X80 v 1517 694 a Fb(ptk_framebox)p 1864 719 V 1503 721 364 2 Xv 0 795 a Fq(void)e Fp(ptk_framebox)h Fq(\()f(Ppoint3)f(*)p XFa(boxcentre)p Fq(,)f(Ppoint)h(*)p Fa(boxsize)p Fq(,)g(Ppoint)g(*)p XFa(framesize)p Fq(,)348 845 y(Pint)h Fa(boxcolour)p Fq(,)e(Pint)i XFa(edgecolour)p Fq(,)e(Pint)i Fa(tlcolour)p Fq(,)f(Pint)h Fa(brcolour)348 X895 y Fq(\))25 945 y(IN)50 b(Ppoint3)9 b(*)50 b Fa(boxcentre)66 Xb Fq(centre)12 b(of)f(box.)25 995 y(IN)50 b(Ppoint)9 b(*)71 Xb Fa(boxsize)102 b Fq(height)10 b(and)i(width)e(box.)25 1045 Xy(IN)50 b(Ppoint)9 b(*)71 b Fa(framesize)e Fq(height)10 b(and)i(width)e(of)h X(frame.)25 1095 y(IN)50 b(Pint)143 b Fa(boxcolour)68 b Fq(box)11 Xb(interior)e(colour)i(index.)25 1145 y(IN)50 b(Pint)143 b Fa(edgecolou)o(r)4 V7 Xb Fq(box)11 b(edge)h(colour)e(index.)25 1194 y(IN)50 b(Pint)143 Xb Fa(tlcolour)108 b Fq(frame)12 b(top-left)e(colour)g(index.)25 X1244 y(IN)50 b(Pint)143 b Fa(brcolour)94 b Fq(frame)12 b(bottom-right)d X(colour)h(index.)0 1313 y(This)h(function)f(draws)i(a)f(box)g(in)g(the)g X(open)g(structure)g(with)f(a)i(frame)g(to)f(give)g(a)g(3D)h(ef)o(fect.)p X1439 1410 427 2 v 1439 1489 2 80 v 1454 1464 a Fb(ptk_getelem)o(typ)o(e)p X1864 1489 V 1439 1491 427 2 v 0 1565 a Fq(void)e Fp(ptk_getelemtype)h XFq(\()h(Pchar)g(*)p Fa(elemstr)p Fq(,)e(Peltype)h(*)p Fa(eltype)e XFq(\))25 1654 y(IN)91 b(Pchar)12 b(*)80 b Fa(elemstr)48 b Fq(string)10 Xb(giving)g(element)h(type.)25 1704 y(OUT)50 b(Peltype)11 b(*)50 Xb Fa(eltype)69 b Fq(element)12 b(type.)0 1779 y(This)e(function)e(converts)i X(the)g(string)e Fi(elemstr)j Fq(into)e(its)g(corresponding)g(element)h(type. V) X15 b(For)9 b(example)i(the)f(element)g(type)g(for)0 1829 y("polyline3",)f X(would)i(be)g(PEL_POL)l(YLINE3.)p 1310 1926 557 2 v 1310 2005 X2 80 v 1324 1980 a Fb(ptk_getelemt)o(ypen)o(am)o(e)p 1864 2005 XV 1310 2007 557 2 v 0 2081 a Fq(void)f Fp(ptk_getelemtypename)h XFq(\()i(Peltype)f Fa(eltype)p Fq(,)g(Pint)g Fa(size)p Fq(,)g(Pchar)h(*)p XFa(elemstr)p Fq(,)f(Pint)g(*)p Fa(totalsize)486 2131 y Fq(\))25 X2181 y(IN)91 b(Peltype)52 b Fa(eltype)83 b Fq(element)12 b(type.)25 X2231 y(IN)91 b(Pint)109 b Fa(size)115 b Fq(size)12 b(of)f(buf)o(fer)g X(allocated)g(by)g(application.)25 2281 y(OUT)50 b(Pchar)12 Xb(*)50 b Fa(elemstr)62 b Fq(string)10 b(giving)f(element)j(type.)25 X2331 y(OUT)50 b(Pint)10 b(*)78 b Fa(totalsize)47 b Fq(length)10 Xb(of)h(string.)0 2400 y(This)c(function)f(converts)i(element)g(type)f XFi(eltype)i Fq(into)d(the)h(corresponding)f(character)j(string,)e(which)g(is V) Xh(returned)f(in)g Fi(elemstr)p Fq(.)0 2450 y(For)k(example,)i(the)e(string)f X(corresponding)g(to)g(PE_POL)l(YLINE3)i(would)f(be)g("polyline3".)0 X2956 y(13th)22 b(May)m(,)12 b(1992)636 b(93)839 b(2.01)p eop X%%Page: 94 95 Xbop 0 -137 a Fq(PHIGS)11 b(T)m(oolkit)f(User)i(Manual)1235 Xb(PTK/100)p 1430 -19 437 2 v 1430 60 2 80 v 1444 35 a Fb(ptk_getexec)o(utei) Vo X(d)p 1864 60 V 1430 62 437 2 v 0 136 a Fq(ptkboolean)10 b Fp X(ptk_getexecuteid)i Fq(\()f(Pint)g Fa(stid)p Fq(,)f(Pint)h XFa(elptr)p Fq(,)f(Pint)g(*)p Fa(execid)g Fq(\))25 225 y(IN)91 Xb(Pint)81 b Fa(stid)96 b Fq(structure)10 b(identi\256er)n(.)25 X275 y(IN)91 b(Pint)81 b Fa(elptr)h Fq(element)12 b(pointer)e(value.)25 X324 y(OUT)50 b(Pint)10 b(*)50 b Fa(execid)e Fq(execute)12 b(structure)f X(identi\256er)n(.)0 393 y(This)16 b(function)f(inquires)g(the)g(execute)i X(element)g(identi\256er)e(at)h(the)g(element)h(position)d(speci\256ed)j(by)e XFi(elptr)i Fq(in)f(structure)0 443 y Fi(stid)p Fq(.)g(The)c(result)f(of)g X(the)g(function)f(is)h(TRUE)h(if)e(the)i(element)f(was)h(an)g(execute)g X(element,)g(otherwise)f(F)m(ALSE..)p 1509 540 357 2 v 1509 X619 2 80 v 1523 594 a Fb(ptk_getpickid)p 1864 619 V 1509 621 X357 2 v 0 695 a Fq(ptkboolean)f Fp(ptk_getpickid)h Fq(\()g(Pint)f XFa(stid)p Fq(,)h(Pint)f Fa(elptr)p Fq(,)h(Pint)f(*)p Fa(pickid)g XFq(\))25 784 y(IN)91 b(Pint)81 b Fa(stid)j Fq(structure)11 Xb(identi\256er)n(.)25 834 y(IN)91 b(Pint)81 b Fa(elptr)70 b XFq(element)12 b(pointer)e(value.)25 884 y(OUT)50 b(Pint)10 Xb(*)50 b Fa(pickid)e Fq(pick)11 b(identi\256er)n(.)0 953 y(This)16 Xb(function)e(inquires)h(the)h(pick)f(identi\256er)g(at)h(the)g(element)h X(position)d(speci\256ed)i(by)g Fi(elptr)h Fq(in)e(structure)g XFi(stid)p Fq(.)31 b(The)0 1003 y(result)11 b(of)g(the)g(function)f(is)h(TRUE V) Xg(if)g(the)g(element)h(was)g(a)g(pick)f(identi\256er)n(,)g(otherwise)g(F)m X(ALSE.)p 1207 1100 660 2 v 1207 1179 2 80 v 1221 1154 a Fb(ptk_getprimiti)o X(vet)o(ypen)o(am)o(e)p 1864 1179 V 1207 1181 660 2 v 0 1255 Xa Fq(void)f Fp(ptk_getprimitivetypename)g Fq(\()h(Pattrs)g XFa(attr)p Fq(,)g(Pint)f Fa(size)p Fq(,)h(Pchar)h(*)p Fa(attrstr)p XFq(,)e(Pint)g(*)p Fa(totalsize)e Fq(\))25 1344 y(IN)91 b(Pattrs)82 Xb Fa(attr)127 b Fq(primitive)9 b(type.)25 1394 y(IN)91 b(Pint)109 Xb Fa(size)115 b Fq(size)12 b(of)f(buf)o(fer)g(allocated)g(by)g(application.) X25 1443 y(OUT)50 b(Pchar)12 b(*)50 b Fa(attrstr)87 b Fq(string)10 Xb(giving)f(primitive)h(type.)25 1493 y(OUT)50 b(Pint)10 b(*)78 Xb Fa(totalsize)47 b Fq(length)10 b(of)h(string.)0 1562 y(The)e(function)e X(converts)i(the)f(primitive)f(type)h Fi(attr)h Fq(to)f(its)g(corresponding)f X(character)j(string,)e(which)g(is)h(returned)f(in)g Fi(artrstr)p XFq(.)0 1612 y(For)j(example,)i(P_POL)l(YLINE)f(would)e(give)h("polyline".)p X1635 1709 231 2 v 1635 1788 2 80 v 1649 1763 a Fb(ptk_grid)p X1864 1788 V 1635 1790 231 2 v 0 1864 a Fq(void)f Fp(ptk_grid)h XFq(\()g(Pint)g Fa(stid)f Fq(\))25 1964 y(IN)50 b(Pint)e Fa(stid)h XFq(grid)10 b(structure)h(identi\256er)n(.)0 2063 y(This)g(functions)f(draws) Vi X(a)g(grid)e(of)h(lines)g(on)g(`5B0,1`5D,)g(into)f(structure)h Fi(stid)p XFq(.)p 1237 2161 630 2 v 1237 2240 2 80 v 1251 2214 a Fb(ptk_inqmaxdevic)o X(ec)o(oords)p 1864 2240 V 1237 2242 630 2 v 0 2316 a Fq(void)f XFp(ptk_inqmaxdevicecoords)h Fq(\()h(Pint)e Fa(wsid)p Fq(,)h(P\257oat)h(*)p XFa(maxdevx)p Fq(,)d(P\257oat)j(*)p Fa(maxdevy)d Fq(\))25 2405 Xy(IN)91 b(Pint)111 b Fa(wsid)120 b Fq(workstation)9 b(identi\256er)n(.)25 X2454 y(OUT)50 b(P\257oat)11 b(*)50 b Fa(maxdevx)e Fq(maximum)12 Xb(device)f(coords)h(along)e(x)h(axis.)25 2504 y(OUT)50 b(P\257oat)11 Xb(*)50 b Fa(maxdevy)e Fq(maximum)12 b(device)f(coords)h(along)e(y)h(axis.)0 X2573 y(This)g(function)f(returns)h(the)g(the)g(maximum)h(device)g X(coordinates)e(for)h Fk(x)h Fq(and)g Fk(y)f Fq(for)g(workstation)f XFi(wsid)p Fq(.)0 2956 y(13th)22 b(May)m(,)12 b(1992)636 b(94)839 Xb(2.01)p eop X%%Page: 95 96 Xbop 0 -137 a Fq(PHIGS)11 b(T)m(oolkit)f(User)i(Manual)1235 Xb(PTK/100)p 1207 -19 660 2 v 1207 60 2 80 v 1221 35 a Fb(ptk_inqmaxdevic)o X(ec)o(oords3)p 1864 60 V 1207 62 660 2 v 0 136 a Fq(void)10 Xb Fp(ptk_inqmaxdevicecoords3)h Fq(\()20 b(Pint)f Fa(wsid)p XFq(,)k(P\257oat)d(*)p Fa(maxdevx)p Fq(,)g(P\257oat)g(*)p Fa(maxdevy)p XFq(,)h(P\257oat)560 186 y(*)p Fa(maxdevz)10 b Fq(\))25 236 Xy(IN)91 b(Pint)111 b Fa(wsid)120 b Fq(workstation)9 b(identi\256er)n(.)25 X286 y(OUT)50 b(P\257oat)11 b(*)50 b Fa(maxdevx)e Fq(maximum)12 Xb(device)f(coords)h(along)e(x)h(axis.)25 336 y(OUT)50 b(P\257oat)11 Xb(*)50 b Fa(maxdevy)e Fq(maximum)12 b(device)f(coords)h(along)e(y)h(axis.)25 X386 y(OUT)50 b(P\257oat)11 b(*)50 b Fa(maxdevz)e Fq(maximum)12 Xb(device)f(coords)h(along)e(z)i(axis.)0 455 y(This)f(function)f(returns)h X(the)g(the)g(maximum)h(device)g(coordinates)e(for)h Fk(x)p XFq(,)i Fk(y)e Fq(and)h Fk(z)f Fq(for)g(workstation)f Fi(wsid)p XFq(.)p 1376 552 490 2 v 1376 631 2 80 v 1390 606 a Fb(ptk_inqpostpriority)p X1864 631 V 1376 633 490 2 v 0 707 a Fq(void)g Fp(ptk_inqpostpriority)g XFq(\()h(Pint)g Fa(wsid)p Fq(,)g(Pint)g Fa(structid)p Fq(,)e(P\257oat)i(*)p XFa(priority)p Fq(,)f(Pint)g(*)p Fa(err)g Fq(\))25 796 y(IN)91 Xb(Pint)111 b Fa(wsid)92 b Fq(workstation)10 b(identi\256er)n(.)25 X846 y(IN)91 b(Pint)111 b Fa(structid)47 b Fq(structure)11 b(identi\256er)n(. V) X25 895 y(IN)91 b(P\257oat)11 b(*)50 b Fa(priority)55 b Fq(priority)9 Xb(value.)25 945 y(OUT)50 b(Pint)10 b(*)80 b Fa(err)119 b Fq(error)12 Xb(indicator)n(.)0 1014 y(This)j(function)f(may)i(be)f(used)h(to)e(obtain)h X(the)g(priority)e(of)i(posted)f(structure)h Fi(structid)p Fq(.)29 Xb(If)15 b Fi(structid)h Fq(does)g(not)e(exist,)0 1064 y Fi(err)e XFq(is)f(set)h(to)e(1.)16 b(If)11 b(it)f(is)h(not)g(posted)g(to)f XFi(wsid)i Fq(then)f Fi(err)h Fq(is)f(set)h(to)f(2.)p 1380 1161 X487 2 v 1380 1240 2 80 v 1394 1215 a Fb(ptk_inqstructnet)o(ids)p X1864 1240 V 1380 1242 487 2 v 0 1316 a Fq(void)f Fp(ptk_inqstructnetids)i XFq(\()f(Pint)f Fa(root)p Fq(,)h(Pint)f Fa(size)p Fq(,)h(Pintlst)e(*)p XFa(stids)p Fq(,)i(Pint)f(*)p Fa(totalsize)f Fq(\))25 1405 y(IN)91 Xb(Pint)120 b Fa(root)d Fq(structure)11 b(network)f(identifer)n(.)25 X1455 y(IN)91 b(Pint)120 b Fa(size)115 b Fq(number)12 b(of)f(integers)f X(allocated)i(in)e(integer)h(list.)25 1505 y(OUT)50 b(Pintlst)10 Xb(*)49 b Fa(stids)105 b Fq(list)11 b(of)g(structure)f(identi\256ers.)25 X1555 y(OUT)50 b(Pint)10 b(*)89 b Fa(totalsize)47 b Fq(actual)12 Xb(number)f(of)g(integers)g(in)g(integer)f(list.)0 1623 y(This)h(function)f X(returns)h(a)h(list)e(of)h(structure)f(identi\256ers)h(in)g(the)g(structure) Vf X(network)h(whose)g(root)g(is)g Fi(root)p Fq(.)p 1483 1721 384 X2 v 1483 1800 2 80 v 1497 1774 a Fb(ptk_openstruct)p 1864 1800 XV 1483 1802 384 2 v 0 1876 a Fq(void)f Fp(ptk_openstruct)i XFq(\()g(Pint)e Fa(structid)f Fq(\))25 1975 y(IN)50 b(Pint)e XFa(structid)g Fq(structure)10 b(identi\256er)n(.)0 2075 y(This)e(function)f X(stores)h(the)h(currently)e(open)h(structure)g(and)g(element)h(pointer)e(on) Vh X(a)h(stack)g(and)f(opens)g(the)h(structure)e Fi(structid)p XFq(.)0 2956 y(13th)22 b(May)m(,)12 b(1992)636 b(95)839 b(2.01)p Xeop X%%Page: 96 97 Xbop 0 -137 a Fq(PHIGS)11 b(T)m(oolkit)f(User)i(Manual)1235 Xb(PTK/100)p 1453 -19 414 2 v 1453 60 2 80 v 1467 35 a Fb(ptk_postrelativ)o(e V) Xp 1864 60 V 1453 62 414 2 v 0 136 a Fq(void)10 b Fp(ptk_postr)o(elative)h XFq(\()h(Pint)e Fa(ws)p Fq(,)i(Pint)f Fa(structid)p Fq(,)e(Pvpri)i XFa(relpriority)p Fq(,)e(Pint)i Fa(relstruct)p Fq(,)e(Pint)384 X186 y(*)p Fa(error)h Fq(\))25 236 y(IN)91 b(Pint)81 b Fa(ws)152 Xb Fq(workstation)9 b(identi\256er)n(.)25 286 y(IN)91 b(Pint)81 Xb Fa(structid)e Fq(structure)10 b(identi\256er)n(.)25 336 y(IN)91 Xb(Pvpri)58 b Fa(relpriority)47 b Fq(relative)11 b(priority)m(.)25 X386 y(IN)91 b(Pint)81 b Fa(relstruct)67 b Fq(relative)11 b(structure)f X(identi\256er)n(.)25 436 y(OUT)50 b(Pint)10 b(*)50 b Fa(error)119 Xb Fq(error)11 b(code.)0 505 y(This)f(function)f(posts)g(structure)h XFi(structid)i Fq(at)e(a)h(priority)c(higher)j(or)g(lower)f(than)h(that)g(of) Vg X(structure)f Fi(relative)20 b(structure)0 554 y(identifier)p +-+-+-+-+-+-+-+- END OF PART 110 +-+-+-+-+-+-+-+-