-+-+-+-+-+-+-+-+ START OF PART 117 -+-+-+-+-+-+-+-+ X(.)0 1891 y(This)h(function)f(highlights)f(a)j(single)f(topology)e(node)i(by V) Xg(setting)f(the)i(colour)e(attribute)g(values)i(of)f(the)g(edge)h(and)g X(interior)e(of)0 1941 y(the)h(node)g(box.)k(This)c(function)f(only)g(works)h X(for)g(BOX)g(topology)e(types.)p 1350 2038 517 2 v 1350 2117 X2 80 v 1364 2092 a Fb(ptk_settopologytyp)o(e)p 1864 2117 V X1350 2119 517 2 v 0 2193 a Fq(void)h Fp(ptk_settopologytype)g XFq(\()h(Pint)g Fa(topid)p Fq(,)f(ptketopologyty)o(pe)f Fa(toptype)g XFq(\))25 2282 y(IN)50 b(Pint)272 b Fa(topid)87 b Fq(topology)9 Xb(identi\256er)n(.)25 2332 y(IN)50 b(ptketopologyt)o(ype)d XFa(toptype)g Fq(topology)9 b(type.)0 2407 y(This)16 b(function)f(sets)i(the) Vf X(type)f(of)h(a)h(topology)d(diagram)j(to)e(BOX,)i(STRUCT)f(or)g(STRUCTNET)m X(.)i(The)f(BOX)f(topology)0 2457 y(type)11 b(is)g(the)g(default)f(and)h(the) Vg X(STRUCT)h(and)f(STRUCTNET)h(types)f(insert)f(parts)h(of)g(the)g(actual)g X(structures)g(into)f(the)h(nodes.)0 2506 y(As)d(a)h(result)f(these)g X(topology)e(types)i(do)g(not)f(work)g(well)h(for)g(networks)f(containing)g X(SET)i(VIEW)f(INDEX)h(and)f(SET)h(GLOBAL)0 2556 y(TRANSFORMA)-5 Xb(TION)12 b(elements.)0 2956 y(13th)22 b(May)m(,)12 b(1992)626 Xb(127)828 b(2.01)p eop X%%Page: 128 129 Xbop 0 -137 a Fq(PHIGS)11 b(T)m(oolkit)f(User)i(Manual)1235 Xb(PTK/100)p 1253 -19 613 2 v 1253 60 2 80 v 1268 35 a Fb(ptk_storetopologyl) Vo X(ayou)o(t)p 1864 60 V 1253 62 613 2 v 0 136 a Fq(void)10 b XFp(ptk_stor)o(etopologylayout)f Fq(\()i(FILE)h(*)p Fa(\256leptr)p XFq(,)e(Pint)h Fa(topid)e Fq(\))25 225 y(OUT)50 b(FILE)12 b(*)50 Xb Fa(\256leptr)e Fq(pointer)10 b(to)g(\256le.)25 275 y(IN)91 Xb(Pint)102 b Fa(topid)58 b Fq(topology)9 b(identi\256er)n(.)0 X350 y(This)j(function)e(saves)i(a)h(topology)c(layout)i(in)g(a)h(text)f X(\256le.)17 b(The)12 b(layout)f(refers)h(to)f(the)h(positions)d(of)j(all)f X(the)h(topology)d(nodes.)0 400 y(The)j(format)f(of)g(the)g(stored)g(layout)f X(is:)15 b(**)c Fi(start)h(\(for)19 b(each)f(node)h(in)f(topology)i(diagram\) V) X13 b(x)18 b(y)11 b(end)p 1426 497 441 2 v 1426 576 2 80 v 1440 X551 a Fb(ptk_tidytopology)p 1864 576 V 1426 578 441 2 v 0 652 Xa Fq(void)f Fp(ptk_tidytopology)f Fq(\()k(Pint)f Fa(wsid)p XFq(,)i(Pint)f Fa(topid)p Fq(,)f(ptkenodetype)g Fa(nodetype)p XFq(,)g(Pint)g Fa(pick-)399 702 y(dev)p Fq(,)f(Pint)g Fa(pickpet)p XFq(,)g(Ppickrec)h(*)p Fa(pickdatarec)o Fq(,)e(Pint)h Fa(locdev)p XFq(,)g(Pint)399 752 y Fa(locpet)p Fq(,)f(Plocrec)i(*)p Fa(locdatarec)c XFq(\))25 802 y(IN)50 b(Pint)205 b Fa(wsid)159 b Fq(workstation)10 Xb(identi\256er)n(.)25 852 y(IN)50 b(Pint)205 b Fa(topid)152 Xb Fq(topology)9 b(identi\256er)n(.)25 902 y(IN)50 b(ptkenodetype)e XFa(nodetype)82 b Fq(type)11 b(of)g(node.)25 952 y(IN)50 b(Pint)205 Xb Fa(pickdev)108 b Fq(pick)11 b(device.)25 1002 y(IN)50 b(Pint)205 Xb Fa(pickpet)116 b Fq(pick)11 b(prompt/echo)f(type.)25 1052 Xy(IN)50 b(Ppickrec)11 b(*)96 b Fa(pickdatarec)46 b Fq(pick)11 Xb(data)h(record.)25 1101 y(IN)50 b(Pint)205 b Fa(locdev)126 Xb Fq(locator)11 b(device.)25 1151 y(IN)50 b(Pint)205 b Fa(locpet)134 Xb Fq(locator)11 b(prompt/echo)f(type.)25 1201 y(IN)50 b(Plocrec)11 Xb(*)117 b Fa(locdatarec)64 b Fq(locator)11 b(data)g(record.)0 X1270 y(This)16 b(function)e(enables)i(the)g(user)g(to)f(set)i(the)e(position V) Xf(of)h(a)i(topology)c(node,)k(or)f(group)f(of)g(nodes,)j(interactively)m(.)2 V8 Xb(The)0 1320 y(pick)12 b(device)h Fi(pickdev)h Fq(is)f(used)f(to)h(request)f X(a)h(topology)e(node)h(and)h(if)f(successful)h(the)g(locator)f(device)h XFi(locdev)h Fq(is)e(used)h(to)0 1369 y(specify)e(a)h(new)g(node)f(position.) Vi X(Prompt)e(and)g(echo)h(types)f(may)h(be)g(set)f(for)g(both)f(the)h(pick)g X(and)h(locator)e(devices.)p 1360 1467 507 2 v 1360 1546 2 80 Xv 1374 1520 a Fb(ptk_unposttopology)p 1864 1546 V 1360 1548 X507 2 v 0 1622 a Fq(void)g Fp(ptk_unposttopology)g Fq(\()h(Pint)f XFa(wsid)p Fq(,)h(Pint)g Fa(topid)f Fq(\))25 1711 y(IN)50 b(Pint)e XFa(wsid)56 b Fq(workstation)9 b(identi\256er)n(.)25 1760 y(IN)50 Xb(Pint)e Fa(topid)h Fq(topology)9 b(identi\256er)n(.)0 1836 Xy(This)i(function)f(unposts)g(the)h(topology)e(diagram)j(structure)f(from)g X(the)g(workstation)e Fi(wsid)p Fq(.)0 2956 y(13th)22 b(May)m(,)12 Xb(1992)626 b(128)828 b(2.01)p eop X%%Page: 129 130 Xbop 0 349 a Fj(Chapter)24 b(22)0 585 y Fs(Menu)30 b(functions)0 X855 y Fr(22.1)59 b(Data)17 b(types)54 977 y Fi(#define)i(PTKCMAXSTRINGSIZE)i X(255)54 1076 y(typedef)e(enum)108 1126 y(`7B)126 1176 y(PTKEONED,)126 X1226 y(PTKETWOD,)126 1276 y(PTKETHREED)108 1325 y(`7D)f(ptkerotatortypes;)54 X1425 y(typedef)h(struct)108 1475 y(`7B)126 1525 y(Piclass)g(inputclass;)126 X1575 y(union)162 1624 y(`7B)216 1674 y(struct)270 1724 y(`7B)288 X1774 y(Pint)g(locview;)126 1824 y(Ppoint3)g(locpoint;)270 1873 Xy(`7D)f(ptkslocinput;)216 1923 y(struct)270 1973 y(`7B)288 2023 Xy(Ppickpath)i(pickdata;)288 2073 y(Ppathorder)g(pathorder;)270 X2122 y(`7D)e(ptkspickinput;)234 2172 y(Pchar)h(str`5B256`5D;)198 X2222 y(`7D)f(ptkugeninput;)108 2272 y(`7D)g(ptksmenuinput;)54 2372 Xy(typedef)h(struct)108 2421 y(`7B)144 2471 y(Pint)g(menuid;)144 X2521 y(Pint)g(itemnum;)144 2571 y(boolean)g(measure;)144 2621 Xy(Ppoint3)g(value;)108 2670 y(`7D)f(ptksmenuoutput;)902 2956 Xy Fq(129)p eop X%%Page: 130 131 Xbop 0 -137 a Fq(PHIGS)11 b(T)m(oolkit)f(User)i(Manual)1235 Xb(PTK/100)54 8 y Fi(typedef)19 b(enum)108 58 y(`7B)126 108 y(PTKEUSERMENU,)1 V26 X158 y(PTKEBOXMENU,)126 208 y(PTKEROTATOR)108 257 y(`7D)f(ptkemenutype;)0 X476 y Fr(22.2)59 b(Functions)p 1486 567 381 2 v 1486 646 2 X80 v 1500 621 a Fb(ptk_backmenu)p 1864 646 V 1486 648 381 2 Xv 0 722 a Fq(void)10 b Fp(ptk_backmenu)i Fq(\()f(Pint)f Fa(wsid)p XFq(,)i(Pint)e Fa(menuid)g Fq(\))25 811 y(IN)50 b(Pint)e Fa(wsid)95 Xb Fq(workstation)9 b(identi\256er)n(.)25 861 y(IN)50 b(Pint)e XFa(menuid)h Fq(menu)11 b(identi\256er)n(.)0 936 y(This)g(function)e(sets)i X(the)g(post)f(priority)e(of)j(the)f(menu)h(structure)f(so)h(that)f(it)g(is)h X(displayed)f(below)g(all)g(other)h(posted)f(menus)h(but)0 986 Xy(in)g(front)f(of)h(all)g(posted)g(windows.)p 1177 1083 690 X2 v 1177 1162 2 80 v 1191 1137 a Fb(ptk_clearboxme)o(nuhigh)o(ligh)o(t)p X1864 1162 V 1177 1164 690 2 v 0 1238 a Fq(void)f Fp X(ptk_clearboxmenuhighlight)g Fq(\()h(Pint)f Fa(menuid)h Fq(\))25 X1338 y(IN)50 b(Pint)e Fa(menuid)h Fq(menu)11 b(identi\256er)n(.)0 X1437 y(This)k(function)e(returns)h(the)h(attributes)f(of)g(the)h(highlighted V) Xd(menu)j(item)g(to)f(their)g(original)g(values.)26 b(If)15 Xb(no)f(item)h(is)g(high-)0 1487 y(lighted)10 b(the)h(function)f(is)h X(ignored.)p 1366 1584 500 2 v 1366 1663 2 80 v 1381 1638 a XFb(ptk_createb)o(oxme)o(nu)p 1864 1663 V 1366 1665 500 2 v X0 1739 a Fq(void)f Fp(ptk_cr)o(eateboxmenu)j Fq(\()e(Pint)f XFa(menuid)p Fq(,)h(Ppoint)f(*)p Fa(tlcorner)p Fq(,)f(Ppoint)h(*)p XFa(boxsize)e Fq(\))25 1828 y(IN)50 b(Pint)122 b Fa(menuid)52 Xb Fq(menu)12 b(identi\256er)n(.)25 1878 y(IN)50 b(Ppoint)9 Xb(*)50 b Fa(tlcorner)f Fq(top)11 b(left)g(corner)g(of)g(menu.)25 X1928 y(IN)50 b(Ppoint)9 b(*)50 b Fa(boxsize)d Fq(width)10 b(and)i(height)e X(of)h(menu)h(box)e(item.)0 1997 y(This)15 b(function)f(creates)j(a)f(box)f X(menu)g(with)g(no)g(initial)e(items.)28 b(The)16 b(position)d(of)i(the)h X(menu)f(is)h(speci\256ed)g(by)f Fi(tlcorner)0 2047 y Fq(which)9 Xb(de\256nes)i(the)f(top-left)e(corner)i(of)f(the)h(\256rst)g(menu)g(item.)15 Xb(The)10 b(position)e(and)i(size)g(of)g(box)f(menu)h(items)g(are)h(given)e X(in)g(the)0 2096 y(range)j(`5B0,)f(1`5D.)k(The)d(default)e(menu)i(path)f(is) Vg X(DOWN.)h(This)f(function)e(requires)i(hashtables)h("structureid",)e("label", V) Xh("name".)0 2956 y(13th)22 b(May)m(,)12 b(1992)626 b(130)828 Xb(2.01)p eop X%%Page: 131 132 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_createro)o(tat) Vo X(or)p 1864 60 V 1430 62 437 2 v 0 136 a Fq(void)10 b Fp(ptk_cr)o(eater)o X(otator)j Fq(\()i(Pint)f Fa(wsid)p Fq(,)i(Pint)f Fa(menuid)p XFq(,)g(ptkerotatortype)e Fa(rottype)p Fq(,)h(Ppoint)411 186 Xy(*)p Fa(size)p Fq(,)c(Pchar)i(*)p Fa(titlestr)p Fq(,)e(P\257oat)h XFa(titleheight)e Fq(\))25 237 y(IN)50 b(Pint)235 b Fa(wsid)130 Xb Fq(workstation)9 b(identi\256er)n(.)25 287 y(IN)50 b(Pint)235 Xb Fa(menuid)84 b Fq(rotator)10 b(identi\256er)n(.)25 336 y(IN)50 Xb(ptkerotatortype)d Fa(rottype)91 b Fq(rotator)10 b(type.)25 X386 y(IN)50 b(Ppoint)9 b(*)163 b Fa(size)137 b Fq(rotator)10 Xb(size.)25 436 y(IN)50 b(Pchar)11 b(*)177 b Fa(titlestr)105 Xb Fq(rotator)10 b(title.)25 486 y(IN)50 b(P\257oat)206 b Fa(titleheight)47 Xb Fq(rotator)10 b(title)g(height.)0 555 y(This)15 b(function)e(creates)i(a)h X(special)f(form)f(of)g(user)h(menu)g(called)g(a)g(rotator)n(.)24 Xb(Rotators)13 b(consist)h(of)h(an)f(arrangement)i(of)e(ar)o(-)0 X605 y(rows)c(and)h(are)g(useful)g(for)f(de\256ning)f(rotation)g(values)i(and V) Xg(direction)e(in)h(a)h(user)g(interface.)k(There)d(are)f(three)g(types)f(of) Vg X(rotator)0 654 y(available:)17 b(1D,)12 b(2D)g(and)h(3D,)f(and)h(each)g X(having)f(an)g(increasing)g(number)g(of)g(arrows.)19 b(This)12 Xb(function)f(requires)h(hashtables)0 704 y("structureid",)e("label",)i X("name".)p 1217 801 650 2 v 1217 880 2 80 v 1231 855 a Fb(ptk_createstruc)o X(tm)o(enui)o(tem)p 1864 880 V 1217 882 650 2 v 0 956 a Fq(void)e XFp(ptk_cr)o(eatestructmenuitem)j Fq(\()f(Pint)e Fa(menuid)p XFq(,)h(Pint)g Fa(structure)p Fq(,)e(Pint)i Fa(itemno)p Fq(,)g(Peditmode)g XFa(edit-)566 1006 y(mode)p Fq(,)g(Pint)g(*)p Fa(error)e Fq(\))25 X1057 y(IN)50 b(Pint)159 b Fa(menuid)78 b Fq(menu)12 b(identi\256er)n(.)25 X1107 y(IN)50 b(Pint)159 b Fa(structure)55 b Fq(menu)12 b(item)f(structure)f X(identi\256er)n(.)25 1156 y(IN)50 b(Pint)159 b Fa(itemno)88 Xb Fq(menu)12 b(item)f(number)n(.)25 1206 y(IN)50 b(Peditmode)f XFa(editmode)f Fq(insert)11 b(or)f(replace)j(menu)e(item.)25 X1256 y(IN)50 b(Pint)10 b(*)128 b Fa(error)119 b Fq(error)11 Xb(code.)0 1325 y(This)j(function)f(creates)j(a)f(menu)g(item)f(de\256ned)h X(by)f Fi(structure)p Fq(.)27 b(In)14 b(the)g(case)i(of)f(box)e(menus)i(the)g X(structure)e(is)i(mapped)0 1375 y(into)10 b(the)h(item)g(box)f(with)h(aspect V) Xh(ratio)e(preserved.)16 b(No)11 b(transformation)e(is)i(applied)g(for)g(user V) Xg(menu)h(items.)j(The)d(error)f(code)0 1425 y(=)h(1)f(if)g XFi(menuid)h Fq(doesn')o(t)f(exist.)p 1260 1522 606 2 v 1260 X1601 2 80 v 1274 1575 a Fb(ptk_createte)o(xtm)o(enui)o(tem)p X1864 1601 V 1260 1603 606 2 v 0 1677 a Fq(void)f Fp(ptk_cr)o X(eatetextmenuitem)i Fq(\()18 b(Pint)e Fa(menuid)p Fq(,)i(Pchar)g(*)p XFa(str)p Fq(,)g(Pint)e Fa(itemno)p Fq(,)j(Peditmode)e Fa(edit-)529 X1727 y(mode)p Fq(,)11 b(Pint)g(*)p Fa(error)e Fq(\))25 1777 Xy(IN)50 b(Pint)159 b Fa(menuid)78 b Fq(menu)12 b(identi\256er)n(.)25 X1827 y(IN)50 b(Pchar)11 b(*)101 b Fa(str)155 b Fq(text)11 b(string.)25 X1877 y(IN)50 b(Pint)159 b Fa(itemno)88 b Fq(menu)12 b(item)f(number)n(.)25 X1927 y(IN)50 b(Peditmode)f Fa(editmode)f Fq(insert)11 b(or)f(replace)j(menu) Ve X(item..)25 1976 y(IN)50 b(Pint)10 b(*)128 b Fa(error)119 b XFq(error)11 b(code.)0 2045 y(This)g(function)f(creates)i(a)g(box)f(menu)g X(item)h(containing)d(the)i(character)i(string)d Fi(str)p Fq(.)16 Xb(The)c(string)d(is)i(automatically)g(scaled)h(to)0 2095 y(\256t)h(inside)f X(the)i(menu)f(item)g(box.)21 b(This)13 b(function)f(may)h(only)g(be)g(used)h X(with)e(box)g(menus.)22 b(The)14 b(error)f(code)h(=)f(1)g(if)g XFi(menuid)0 2145 y Fq(doesn')o(t)e(exist)g(and)g(=)h(2)f(if)g(the)g(menu)h X(is)f(not)f(a)i(box)f(menu.)p 1357 2242 510 2 v 1357 2321 2 X80 v 1371 2296 a Fb(ptk_createuse)o(rme)o(nu)p 1864 2321 V X1357 2323 510 2 v 0 2397 a Fq(void)f Fp(ptk_cr)o(eateusermenu)k XFq(\()d(Pint)g Fa(menuid)p Fq(,)f(Pint)h Fa(menustid)e Fq(\))25 X2486 y(IN)50 b(Pint)e Fa(menuid)76 b Fq(menu)12 b(identi\256er)n(.)25 X2536 y(IN)50 b(Pint)e Fa(menustid)g Fq(menu)12 b(structure)f(identi\256er)n X(.)0 2611 y(This)g(function)f(creates)i(a)g(user)g(menu)f(using)g(the)g X(structure)f Fi(menustid)p Fq(.)17 b(Each)c(menu)e(item)g(must)g(be)h(an)f X(individual)e(PHIGS)0 2661 y(structure)j(or)h(network)f(and)h(the)g(menu)g X(initially)d(contains)i(no)h(menu)g(items.)20 b(This)13 b(function)f X(requires)g(hashtables)h("label",)0 2711 y("name".)0 2956 y(13th)22 Xb(May)m(,)12 b(1992)626 b(131)828 b(2.01)p eop X%%Page: 132 133 Xbop 0 -137 a Fq(PHIGS)11 b(T)m(oolkit)f(User)i(Manual)1235 Xb(PTK/100)p 1526 -19 341 2 v 1526 60 2 80 v 1540 35 a Fb(ptk_delmenu)p X1864 60 V 1526 62 341 2 v 0 136 a Fq(ptkboolean)10 b Fp(ptk_delmenu)h XFq(\()h(Pint)e Fa(menuid)g Fq(\))25 236 y(IN)50 b(Pint)e Fa(menuid)h XFq(menu)11 b(identi\256er)n(.)0 335 y(This)k(function)e(deletes)j(a)f(menu)g X(from)g(the)g(PHIGS)g(T)m(oolkit)e(menu)j(store.)26 b(The)16 Xb(function)d(returns)h(TRUE)i(if)e Fi(menuid)i Fq(is)0 385 Xy(deleted,)c(otherwise)e(F)m(ALSE.)p 1419 482 447 2 v 1419 X561 2 80 v 1434 536 a Fb(ptk_delmenui)o(tem)p 1864 561 V 1419 X563 447 2 v 0 637 a Fq(ptkboolean)g Fp(ptk_delmenuitem)h Fq(\()g(Pint)f XFa(menuid)p Fq(,)h(Pint)f Fa(itemno)g Fq(\))25 726 y(IN)50 Xb(Pint)e Fa(menuid)h Fq(menu)11 b(identi\256er)n(.)25 776 y(IN)50 Xb(Pint)e Fa(itemno)59 b Fq(menu)11 b(item)h(to)e(delete.)0 X851 y(This)k(function)f(deletes)i(the)g(menu)g(item)f Fi(itemno)p XFq(.)26 b(The)15 b(function)e(returns)h(TRUE)h(if)f(the)h(menu)f(item)h(is)f X(deleted,)i(other)o(-)0 901 y(wise)c(F)m(ALSE.)p 1483 998 384 X2 v 1483 1077 2 80 v 1497 1052 a Fb(ptk_frontmenu)p 1864 1077 XV 1483 1079 384 2 v 0 1153 a Fq(void)e Fp(ptk_fr)o(ontmenu)i XFq(\()f(Pint)f Fa(wsid)p Fq(,)i(Pint)e Fa(menuid)g Fq(\))25 X1242 y(IN)50 b(Pint)e Fa(wsid)95 b Fq(workstation)9 b(identi\256er)n(.)25 X1292 y(IN)50 b(Pint)e Fa(menuid)h Fq(menu)11 b(identi\256er)n(.)0 X1367 y(This)j(function)f(sets)h(the)g(post)g(priority)e(of)i(the)g(menu)g X(structure)g(so)g(that)f(it)h(is)g(displayed)f(on)h(top)f(of)h(all)g(the)g X(other)g(posted)0 1417 y(menus)e(and)f(windows.)p 1330 1514 X537 2 v 1330 1593 2 80 v 1344 1568 a Fb(ptk_inqboxmenuat)o(trs)p X1864 1593 V 1330 1595 537 2 v 0 1669 a Fq(void)f Fp(ptk_inqboxmenuattrs)h XFq(\()i(Pint)g Fa(menuid)p Fq(,)g(Ptxpath)f(*)p Fa(menupath)p XFq(,)g(Pint)h(*)p Fa(font)p Fq(,)g(Pint)f(*)p Fa(text-)482 X1719 y(colour)p Fq(,)d(Pint)h(*)p Fa(intcolour)p Fq(,)f(Pint)g(*)p XFa(edgecolour)p Fq(,)f(Pint)i(*)p Fa(boxtlcolour)o Fq(,)482 X1769 y(Pint)e(*)p Fa(boxbrcolo)o(ur)p Fq(,)e(Pint)i(*)p Fa(httextcolou)o(r)p XFq(,)f(Pint)h(*)p Fa(htintcolou)o(r)p Fq(,)f(Pint)482 1819 Xy(*)p Fa(htedgecolo)o(ur)p Fq(,)h(Pint)j(*)p Fa(err)f Fq(\))25 X1869 y(IN)91 b(Pint)141 b Fa(menuid)c Fq(menu)11 b(identi\256er)n(.)25 X1919 y(OUT)50 b(Ptxpath)10 b(*)50 b Fa(menupath)95 b Fq(path)11 Xb(of)g(box)f(menu)i(\(left,)f(right,)f(up,)h(down\).)25 1969 Xy(OUT)50 b(Pint)10 b(*)110 b Fa(font)194 b Fq(text)10 b(font.)25 +-+-+-+-+-+-+-+- END OF PART 117 +-+-+-+-+-+-+-+-