diff options
24 files changed, 126 insertions, 136 deletions
diff --git a/INSTALL-WIN32.md b/INSTALL-WIN32.md index 93b7e3a1e1..4e14c6fee4 100644 --- a/INSTALL-WIN32.md +++ b/INSTALL-WIN32.md @@ -211,10 +211,10 @@ Frequently Asked Questions A: For Cygwin and Msys alike, we try to use the latest releases available when building. What versions you use shouldn't really matter, I try to include workarounds for the bugs I've found in - different Cygwin/Msys releases, please help me to add workarounds + different Cygwin/Msys releases, please help me add workarounds for new Cygwin/Msys-related bugs as soon as you encounter them. Also please do submit bug reports to the appropriate Cygwin - adn/or Msys developers. The GCC we used for %OTP-REL% was version + and/or Msys developers. The GCC we used for %OTP-REL% was version 4.7.0 (MinGW 64bit) and 4.3.4 (Cygwin 32bit). We used VC++ 10.0 (i.e. Visual studio 2010), Sun's JDK 1.5.0\_17 (32bit) and Sun's JDK 1.7.0\_1 (64bit), NSIS 2.46, and Win32 OpenSSL 0.9.8r. Please @@ -291,7 +291,7 @@ OpenSSL. Well' here's the list: used but Sun's Java compiler and virtual machine... If you are going to build a 64bit Windows version, you should make - sure to get MinGWs 64bit gcc installed with cygwin. It's in one of + sure to get MinGW's 64bit gcc installed with cygwin. It's in one of the development packages. URL: <http://www.cygwin.com> @@ -428,7 +428,7 @@ OpenSSL. Well' here's the list: e.g. `C:\Program`, they might still reside in `C:\Program Files` in reality... - If you are building a 64 bit verision of Erlang, you should set up + If you are building a 64 bit version of Erlang, you should set up PATHs etc a little differently. I use the following script to make things work in both Cygwin and Msys: @@ -977,7 +977,7 @@ URL:<http://code.google.com/p/msysgit/> that makes a nice Git port. The msys prompt you get from MsysGIT is however not compatible with the full version from MinGW, so you will -need to check out files using MsysGITs command prompt and then switch +need to check out files using MsysGIT's command prompt and then switch to a common Msys command prompt for building. Also all test suites cannot be built as MsysGIT/Msys does not handle symbolic links. To build test suites on Windows, you will need Cygwin for now. Hopefully @@ -1002,11 +1002,11 @@ deserved. Of course this would have been completely impossible without the excellent Cygwin. The guys at Cygnus solutions and -Redhat deserves a huge THANKS! as well as all the other people in the +Redhat deserve a huge THANKS! as well as all the other people in the free software community who have helped in creating the magnificent software that constitutes Cygwin. -Also the people developing the alternative command prompt Msys anfd +Also the people developing the alternative command prompt Msys and the MinGW compiler are worth huge THANKS! The 64bit port would have been impossible without the 64bit MinGW compiler. diff --git a/erts/doc/src/driver.xml b/erts/doc/src/driver.xml index ac5729880d..52283879c7 100644 --- a/erts/doc/src/driver.xml +++ b/erts/doc/src/driver.xml @@ -31,7 +31,7 @@ <note><p>This document was written a long time ago. A lot of it is still interesting since it explains important concepts, but it was - written for an older driver interface so the examples does not + written for an older driver interface so the examples do not work anymore. The reader is encouraged to read <seealso marker="erl_driver">erl_driver</seealso> and the <seealso marker="driver_entry">driver_entry</seealso> documentation. diff --git a/erts/doc/src/erl_driver.xml b/erts/doc/src/erl_driver.xml index b5df4ca0c8..4fd74b783e 100644 --- a/erts/doc/src/erl_driver.xml +++ b/erts/doc/src/erl_driver.xml @@ -43,8 +43,8 @@ to the runtime system at driver initialization, and some new driver API functions. </p> <note> - <p>As of erts version 5.9 old drivers has to be recompiled - and has to use the extended interface. They also has to be + <p>As of erts version 5.9 old drivers have to be recompiled + and have to use the extended interface. They also have to be adjusted to the <seealso marker="#rewrites_for_64_bits">64-bit capable driver interface. </seealso> @@ -283,7 +283,7 @@ called return garbage sizes to the emulator causing it to read random memory and create huge incorrect result blobs.</p> <p>Therefore it is not enough to just recompile drivers written with - version management for pre-R15B types; the types has to be changed + version management for pre-R15B types; the types have to be changed in the driver suggesting other rewrites especially regarding size variables. Investigate all warnings when recompiling!</p> <p>Also, the API driver functions <c>driver_output*</c>, @@ -356,19 +356,19 @@ <p> Driver callback <c><seealso marker="driver_entry#output">output</seealso></c> - now gets <c>ErlDrvSizeT</c> as 3:rd argument instead + now gets <c>ErlDrvSizeT</c> as 3rd argument instead of previously <c>int</c>. </p> <p> Driver callback <c><seealso marker="driver_entry#control">control</seealso></c> - now gets <c>ErlDrvSizeT</c> as 4:th and 6:th arguments instead + now gets <c>ErlDrvSizeT</c> as 4th and 6th arguments instead of previously <c>int</c>. </p> <p> Driver callback <c><seealso marker="driver_entry#call">call</seealso></c> - now gets <c>ErlDrvSizeT</c> as 4:th and 6:th arguments instead + now gets <c>ErlDrvSizeT</c> as 4th and 6th arguments instead of previously <c>int</c>. </p> <p> @@ -410,54 +410,54 @@ <tag>Arguments and return values in the driver API</tag> <item> <p> - Many driver API functions has changed argument type + Many driver API functions have changed argument type and/or return value to <c>ErlDrvSizeT</c> from mostly <c>int</c>. Automatic type casting probably makes these changes necessary only for a driver that encounters sizes larger than 32 bits. </p> <taglist> <tag><seealso marker="#driver_output">driver_output</seealso></tag> - <item>3:rd argument</item> + <item>3rd argument</item> <tag><seealso marker="#driver_output2">driver_output2</seealso></tag> - <item>3:rd and 5:th arguments</item> + <item>3rd and 5th arguments</item> <tag> <seealso marker="#driver_output_binary">driver_output_binary</seealso> </tag> - <item>3:rd 5:th and 6:th arguments</item> + <item>3rd 5th and 6th arguments</item> <tag><seealso marker="#driver_outputv">driver_outputv</seealso></tag> - <item>3:rd and 5:th arguments</item> + <item>3rd and 5th arguments</item> <tag> <seealso marker="#driver_vec_to_buf">driver_vec_to_buf</seealso> </tag> - <item>3:rd argument and return value</item> + <item>3rd argument and return value</item> <tag><seealso marker="#driver_alloc">driver_alloc</seealso></tag> - <item>1:st argument</item> + <item>1st argument</item> <tag><seealso marker="#driver_realloc">driver_realloc</seealso></tag> - <item>2:nd argument</item> + <item>2nd argument</item> <tag> <seealso marker="#driver_alloc_binary">driver_alloc_binary</seealso> </tag> - <item>1:st argument</item> + <item>1st argument</item> <tag> <seealso marker="#driver_realloc_binary">driver_realloc_binary</seealso> </tag> - <item>2:nd argument</item> + <item>2nd argument</item> <tag><seealso marker="#driver_enq">driver_enq</seealso></tag> - <item>3:rd argument</item> + <item>3rd argument</item> <tag><seealso marker="#driver_pushq">driver_pushq</seealso></tag> - <item>3:rd argument</item> + <item>3rd argument</item> <tag><seealso marker="#driver_deq">driver_deq</seealso></tag> - <item>2:nd argument and return value</item> + <item>2nd argument and return value</item> <tag><seealso marker="#driver_sizeq">driver_sizeq</seealso></tag> <item>return value</item> <tag><seealso marker="#driver_enq_bin">driver_enq_bin</seealso></tag> - <item>3:rd and 4:th argument</item> + <item>3rd and 4th argument</item> <tag><seealso marker="#driver_pushq_bin">driver_pushq_bin</seealso></tag> - <item>3:rd and 4:th argument</item> + <item>3rd and 4th argument</item> <tag><seealso marker="#driver_enqv">driver_enqv</seealso></tag> - <item>3:rd argument</item> + <item>3rd argument</item> <tag><seealso marker="#driver_pushqv">driver_pushqv</seealso></tag> - <item>3:rd argument</item> + <item>3rd argument</item> <tag><seealso marker="#driver_peekqv">driver_peekqv</seealso></tag> <item>return value</item> </taglist> diff --git a/lib/asn1/src/asn1_db.erl b/lib/asn1/src/asn1_db.erl index 0862ef6e02..843fc66c9c 100644 --- a/lib/asn1/src/asn1_db.erl +++ b/lib/asn1/src/asn1_db.erl @@ -48,11 +48,19 @@ dbstop() -> Resp = req(stop), erase(?MODULE), Resp. %% Internal functions req(Request) -> - get(?MODULE) ! {self(), Request}, - receive {?MODULE, Reply} -> Reply after 5000 -> exit(db_timeout) end. + DbPid = get(?MODULE), + Ref = erlang:monitor(process,DbPid), + get(?MODULE) ! {{Ref, self()}, Request}, + receive + {{Ref,?MODULE}, Reply} -> + erlang:demonitor(Ref,[flush]), + Reply; + {'DOWN',Ref,_,_,Info} -> + exit({db_error,Info}) + end. -reply(From, Response) -> - From ! {?MODULE, Response}. +reply({Ref,From}, Response) -> + From ! {{Ref,?MODULE}, Response}. init(Parent, Includes) -> MRef = erlang:monitor(process, Parent), diff --git a/lib/asn1/src/asn1ct.erl b/lib/asn1/src/asn1ct.erl index 2d17f73a2c..99755a95a6 100644 --- a/lib/asn1/src/asn1ct.erl +++ b/lib/asn1/src/asn1ct.erl @@ -816,7 +816,9 @@ check({true,M},File,OutFile,Includes,EncodingRule,DbFile,Options,InputMods) -> asn1_db:dbsave(DbFile,M#module.name), verbose("--~p--~n",[{generated,DbFile}],Options), {true,{M,NewM,GenTypeOrVal}} - end + end; + ErrorList = {error,_} -> + {false,ErrorList} end; check({false,M},_,_,_,_,_,_,_) -> {false,M}. diff --git a/lib/asn1/src/asn1ct_check.erl b/lib/asn1/src/asn1ct_check.erl index c223561f12..187339fb53 100644 --- a/lib/asn1/src/asn1ct_check.erl +++ b/lib/asn1/src/asn1ct_check.erl @@ -4399,22 +4399,22 @@ constraint_union(_S,C) -> constraint_union1(S,[A={'ValueRange',_},union,B={'ValueRange',_}|Rest],Acc) -> AunionB = constraint_union_vr([A,B]), - constraint_union1(S,Rest,AunionB++Acc); + constraint_union1(S,Rest,Acc ++ AunionB); constraint_union1(S,[A={'SingleValue',_},union,B={'SingleValue',_}|Rest],Acc) -> AunionB = constraint_union_sv(S,[A,B]), - constraint_union1(S,Rest,AunionB++Acc); + constraint_union1(S,Rest,Acc ++ AunionB); constraint_union1(S,[A={'SingleValue',_},union,B={'ValueRange',_}|Rest],Acc) -> AunionB = union_sv_vr(S,A,B), - constraint_union1(S,Rest,AunionB++Acc); + constraint_union1(S,Rest,Acc ++ AunionB); constraint_union1(S,[A={'ValueRange',_},union,B={'SingleValue',_}|Rest],Acc) -> AunionB = union_sv_vr(S,B,A), - constraint_union1(S,Rest,AunionB++Acc); + constraint_union1(S,Rest,Acc ++ AunionB); constraint_union1(S,[union|Rest],Acc) -> %skip when unsupported constraints constraint_union1(S,Rest,Acc); constraint_union1(S,[A|Rest],Acc) -> constraint_union1(S,Rest,[A|Acc]); constraint_union1(_S,[],Acc) -> - lists:reverse(Acc). + Acc. constraint_union_sv(_S,SV) -> Values=lists:map(fun({_,V})->V end,SV), @@ -4467,63 +4467,33 @@ constraint_union_vr([{_,{_,Ub2}}|Rest],A=[{_,{_,Ub1}}|_Acc]) when Ub2=<Ub1-> constraint_union_vr([VR|Rest],Acc) -> constraint_union_vr(Rest,[VR|Acc]). -union_sv_vr(_S,C1={'SingleValue',SV},C2={'ValueRange',VR={Lb,Ub}}) +union_sv_vr(_S,{'SingleValue',SV},VR) when is_integer(SV) -> - case is_int_in_vr(SV,C2) of - true -> [C2]; - _ -> - case VR of - {'MIN',Ub} when SV==Ub+1 -> [{'ValueRange',{'MIN',SV}}]; - {Lb,'MAX'} when SV==Lb-1 -> [{'ValueRange',{SV,'MAX'}}]; - {Lb,Ub} when SV==Ub+1 -> [{'ValueRange',{Lb,SV}}]; - {Lb,Ub} when SV==Lb-1 -> [{'ValueRange',{SV,Ub}}]; - _ -> - [C1,C2] - end - end; -union_sv_vr(_S,C1={'SingleValue',SV},C2={'ValueRange',{_Lb,_Ub}}) + union_sv_vr(_S,{'SingleValue',[SV]},VR); +union_sv_vr(_S,{'SingleValue',SV},{'ValueRange',{VLb,VUb}}) when is_list(SV) -> - case lists:filter(fun(X)->is_int_in_vr(X,C2) end,SV) of - [] -> [C2]; - L -> - case expand_vr(L,C2) of - {[],C3} -> [C3]; - {L,C2} -> [C1,C2]; - {[Val],C3} -> [{'SingleValue',Val},C3]; - {L2,C3} -> [{'SingleValue',L2},C3] - end - end. - -expand_vr(L,VR={_,{Lb,Ub}}) -> - case lower_Lb(L,Lb) of - false -> - case higher_Ub(L,Ub) of - false -> - {L,VR}; - {L1,UbNew} -> - expand_vr(L1,{'ValueRange',{Lb,UbNew}}) - end; - {L1,LbNew} -> - expand_vr(L1,{'ValueRange',{LbNew,Ub}}) - end. - -lower_Lb(_,'MIN') -> - false; -lower_Lb(L,Lb) -> - remove_val_from_list(Lb - 1,L). - -higher_Ub(_,'MAX') -> - false; -higher_Ub(L,Ub) -> - remove_val_from_list(Ub + 1,L). + L = lists:sort(SV++[VLb,VUb]), + {Lb,L1} = case lists:member('MIN',L) of + true -> {'MIN',L--['MIN']}; % remove 'MIN' so it does not disturb + false -> {hd(L),tl(L)} + end, + Ub = case lists:member('MAX',L1) of + true -> 'MAX'; + false -> lists:last(L1) + end, + case SV of + [H] -> H; + _ -> SV + end, + %% for now we through away the Singlevalues so that they don't disturb + %% in the code generating phase (the effective Valuerange is already + %% calculated. If we want to keep the Singlevalues as well for + %% use in code gen phases we need to introduce a new representation + %% like {'ValueRange',{Lb,Ub},[ListOfRanges|AntiValues|Singlevalues] + %% These could be used to generate guards which allows only the specific + %% values , not the full range + [{'ValueRange',{Lb,Ub}}]. -remove_val_from_list(Val,List) -> - case lists:member(Val,List) of - true -> - {lists:delete(Val,List),Val}; - false -> - false - end. %% get_constraints/2 %% Arguments are a list of constraints, which has the format {key,value}, diff --git a/lib/asn1/test/asn1_SUITE_data/Constraints.py b/lib/asn1/test/asn1_SUITE_data/Constraints.py index b18c29bd89..de48c4c2ca 100644 --- a/lib/asn1/test/asn1_SUITE_data/Constraints.py +++ b/lib/asn1/test/asn1_SUITE_data/Constraints.py @@ -51,6 +51,7 @@ Thing ::= INTEGER {fred (0),fred2 (1),fred3 (2)} AnotherThing ::= Thing (fred | fred2) I ::= INTEGER (0|15..269) -- OTP-5457 +X1 ::= INTEGER (1..4 | 8 | 10 | 20) -- OTP-9946 -- OTP-5511 diff --git a/lib/asn1/test/testConstraints.erl b/lib/asn1/test/testConstraints.erl index cb15a24359..1ce68ec522 100644 --- a/lib/asn1/test/testConstraints.erl +++ b/lib/asn1/test/testConstraints.erl @@ -127,17 +127,26 @@ int_constraints(Rules) -> ?line {ok,0} = asn1_wrapper:decode('Constraints','I',Bytes12), ?line {ok,Bytes13} = asn1_wrapper:encode('Constraints','I',20), ?line {ok,20} = asn1_wrapper:decode('Constraints','I',Bytes13), - + + %%========================================================== + %% Constraint Combinations (Duboisson p. 285) + %% X1 ::= INTEGER (1..4|8|10|20) + %%========================================================== + + ?line {ok,Bytes14} = asn1_wrapper:encode('Constraints','X1',1), + ?line {ok,1} = asn1_wrapper:decode('Constraints','X1',Bytes14), + ?line {ok,Bytes15} = asn1_wrapper:encode('Constraints','X1',20), + ?line {ok,20} = asn1_wrapper:decode('Constraints','X1',Bytes15), %%========================================================== %% SIZE Constraint (Duboisson p. 268) %% T ::= IA5String (SIZE (1|2, ..., SIZE (1|2|3))) %% T2 ::= IA5String (SIZE (1|2, ..., 3)) %%========================================================== - ?line {ok,Bytes14} = asn1_wrapper:encode('Constraints','T',"IA"), - ?line {ok,"IA"} = asn1_wrapper:decode('Constraints','T',Bytes14), - ?line {ok,Bytes15} = asn1_wrapper:encode('Constraints','T2',"IA"), - ?line {ok,"IA"} = asn1_wrapper:decode('Constraints','T2',Bytes15). + ?line {ok,Bytes16} = asn1_wrapper:encode('Constraints','T',"IA"), + ?line {ok,"IA"} = asn1_wrapper:decode('Constraints','T',Bytes16), + ?line {ok,Bytes17} = asn1_wrapper:encode('Constraints','T2',"IA"), + ?line {ok,"IA"} = asn1_wrapper:decode('Constraints','T2',Bytes17). refed_NNL_name(_Erule) -> diff --git a/lib/common_test/doc/src/getting_started_chapter.xml b/lib/common_test/doc/src/getting_started_chapter.xml index 05e21241cb..7919edd183 100644 --- a/lib/common_test/doc/src/getting_started_chapter.xml +++ b/lib/common_test/doc/src/getting_started_chapter.xml @@ -90,7 +90,7 @@ <p>As you can understand from the illustration above, Common Test requires that a test case generates a runtime error to indicate failure (e.g. by causing a bad match error or by calling <c>exit/1</c>, preferrably - through the <c>ct:fail/1/2</c> help function). A succesful execution is + through the <c>ct:fail/1,2</c> help function). A succesful execution is indicated by means of a normal return from the test case function. </p> </section> @@ -198,7 +198,7 @@ <pre> 1> ct:run_test([{suite, "check_log_SUITE"}]).</pre> <p> - The result from running our test is printed in log files on HTML format + The result from running our test is printed in log files in HTML format (stored in unique log directories on different level). This illustration shows the log file structure: </p> diff --git a/lib/eldap/doc/src/eldap.xml b/lib/eldap/doc/src/eldap.xml index 7040085c49..04dad2eee7 100644 --- a/lib/eldap/doc/src/eldap.xml +++ b/lib/eldap/doc/src/eldap.xml @@ -247,12 +247,12 @@ filter() See present/1, substrings/2, <desc> <p>Always derefrence aliases.</p> </desc> </func> <func> - <name> derefInSearching() -> dereference()</name> + <name>derefInSearching() -> dereference()</name> <fsummary>Create search option.</fsummary> <desc> <p>Derefrence aliases only when searching.</p> </desc> </func> <func> - <name> derefFindingBaseObj() -> dereference()</name> + <name>derefFindingBaseObj() -> dereference()</name> <fsummary>Create search option.</fsummary> <desc> <p>Derefrence aliases only in finding the base.</p> </desc> </func> diff --git a/lib/eldap/doc/src/notes.xml b/lib/eldap/doc/src/notes.xml index 4ded452bc3..d9b11875de 100644 --- a/lib/eldap/doc/src/notes.xml +++ b/lib/eldap/doc/src/notes.xml @@ -21,8 +21,8 @@ </legalnotice> - <title>Crypto Release Notes</title> - <prepared>Peter Högfeldt</prepared> + <title>Eldap Release Notes</title> + <prepared>OTP team</prepared> <docno></docno> <date>2003-06-06</date> <rev>B</rev> diff --git a/lib/eldap/doc/src/release_notes.xml b/lib/eldap/doc/src/release_notes.xml index 65c1d09bb6..778a49b894 100644 --- a/lib/eldap/doc/src/release_notes.xml +++ b/lib/eldap/doc/src/release_notes.xml @@ -22,8 +22,8 @@ The Initial Developer of the Original Code is Ericsson AB. </legalnotice> - <title>Crypto Release Notes</title> - <prepared>Peter Hjögfeldt</prepared> + <title>Eldap Release Notes</title> + <prepared>OTP team</prepared> <docno></docno> <date>2003-06-01</date> <rev>B</rev> diff --git a/lib/wx/api_gen/wx_gen_erl.erl b/lib/wx/api_gen/wx_gen_erl.erl index 6159b7c4bd..a8f23575f3 100644 --- a/lib/wx/api_gen/wx_gen_erl.erl +++ b/lib/wx/api_gen/wx_gen_erl.erl @@ -763,8 +763,8 @@ doc_arg_type3(#type{base=string}, in) -> "unicode:chardata()"; doc_arg_type3(#type{base=string}, out) -> "unicode:charlist()"; doc_arg_type3(#type{name="wxChar", single=S},in) when S =/= true -> "unicode:chardata()"; doc_arg_type3(#type{name="wxChar", single=S},out) when S =/= true -> "unicode:charlist()"; -doc_arg_type3(#type{name="wxArrayString"},in) -> "[unicode:chardata()]"; -doc_arg_type3(#type{name="wxArrayString"},out) -> "[unicode:charlist()]"; +doc_arg_type3(#type{name="wxArrayString"},in) -> "unicode:chardata()"; +doc_arg_type3(#type{name="wxArrayString"},out) -> "unicode:charlist()"; doc_arg_type3(#type{name="wxDateTime"}, _) -> "wx:wx_datetime()"; doc_arg_type3(#type{name="wxArtClient"}, _) -> "unicode:chardata()"; doc_arg_type3(#type{base=int}, _) -> "integer()"; diff --git a/lib/wx/src/gen/wxCheckListBox.erl b/lib/wx/src/gen/wxCheckListBox.erl index 083a9e32f4..382345abfa 100644 --- a/lib/wx/src/gen/wxCheckListBox.erl +++ b/lib/wx/src/gen/wxCheckListBox.erl @@ -104,7 +104,7 @@ new(Parent,Id) Parent::wxWindow:wxWindow(), Id::integer(), Option :: {pos, {X::integer(), Y::integer()}} | {size, {W::integer(), H::integer()}} - | {choices, [[unicode:chardata()]]} + | {choices, [unicode:chardata()]} | {style, integer()} | {validator, wx:wx_object()}. new(#wx_ref{type=ParentT,ref=ParentRef},Id, Options) diff --git a/lib/wx/src/gen/wxChoice.erl b/lib/wx/src/gen/wxChoice.erl index 2a2b2688fe..92b094036e 100644 --- a/lib/wx/src/gen/wxChoice.erl +++ b/lib/wx/src/gen/wxChoice.erl @@ -102,7 +102,7 @@ new(Parent,Id) Parent::wxWindow:wxWindow(), Id::integer(), Option :: {pos, {X::integer(), Y::integer()}} | {size, {W::integer(), H::integer()}} - | {choices, [[unicode:chardata()]]} + | {choices, [unicode:chardata()]} | {style, integer()} | {validator, wx:wx_object()}. new(#wx_ref{type=ParentT,ref=ParentRef},Id, Options) @@ -120,7 +120,7 @@ new(#wx_ref{type=ParentT,ref=ParentRef},Id, Options) %% @equiv create(This,Parent,Id,Pos,Size,Choices, []) -spec create(This, Parent, Id, Pos, Size, Choices) -> boolean() when - This::wxChoice(), Parent::wxWindow:wxWindow(), Id::integer(), Pos::{X::integer(), Y::integer()}, Size::{W::integer(), H::integer()}, Choices::[[unicode:chardata()]]. + This::wxChoice(), Parent::wxWindow:wxWindow(), Id::integer(), Pos::{X::integer(), Y::integer()}, Size::{W::integer(), H::integer()}, Choices::[unicode:chardata()]. create(This,Parent,Id,Pos={PosX,PosY},Size={SizeW,SizeH},Choices) when is_record(This, wx_ref),is_record(Parent, wx_ref),is_integer(Id),is_integer(PosX),is_integer(PosY),is_integer(SizeW),is_integer(SizeH),is_list(Choices) -> @@ -128,7 +128,7 @@ create(This,Parent,Id,Pos={PosX,PosY},Size={SizeW,SizeH},Choices) %% @doc See <a href="http://www.wxwidgets.org/manuals/stable/wx_wxchoice.html#wxchoicecreate">external documentation</a>. -spec create(This, Parent, Id, Pos, Size, Choices, [Option]) -> boolean() when - This::wxChoice(), Parent::wxWindow:wxWindow(), Id::integer(), Pos::{X::integer(), Y::integer()}, Size::{W::integer(), H::integer()}, Choices::[[unicode:chardata()]], + This::wxChoice(), Parent::wxWindow:wxWindow(), Id::integer(), Pos::{X::integer(), Y::integer()}, Size::{W::integer(), H::integer()}, Choices::[unicode:chardata()], Option :: {style, integer()} | {validator, wx:wx_object()}. create(#wx_ref{type=ThisT,ref=ThisRef},#wx_ref{type=ParentT,ref=ParentRef},Id,{PosX,PosY},{SizeW,SizeH},Choices, Options) diff --git a/lib/wx/src/gen/wxComboBox.erl b/lib/wx/src/gen/wxComboBox.erl index c67ff82bbc..4e6b247f67 100644 --- a/lib/wx/src/gen/wxComboBox.erl +++ b/lib/wx/src/gen/wxComboBox.erl @@ -105,7 +105,7 @@ new(Parent,Id) Option :: {value, unicode:chardata()} | {pos, {X::integer(), Y::integer()}} | {size, {W::integer(), H::integer()}} - | {choices, [[unicode:chardata()]]} + | {choices, [unicode:chardata()]} | {style, integer()} | {validator, wx:wx_object()}. new(#wx_ref{type=ParentT,ref=ParentRef},Id, Options) @@ -124,7 +124,7 @@ new(#wx_ref{type=ParentT,ref=ParentRef},Id, Options) %% @equiv create(This,Parent,Id,Value,Pos,Size,Choices, []) -spec create(This, Parent, Id, Value, Pos, Size, Choices) -> boolean() when - This::wxComboBox(), Parent::wxWindow:wxWindow(), Id::integer(), Value::unicode:chardata(), Pos::{X::integer(), Y::integer()}, Size::{W::integer(), H::integer()}, Choices::[[unicode:chardata()]]. + This::wxComboBox(), Parent::wxWindow:wxWindow(), Id::integer(), Value::unicode:chardata(), Pos::{X::integer(), Y::integer()}, Size::{W::integer(), H::integer()}, Choices::[unicode:chardata()]. create(This,Parent,Id,Value,Pos={PosX,PosY},Size={SizeW,SizeH},Choices) when is_record(This, wx_ref),is_record(Parent, wx_ref),is_integer(Id),is_list(Value),is_integer(PosX),is_integer(PosY),is_integer(SizeW),is_integer(SizeH),is_list(Choices) -> @@ -132,7 +132,7 @@ create(This,Parent,Id,Value,Pos={PosX,PosY},Size={SizeW,SizeH},Choices) %% @doc See <a href="http://www.wxwidgets.org/manuals/stable/wx_wxcombobox.html#wxcomboboxcreate">external documentation</a>. -spec create(This, Parent, Id, Value, Pos, Size, Choices, [Option]) -> boolean() when - This::wxComboBox(), Parent::wxWindow:wxWindow(), Id::integer(), Value::unicode:chardata(), Pos::{X::integer(), Y::integer()}, Size::{W::integer(), H::integer()}, Choices::[[unicode:chardata()]], + This::wxComboBox(), Parent::wxWindow:wxWindow(), Id::integer(), Value::unicode:chardata(), Pos::{X::integer(), Y::integer()}, Size::{W::integer(), H::integer()}, Choices::[unicode:chardata()], Option :: {style, integer()} | {validator, wx:wx_object()}. create(#wx_ref{type=ThisT,ref=ThisRef},#wx_ref{type=ParentT,ref=ParentRef},Id,Value,{PosX,PosY},{SizeW,SizeH},Choices, Options) diff --git a/lib/wx/src/gen/wxControlWithItems.erl b/lib/wx/src/gen/wxControlWithItems.erl index 1e2f89dbf0..92632a1c31 100644 --- a/lib/wx/src/gen/wxControlWithItems.erl +++ b/lib/wx/src/gen/wxControlWithItems.erl @@ -103,7 +103,7 @@ append(#wx_ref{type=ThisT,ref=ThisRef},Item,ClientData) %% @doc See <a href="http://www.wxwidgets.org/manuals/stable/wx_wxcontrolwithitems.html#wxcontrolwithitemsappend">external documentation</a>. -spec appendStrings(This, Strings) -> ok when - This::wxControlWithItems(), Strings::[[unicode:chardata()]]. + This::wxControlWithItems(), Strings::[unicode:chardata()]. appendStrings(#wx_ref{type=ThisT,ref=ThisRef},Strings) when is_list(Strings) -> ?CLASS(ThisT,wxControlWithItems), diff --git a/lib/wx/src/gen/wxFileDataObject.erl b/lib/wx/src/gen/wxFileDataObject.erl index bcb30a5ece..435c795cdc 100644 --- a/lib/wx/src/gen/wxFileDataObject.erl +++ b/lib/wx/src/gen/wxFileDataObject.erl @@ -55,7 +55,7 @@ addFile(#wx_ref{type=ThisT,ref=ThisRef},Filename) <<ThisRef:32/?UI,(byte_size(Filename_UC)):32/?UI,(Filename_UC)/binary, 0:(((8- ((0+byte_size(Filename_UC)) band 16#7)) band 16#7))/unit:8>>). %% @doc See <a href="http://www.wxwidgets.org/manuals/stable/wx_wxfiledataobject.html#wxfiledataobjectgetfilenames">external documentation</a>. --spec getFilenames(This) -> [[unicode:charlist()]] when +-spec getFilenames(This) -> [unicode:charlist()] when This::wxFileDataObject(). getFilenames(#wx_ref{type=ThisT,ref=ThisRef}) -> ?CLASS(ThisT,wxFileDataObject), diff --git a/lib/wx/src/gen/wxFileDialog.erl b/lib/wx/src/gen/wxFileDialog.erl index 3d65c92758..a257905795 100644 --- a/lib/wx/src/gen/wxFileDialog.erl +++ b/lib/wx/src/gen/wxFileDialog.erl @@ -138,7 +138,7 @@ getFilename(#wx_ref{type=ThisT,ref=ThisRef}) -> <<ThisRef:32/?UI>>). %% @doc See <a href="http://www.wxwidgets.org/manuals/stable/wx_wxfiledialog.html#wxfiledialoggetfilenames">external documentation</a>. --spec getFilenames(This) -> [[unicode:charlist()]] when +-spec getFilenames(This) -> [unicode:charlist()] when This::wxFileDialog(). getFilenames(#wx_ref{type=ThisT,ref=ThisRef}) -> ?CLASS(ThisT,wxFileDialog), @@ -170,7 +170,7 @@ getPath(#wx_ref{type=ThisT,ref=ThisRef}) -> <<ThisRef:32/?UI>>). %% @doc See <a href="http://www.wxwidgets.org/manuals/stable/wx_wxfiledialog.html#wxfiledialoggetpaths">external documentation</a>. --spec getPaths(This) -> [[unicode:charlist()]] when +-spec getPaths(This) -> [unicode:charlist()] when This::wxFileDialog(). getPaths(#wx_ref{type=ThisT,ref=ThisRef}) -> ?CLASS(ThisT,wxFileDialog), diff --git a/lib/wx/src/gen/wxGridCellChoiceEditor.erl b/lib/wx/src/gen/wxGridCellChoiceEditor.erl index 6f7d7ceffb..6b037e01b3 100644 --- a/lib/wx/src/gen/wxGridCellChoiceEditor.erl +++ b/lib/wx/src/gen/wxGridCellChoiceEditor.erl @@ -41,7 +41,7 @@ parent_class(_Class) -> erlang:error({badtype, ?MODULE}). -type wxGridCellChoiceEditor() :: wx:wx_object(). %% @equiv new(Choices, []) -spec new(Choices) -> wxGridCellChoiceEditor() when - Choices::[[unicode:chardata()]]. + Choices::[unicode:chardata()]. new(Choices) when is_list(Choices) -> @@ -49,7 +49,7 @@ new(Choices) %% @doc See <a href="http://www.wxwidgets.org/manuals/stable/wx_wxgridcellchoiceeditor.html#wxgridcellchoiceeditorwxgridcellchoiceeditor">external documentation</a>. -spec new(Choices, [Option]) -> wxGridCellChoiceEditor() when - Choices::[[unicode:chardata()]], + Choices::[unicode:chardata()], Option :: {allowOthers, boolean()}. new(Choices, Options) when is_list(Choices),is_list(Options) -> diff --git a/lib/wx/src/gen/wxListBox.erl b/lib/wx/src/gen/wxListBox.erl index 3b41de9ffc..fa4cbd01d5 100644 --- a/lib/wx/src/gen/wxListBox.erl +++ b/lib/wx/src/gen/wxListBox.erl @@ -102,7 +102,7 @@ new(Parent,Id) Parent::wxWindow:wxWindow(), Id::integer(), Option :: {pos, {X::integer(), Y::integer()}} | {size, {W::integer(), H::integer()}} - | {choices, [[unicode:chardata()]]} + | {choices, [unicode:chardata()]} | {style, integer()} | {validator, wx:wx_object()}. new(#wx_ref{type=ParentT,ref=ParentRef},Id, Options) @@ -120,7 +120,7 @@ new(#wx_ref{type=ParentT,ref=ParentRef},Id, Options) %% @equiv create(This,Parent,Id,Pos,Size,Choices, []) -spec create(This, Parent, Id, Pos, Size, Choices) -> boolean() when - This::wxListBox(), Parent::wxWindow:wxWindow(), Id::integer(), Pos::{X::integer(), Y::integer()}, Size::{W::integer(), H::integer()}, Choices::[[unicode:chardata()]]. + This::wxListBox(), Parent::wxWindow:wxWindow(), Id::integer(), Pos::{X::integer(), Y::integer()}, Size::{W::integer(), H::integer()}, Choices::[unicode:chardata()]. create(This,Parent,Id,Pos={PosX,PosY},Size={SizeW,SizeH},Choices) when is_record(This, wx_ref),is_record(Parent, wx_ref),is_integer(Id),is_integer(PosX),is_integer(PosY),is_integer(SizeW),is_integer(SizeH),is_list(Choices) -> @@ -128,7 +128,7 @@ create(This,Parent,Id,Pos={PosX,PosY},Size={SizeW,SizeH},Choices) %% @doc See <a href="http://www.wxwidgets.org/manuals/stable/wx_wxlistbox.html#wxlistboxcreate">external documentation</a>. -spec create(This, Parent, Id, Pos, Size, Choices, [Option]) -> boolean() when - This::wxListBox(), Parent::wxWindow:wxWindow(), Id::integer(), Pos::{X::integer(), Y::integer()}, Size::{W::integer(), H::integer()}, Choices::[[unicode:chardata()]], + This::wxListBox(), Parent::wxWindow:wxWindow(), Id::integer(), Pos::{X::integer(), Y::integer()}, Size::{W::integer(), H::integer()}, Choices::[unicode:chardata()], Option :: {style, integer()} | {validator, wx:wx_object()}. create(#wx_ref{type=ThisT,ref=ThisRef},#wx_ref{type=ParentT,ref=ParentRef},Id,{PosX,PosY},{SizeW,SizeH},Choices, Options) @@ -164,7 +164,7 @@ getSelections(#wx_ref{type=ThisT,ref=ThisRef}) -> %% @doc See <a href="http://www.wxwidgets.org/manuals/stable/wx_wxlistbox.html#wxlistboxinsertitems">external documentation</a>. -spec insertItems(This, Items, Pos) -> ok when - This::wxListBox(), Items::[[unicode:chardata()]], Pos::integer(). + This::wxListBox(), Items::[unicode:chardata()], Pos::integer(). insertItems(#wx_ref{type=ThisT,ref=ThisRef},Items,Pos) when is_list(Items),is_integer(Pos) -> ?CLASS(ThisT,wxListBox), @@ -184,7 +184,7 @@ isSelected(#wx_ref{type=ThisT,ref=ThisRef},N) %% @doc See <a href="http://www.wxwidgets.org/manuals/stable/wx_wxlistbox.html#wxlistboxset">external documentation</a>. -spec set(This, Items) -> ok when - This::wxListBox(), Items::[[unicode:chardata()]]. + This::wxListBox(), Items::[unicode:chardata()]. set(#wx_ref{type=ThisT,ref=ThisRef},Items) when is_list(Items) -> ?CLASS(ThisT,wxListBox), diff --git a/lib/wx/src/gen/wxMultiChoiceDialog.erl b/lib/wx/src/gen/wxMultiChoiceDialog.erl index 04cbb832ea..6a6a6b833a 100644 --- a/lib/wx/src/gen/wxMultiChoiceDialog.erl +++ b/lib/wx/src/gen/wxMultiChoiceDialog.erl @@ -94,7 +94,7 @@ new() -> %% @equiv new(Parent,Message,Caption,Choices, []) -spec new(Parent, Message, Caption, Choices) -> wxMultiChoiceDialog() when - Parent::wxWindow:wxWindow(), Message::unicode:chardata(), Caption::unicode:chardata(), Choices::[[unicode:chardata()]]. + Parent::wxWindow:wxWindow(), Message::unicode:chardata(), Caption::unicode:chardata(), Choices::[unicode:chardata()]. new(Parent,Message,Caption,Choices) when is_record(Parent, wx_ref),is_list(Message),is_list(Caption),is_list(Choices) -> @@ -102,7 +102,7 @@ new(Parent,Message,Caption,Choices) %% @doc See <a href="http://www.wxwidgets.org/manuals/stable/wx_wxmultichoicedialog.html#wxmultichoicedialogwxmultichoicedialog">external documentation</a>. -spec new(Parent, Message, Caption, Choices, [Option]) -> wxMultiChoiceDialog() when - Parent::wxWindow:wxWindow(), Message::unicode:chardata(), Caption::unicode:chardata(), Choices::[[unicode:chardata()]], + Parent::wxWindow:wxWindow(), Message::unicode:chardata(), Caption::unicode:chardata(), Choices::[unicode:chardata()], Option :: {style, integer()} | {pos, {X::integer(), Y::integer()}}. new(#wx_ref{type=ParentT,ref=ParentRef},Message,Caption,Choices, Options) diff --git a/lib/wx/src/gen/wxRadioBox.erl b/lib/wx/src/gen/wxRadioBox.erl index 7843fde488..b7f52d7d9c 100644 --- a/lib/wx/src/gen/wxRadioBox.erl +++ b/lib/wx/src/gen/wxRadioBox.erl @@ -82,7 +82,7 @@ parent_class(_Class) -> erlang:error({badtype, ?MODULE}). -type wxRadioBox() :: wx:wx_object(). %% @equiv new(Parent,Id,Title,Pos,Size,Choices, []) -spec new(Parent, Id, Title, Pos, Size, Choices) -> wxRadioBox() when - Parent::wxWindow:wxWindow(), Id::integer(), Title::unicode:chardata(), Pos::{X::integer(), Y::integer()}, Size::{W::integer(), H::integer()}, Choices::[[unicode:chardata()]]. + Parent::wxWindow:wxWindow(), Id::integer(), Title::unicode:chardata(), Pos::{X::integer(), Y::integer()}, Size::{W::integer(), H::integer()}, Choices::[unicode:chardata()]. new(Parent,Id,Title,Pos={PosX,PosY},Size={SizeW,SizeH},Choices) when is_record(Parent, wx_ref),is_integer(Id),is_list(Title),is_integer(PosX),is_integer(PosY),is_integer(SizeW),is_integer(SizeH),is_list(Choices) -> @@ -90,7 +90,7 @@ new(Parent,Id,Title,Pos={PosX,PosY},Size={SizeW,SizeH},Choices) %% @doc See <a href="http://www.wxwidgets.org/manuals/stable/wx_wxradiobox.html#wxradioboxwxradiobox">external documentation</a>. -spec new(Parent, Id, Title, Pos, Size, Choices, [Option]) -> wxRadioBox() when - Parent::wxWindow:wxWindow(), Id::integer(), Title::unicode:chardata(), Pos::{X::integer(), Y::integer()}, Size::{W::integer(), H::integer()}, Choices::[[unicode:chardata()]], + Parent::wxWindow:wxWindow(), Id::integer(), Title::unicode:chardata(), Pos::{X::integer(), Y::integer()}, Size::{W::integer(), H::integer()}, Choices::[unicode:chardata()], Option :: {majorDim, integer()} | {style, integer()} | {val, wx:wx_object()}. @@ -110,7 +110,7 @@ new(#wx_ref{type=ParentT,ref=ParentRef},Id,Title,{PosX,PosY},{SizeW,SizeH},Choic %% @equiv create(This,Parent,Id,Title,Pos,Size,Choices, []) -spec create(This, Parent, Id, Title, Pos, Size, Choices) -> boolean() when - This::wxRadioBox(), Parent::wxWindow:wxWindow(), Id::integer(), Title::unicode:chardata(), Pos::{X::integer(), Y::integer()}, Size::{W::integer(), H::integer()}, Choices::[[unicode:chardata()]]. + This::wxRadioBox(), Parent::wxWindow:wxWindow(), Id::integer(), Title::unicode:chardata(), Pos::{X::integer(), Y::integer()}, Size::{W::integer(), H::integer()}, Choices::[unicode:chardata()]. create(This,Parent,Id,Title,Pos={PosX,PosY},Size={SizeW,SizeH},Choices) when is_record(This, wx_ref),is_record(Parent, wx_ref),is_integer(Id),is_list(Title),is_integer(PosX),is_integer(PosY),is_integer(SizeW),is_integer(SizeH),is_list(Choices) -> @@ -118,7 +118,7 @@ create(This,Parent,Id,Title,Pos={PosX,PosY},Size={SizeW,SizeH},Choices) %% @doc See <a href="http://www.wxwidgets.org/manuals/stable/wx_wxradiobox.html#wxradioboxcreate">external documentation</a>. -spec create(This, Parent, Id, Title, Pos, Size, Choices, [Option]) -> boolean() when - This::wxRadioBox(), Parent::wxWindow:wxWindow(), Id::integer(), Title::unicode:chardata(), Pos::{X::integer(), Y::integer()}, Size::{W::integer(), H::integer()}, Choices::[[unicode:chardata()]], + This::wxRadioBox(), Parent::wxWindow:wxWindow(), Id::integer(), Title::unicode:chardata(), Pos::{X::integer(), Y::integer()}, Size::{W::integer(), H::integer()}, Choices::[unicode:chardata()], Option :: {majorDim, integer()} | {style, integer()} | {val, wx:wx_object()}. diff --git a/lib/wx/src/gen/wxSingleChoiceDialog.erl b/lib/wx/src/gen/wxSingleChoiceDialog.erl index 6f96e283c8..db6b41ae75 100644 --- a/lib/wx/src/gen/wxSingleChoiceDialog.erl +++ b/lib/wx/src/gen/wxSingleChoiceDialog.erl @@ -94,7 +94,7 @@ new() -> %% @equiv new(Parent,Message,Caption,Choices, []) -spec new(Parent, Message, Caption, Choices) -> wxSingleChoiceDialog() when - Parent::wxWindow:wxWindow(), Message::unicode:chardata(), Caption::unicode:chardata(), Choices::[[unicode:chardata()]]. + Parent::wxWindow:wxWindow(), Message::unicode:chardata(), Caption::unicode:chardata(), Choices::[unicode:chardata()]. new(Parent,Message,Caption,Choices) when is_record(Parent, wx_ref),is_list(Message),is_list(Caption),is_list(Choices) -> @@ -102,7 +102,7 @@ new(Parent,Message,Caption,Choices) %% @doc See <a href="http://www.wxwidgets.org/manuals/stable/wx_wxsinglechoicedialog.html#wxsinglechoicedialogwxsinglechoicedialog">external documentation</a>. -spec new(Parent, Message, Caption, Choices, [Option]) -> wxSingleChoiceDialog() when - Parent::wxWindow:wxWindow(), Message::unicode:chardata(), Caption::unicode:chardata(), Choices::[[unicode:chardata()]], + Parent::wxWindow:wxWindow(), Message::unicode:chardata(), Caption::unicode:chardata(), Choices::[unicode:chardata()], Option :: {style, integer()} | {pos, {X::integer(), Y::integer()}}. new(#wx_ref{type=ParentT,ref=ParentRef},Message,Caption,Choices, Options) |