> On Apr 7, 2021, at 1:56 PM, Ryan Joseph <generic...@gmail.com> wrote: > > Ok, so with $H+ constant strings will be specialized as AnsiStrings. And > there is another unicode string mode I should do a similar thing with? Also > if you happen to know where I can get the state of $H+ that would be helpful > otherwise I need to track it down in the debugger. :)
I think I got this part figured out (see function below). I'm going to upload another patch and a bunch of unit tests on the bug tracker but I'm leaving my latest ambiguous function call as-is until further notice. it's sneaky like it is but it follows rules which you can manipulate using casting. ============================== function create_unamed_typesym(def:tdef): tsym; var newtype: tsym; begin newtype:=nil; if is_stringlike(def) then begin if (def.typ=arraydef) and (ado_isconststring in tarraydef(def).arrayoptions) then newtype:=nil else case tstringdef(def).stringtype of st_shortstring: newtype:=nil; st_longstring, st_ansistring: newtype:=search_system_type('ANSISTRING'); st_widestring: newtype:=search_system_type('WIDESTRING'); st_unicodestring: newtype:=search_system_type('UNICODESTRING'); end; { not better string type was found so chose the default string type } if newtype=nil then begin if (cs_refcountedstrings in current_settings.localswitches) then begin if m_default_unicodestring in current_settings.modeswitches then newtype:=search_system_type('UNICODESTRING') else newtype:=search_system_type('ANSISTRING'); end else newtype:=search_system_type('SHORTSTRING'); end; end else begin newtype:=ctypesym.create(def.typename,def); newtype.owner:=def.owner; end; if newtype=nil then internalerror(2021020904); result:=newtype; end; Regards, Ryan Joseph _______________________________________________ fpc-devel maillist - fpc-devel@lists.freepascal.org https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel