@@ -642,4 +642,197 @@ public unsafe static void SetValueInternalPtr(string cvarName, nint value) {
642642 pool . Return ( cvarNameBuffer ) ;
643643 }
644644 }
645+
646+ private unsafe static delegate * unmanaged< byte * , byte * , byte > _SetValueAsString ;
647+
648+ public unsafe static bool SetValueAsString ( string cvarName , string value ) {
649+ var pool = ArrayPool < byte > . Shared ;
650+ var cvarNameLength = Encoding . UTF8 . GetByteCount ( cvarName ) ;
651+ var cvarNameBuffer = pool . Rent ( cvarNameLength + 1 ) ;
652+ Encoding . UTF8 . GetBytes ( cvarName , cvarNameBuffer ) ;
653+ cvarNameBuffer [ cvarNameLength ] = 0 ;
654+ var valueLength = Encoding . UTF8 . GetByteCount ( value ) ;
655+ var valueBuffer = pool . Rent ( valueLength + 1 ) ;
656+ Encoding . UTF8 . GetBytes ( value , valueBuffer ) ;
657+ valueBuffer [ valueLength ] = 0 ;
658+ fixed ( byte * cvarNameBufferPtr = cvarNameBuffer ) {
659+ fixed ( byte * valueBufferPtr = valueBuffer ) {
660+ var ret = _SetValueAsString ( cvarNameBufferPtr , valueBufferPtr ) ;
661+ pool . Return ( cvarNameBuffer ) ;
662+ pool . Return ( valueBuffer ) ;
663+ return ret == 1 ;
664+ }
665+ }
666+ }
667+
668+ private unsafe static delegate * unmanaged< byte * , byte * , int > _GetValueAsString ;
669+
670+ public unsafe static string GetValueAsString ( string cvarName ) {
671+ var pool = ArrayPool < byte > . Shared ;
672+ var cvarNameLength = Encoding . UTF8 . GetByteCount ( cvarName ) ;
673+ var cvarNameBuffer = pool . Rent ( cvarNameLength + 1 ) ;
674+ Encoding . UTF8 . GetBytes ( cvarName , cvarNameBuffer ) ;
675+ cvarNameBuffer [ cvarNameLength ] = 0 ;
676+ fixed ( byte * cvarNameBufferPtr = cvarNameBuffer ) {
677+ var ret = _GetValueAsString ( null , cvarNameBufferPtr ) ;
678+ var retBuffer = pool . Rent ( ret + 1 ) ;
679+ fixed ( byte * retBufferPtr = retBuffer ) {
680+ ret = _GetValueAsString ( retBufferPtr , cvarNameBufferPtr ) ;
681+ var retString = Encoding . UTF8 . GetString ( retBufferPtr , ret ) ;
682+ pool . Return ( retBuffer ) ;
683+ pool . Return ( cvarNameBuffer ) ;
684+ return retString ;
685+ }
686+ }
687+ }
688+
689+ private unsafe static delegate * unmanaged< byte * , byte * , byte > _SetDefaultValueAsString ;
690+
691+ public unsafe static bool SetDefaultValueAsString ( string cvarName , string value ) {
692+ var pool = ArrayPool < byte > . Shared ;
693+ var cvarNameLength = Encoding . UTF8 . GetByteCount ( cvarName ) ;
694+ var cvarNameBuffer = pool . Rent ( cvarNameLength + 1 ) ;
695+ Encoding . UTF8 . GetBytes ( cvarName , cvarNameBuffer ) ;
696+ cvarNameBuffer [ cvarNameLength ] = 0 ;
697+ var valueLength = Encoding . UTF8 . GetByteCount ( value ) ;
698+ var valueBuffer = pool . Rent ( valueLength + 1 ) ;
699+ Encoding . UTF8 . GetBytes ( value , valueBuffer ) ;
700+ valueBuffer [ valueLength ] = 0 ;
701+ fixed ( byte * cvarNameBufferPtr = cvarNameBuffer ) {
702+ fixed ( byte * valueBufferPtr = valueBuffer ) {
703+ var ret = _SetDefaultValueAsString ( cvarNameBufferPtr , valueBufferPtr ) ;
704+ pool . Return ( cvarNameBuffer ) ;
705+ pool . Return ( valueBuffer ) ;
706+ return ret == 1 ;
707+ }
708+ }
709+ }
710+
711+ private unsafe static delegate * unmanaged< byte * , byte * , int > _GetDefaultValueAsString ;
712+
713+ public unsafe static string GetDefaultValueAsString ( string cvarName ) {
714+ var pool = ArrayPool < byte > . Shared ;
715+ var cvarNameLength = Encoding . UTF8 . GetByteCount ( cvarName ) ;
716+ var cvarNameBuffer = pool . Rent ( cvarNameLength + 1 ) ;
717+ Encoding . UTF8 . GetBytes ( cvarName , cvarNameBuffer ) ;
718+ cvarNameBuffer [ cvarNameLength ] = 0 ;
719+ fixed ( byte * cvarNameBufferPtr = cvarNameBuffer ) {
720+ var ret = _GetDefaultValueAsString ( null , cvarNameBufferPtr ) ;
721+ var retBuffer = pool . Rent ( ret + 1 ) ;
722+ fixed ( byte * retBufferPtr = retBuffer ) {
723+ ret = _GetDefaultValueAsString ( retBufferPtr , cvarNameBufferPtr ) ;
724+ var retString = Encoding . UTF8 . GetString ( retBufferPtr , ret ) ;
725+ pool . Return ( retBuffer ) ;
726+ pool . Return ( cvarNameBuffer ) ;
727+ return retString ;
728+ }
729+ }
730+ }
731+
732+ private unsafe static delegate * unmanaged< byte * , byte * , byte > _SetMinValueAsString ;
733+
734+ public unsafe static bool SetMinValueAsString ( string cvarName , string value ) {
735+ var pool = ArrayPool < byte > . Shared ;
736+ var cvarNameLength = Encoding . UTF8 . GetByteCount ( cvarName ) ;
737+ var cvarNameBuffer = pool . Rent ( cvarNameLength + 1 ) ;
738+ Encoding . UTF8 . GetBytes ( cvarName , cvarNameBuffer ) ;
739+ cvarNameBuffer [ cvarNameLength ] = 0 ;
740+ var valueLength = Encoding . UTF8 . GetByteCount ( value ) ;
741+ var valueBuffer = pool . Rent ( valueLength + 1 ) ;
742+ Encoding . UTF8 . GetBytes ( value , valueBuffer ) ;
743+ valueBuffer [ valueLength ] = 0 ;
744+ fixed ( byte * cvarNameBufferPtr = cvarNameBuffer ) {
745+ fixed ( byte * valueBufferPtr = valueBuffer ) {
746+ var ret = _SetMinValueAsString ( cvarNameBufferPtr , valueBufferPtr ) ;
747+ pool . Return ( cvarNameBuffer ) ;
748+ pool . Return ( valueBuffer ) ;
749+ return ret == 1 ;
750+ }
751+ }
752+ }
753+
754+ private unsafe static delegate * unmanaged< byte * , byte * , int > _GetMinValueAsString ;
755+
756+ public unsafe static string GetMinValueAsString ( string cvarName ) {
757+ var pool = ArrayPool < byte > . Shared ;
758+ var cvarNameLength = Encoding . UTF8 . GetByteCount ( cvarName ) ;
759+ var cvarNameBuffer = pool . Rent ( cvarNameLength + 1 ) ;
760+ Encoding . UTF8 . GetBytes ( cvarName , cvarNameBuffer ) ;
761+ cvarNameBuffer [ cvarNameLength ] = 0 ;
762+ fixed ( byte * cvarNameBufferPtr = cvarNameBuffer ) {
763+ var ret = _GetMinValueAsString ( null , cvarNameBufferPtr ) ;
764+ var retBuffer = pool . Rent ( ret + 1 ) ;
765+ fixed ( byte * retBufferPtr = retBuffer ) {
766+ ret = _GetMinValueAsString ( retBufferPtr , cvarNameBufferPtr ) ;
767+ var retString = Encoding . UTF8 . GetString ( retBufferPtr , ret ) ;
768+ pool . Return ( retBuffer ) ;
769+ pool . Return ( cvarNameBuffer ) ;
770+ return retString ;
771+ }
772+ }
773+ }
774+
775+ private unsafe static delegate * unmanaged< byte * , byte * , byte > _SetMaxValueAsString ;
776+
777+ public unsafe static bool SetMaxValueAsString ( string cvarName , string value ) {
778+ var pool = ArrayPool < byte > . Shared ;
779+ var cvarNameLength = Encoding . UTF8 . GetByteCount ( cvarName ) ;
780+ var cvarNameBuffer = pool . Rent ( cvarNameLength + 1 ) ;
781+ Encoding . UTF8 . GetBytes ( cvarName , cvarNameBuffer ) ;
782+ cvarNameBuffer [ cvarNameLength ] = 0 ;
783+ var valueLength = Encoding . UTF8 . GetByteCount ( value ) ;
784+ var valueBuffer = pool . Rent ( valueLength + 1 ) ;
785+ Encoding . UTF8 . GetBytes ( value , valueBuffer ) ;
786+ valueBuffer [ valueLength ] = 0 ;
787+ fixed ( byte * cvarNameBufferPtr = cvarNameBuffer ) {
788+ fixed ( byte * valueBufferPtr = valueBuffer ) {
789+ var ret = _SetMaxValueAsString ( cvarNameBufferPtr , valueBufferPtr ) ;
790+ pool . Return ( cvarNameBuffer ) ;
791+ pool . Return ( valueBuffer ) ;
792+ return ret == 1 ;
793+ }
794+ }
795+ }
796+
797+ private unsafe static delegate * unmanaged< byte * , byte * , int > _GetMaxValueAsString ;
798+
799+ public unsafe static string GetMaxValueAsString ( string cvarName ) {
800+ var pool = ArrayPool < byte > . Shared ;
801+ var cvarNameLength = Encoding . UTF8 . GetByteCount ( cvarName ) ;
802+ var cvarNameBuffer = pool . Rent ( cvarNameLength + 1 ) ;
803+ Encoding . UTF8 . GetBytes ( cvarName , cvarNameBuffer ) ;
804+ cvarNameBuffer [ cvarNameLength ] = 0 ;
805+ fixed ( byte * cvarNameBufferPtr = cvarNameBuffer ) {
806+ var ret = _GetMaxValueAsString ( null , cvarNameBufferPtr ) ;
807+ var retBuffer = pool . Rent ( ret + 1 ) ;
808+ fixed ( byte * retBufferPtr = retBuffer ) {
809+ ret = _GetMaxValueAsString ( retBufferPtr , cvarNameBufferPtr ) ;
810+ var retString = Encoding . UTF8 . GetString ( retBufferPtr , ret ) ;
811+ pool . Return ( retBuffer ) ;
812+ pool . Return ( cvarNameBuffer ) ;
813+ return retString ;
814+ }
815+ }
816+ }
817+
818+ private unsafe static delegate * unmanaged< byte * , byte * , void > _SetValueInternalAsString ;
819+
820+ public unsafe static void SetValueInternalAsString ( string cvarName , string value ) {
821+ var pool = ArrayPool < byte > . Shared ;
822+ var cvarNameLength = Encoding . UTF8 . GetByteCount ( cvarName ) ;
823+ var cvarNameBuffer = pool . Rent ( cvarNameLength + 1 ) ;
824+ Encoding . UTF8 . GetBytes ( cvarName , cvarNameBuffer ) ;
825+ cvarNameBuffer [ cvarNameLength ] = 0 ;
826+ var valueLength = Encoding . UTF8 . GetByteCount ( value ) ;
827+ var valueBuffer = pool . Rent ( valueLength + 1 ) ;
828+ Encoding . UTF8 . GetBytes ( value , valueBuffer ) ;
829+ valueBuffer [ valueLength ] = 0 ;
830+ fixed ( byte * cvarNameBufferPtr = cvarNameBuffer ) {
831+ fixed ( byte * valueBufferPtr = valueBuffer ) {
832+ _SetValueInternalAsString ( cvarNameBufferPtr , valueBufferPtr ) ;
833+ pool . Return ( cvarNameBuffer ) ;
834+ pool . Return ( valueBuffer ) ;
835+ }
836+ }
837+ }
645838}
0 commit comments