public static string GetString(string domain, string msgid, string msgidPlural, int n) { IntPtr msgid_ptr = UnixMarshal.StringToHeap(msgid); IntPtr msgid_plural_ptr = UnixMarshal.StringToHeap(msgidPlural); IntPtr domain_ptr = domain == null ? IntPtr.Zero : UnixMarshal.StringToHeap(domain); try { IntPtr ret_ptr = domain_ptr == IntPtr.Zero ? ngettext(msgid_ptr, msgid_plural_ptr, n) : dngettext(domain_ptr, msgid_ptr, msgid_plural_ptr, n); if (ret_ptr == msgid_ptr) { return(msgid); } else if (ret_ptr == msgid_plural_ptr) { return(msgidPlural); } return(UnixMarshal.PtrToStringUnix(ret_ptr)); } finally { UnixMarshal.FreeHeap(msgid_ptr); UnixMarshal.FreeHeap(msgid_plural_ptr); if (domain_ptr != IntPtr.Zero) { UnixMarshal.FreeHeap(domain_ptr); } } }
public static void Init(string domain, string localeDir) { if (String.IsNullOrEmpty(domain)) { throw new ArgumentException("No text domain specified"); } IntPtr domain_ptr = UnixMarshal.StringToHeap(domain); IntPtr localedir_ptr = IntPtr.Zero; try { BindTextDomainCodeset(domain_ptr); if (localeDir != null && localeDir.Length > 0) { localedir_ptr = UnixMarshal.StringToHeap(localeDir); BindTextDomain(domain_ptr, localedir_ptr); } } finally { UnixMarshal.FreeHeap(domain_ptr); if (localedir_ptr != IntPtr.Zero) { UnixMarshal.FreeHeap(localedir_ptr); } } }
public static string GetString(string domain, string msgid) { IntPtr msgid_ptr = UnixMarshal.StringToHeap(msgid); IntPtr domain_ptr = domain == null ? IntPtr.Zero : UnixMarshal.StringToHeap(domain); if (domain == null) { // FIXME banshee-1? IntPtr ptr = UnixMarshal.StringToHeap("banshee"); UnixMarshal.FreeHeap(ptr); } try { IntPtr ret_ptr = domain_ptr == IntPtr.Zero ? gettext(msgid_ptr) : dgettext(domain_ptr, msgid_ptr); if (msgid_ptr != ret_ptr) { return(UnixMarshal.PtrToStringUnix(ret_ptr)); } return(msgid); } finally { UnixMarshal.FreeHeap(msgid_ptr); if (domain_ptr != IntPtr.Zero) { UnixMarshal.FreeHeap(domain_ptr); } } }
public static IntPtr ToUnixWideCharacters(string text) { if (text == null) { return(IntPtr.Zero); } return(UnixMarshal.StringToHeap(text, Encoding.UTF32)); }
/// <summary> /// Constructor for creating a CVar in C# /// </summary> /// <param name="name"> /// The name of the cvar <see cref="System.String"/> /// </param> /// <param name="val"> /// An initial string value <see cref="System.String"/> /// </param> public CVar(string name, string val) { ptr = UnixMarshal.AllocHeap(sizeof(CVarInfo)); cvar->name = (sbyte *)UnixMarshal.StringToHeap(name).ToPointer(); cvar->str = (sbyte *)UnixMarshal.StringToHeap(val).ToPointer(); cvar->next = (CVarInfo *)IntPtr.Zero.ToPointer(); MetaMod.MetaModEngine.engineFunctions.CVarRegister(ptr); }
public StringOnHeap(string str, Encoding encoding) { if (str == null) { Pointer = IntPtr.Zero; return; } Pointer = UnixMarshal.StringToHeap(str, encoding); }
public IntPtr MarshalManagedToNative(object obj) { string s = obj as string; if (s == null) { return(IntPtr.Zero); } return(UnixMarshal.StringToHeap(s, Encoding.UTF32)); }
public IntPtr MarshalManagedToNative(object obj) { string str = obj as string; if (str == null) { return(IntPtr.Zero); } return(UnixMarshal.StringToHeap(str, UnixEncoding.Instance)); }
//maybe return iovec tree or array public static IOVector Do(ref string value) { IOVector vec = new IOVector(); //FIXME: SECURITY: uncleared memory used for padding vec.Base = UnixMarshal.StringToHeap(@value); vec.Length = Padded(value.Length); //TODO: use pad func and custom stringtoheap return(vec); }
// возвращает указатель на структуру в куче // память по указателю должна быть очищена вручную public unsafe IntPtr CVarRegister(string name, string val) { cvar_t *cvar = (cvar_t *)UnixMarshal.AllocHeap(sizeof(cvar_t)).ToPointer(); cvar->name = (sbyte *)UnixMarshal.StringToHeap(name).ToPointer(); cvar->str = (sbyte *)UnixMarshal.StringToHeap(val).ToPointer(); cvar->next = (cvar_t *)IntPtr.Zero.ToPointer(); ef.CVarRegister(cvar); return(new IntPtr(cvar)); }
private static void BindTextDomainCodeset(IntPtr domain) { IntPtr codeset = UnixMarshal.StringToHeap("UTF-8"); try { if (bind_textdomain_codeset(domain, codeset) == IntPtr.Zero) { throw new UnixIOException(Mono.Unix.Native.Errno.ENOMEM); } } finally { UnixMarshal.FreeHeap(codeset); } }
public IntPtr MarshalManagedToNative(object obj) { string s = obj as string; if (s == null) { return(IntPtr.Zero); } IntPtr p = UnixMarshal.StringToHeap(s, UnixEncoding.Instance); // Console.WriteLine ("# FileNameMarshaler.MarshalNativeToManaged for `{0}'={1:x}", s, p); return(p); }
internal static IntPtr CmdArgv(int i) { if (Command.overrideArguments && Command.instance != null) { SetResult(MetaResult.Supercede); return(UnixMarshal.StringToHeap(Command.instance.Arguments[i])); } else { SetResult(MetaResult.Ignore); return(IntPtr.Zero); } }
private static void StringToHeap(string s, Encoding e, bool mustBeEqual) { IntPtr p = UnixMarshal.StringToHeap(s, e); try { string _s = UnixMarshal.PtrToString(p, e); if (mustBeEqual) { Assert.AreEqual(s, _s, "#TSTA (" + e.GetType() + ")"); } } finally { UnixMarshal.FreeHeap(p); } }
public static IntPtr AllocPluginInfo(string ifvers, string name, string version, string date, string author, string url, string logtag, PluginLoadTime load, PluginLoadTime unload) { PluginInfo *pl = (PluginInfo *)UnixMarshal.AllocHeap(sizeof(PluginInfo)).ToPointer(); pl->ifvers = (sbyte *)UnixMarshal.StringToHeap(ifvers).ToPointer(); pl->name = (sbyte *)UnixMarshal.StringToHeap(name).ToPointer(); pl->version = (sbyte *)UnixMarshal.StringToHeap(version).ToPointer(); pl->date = (sbyte *)UnixMarshal.StringToHeap(date).ToPointer(); pl->author = (sbyte *)UnixMarshal.StringToHeap(author).ToPointer(); pl->url = (sbyte *)UnixMarshal.StringToHeap(url).ToPointer(); pl->logtag = (sbyte *)UnixMarshal.StringToHeap(logtag).ToPointer(); pl->loadable = load; pl->unloadable = unload; return(new IntPtr((void *)pl)); }
public static IntPtr Allocate(string[] args) { IntPtr argv = UnixMarshal.AllocHeap((args.Length + 1) * IntPtr.Size); for (int i = 0; i < args.Length; ++i) { Marshal.WriteIntPtr( argv, i * IntPtr.Size, UnixMarshal.StringToHeap(args[i])); } Marshal.WriteIntPtr(argv, args.Length * IntPtr.Size, IntPtr.Zero); return(argv); }
// Verifies if a string is present (true) in the Catalog file static public bool StringExists(string s) { IntPtr ints = UnixMarshal.StringToHeap(s); try { // gettext returns the input pointer if no translation is found IntPtr r = gettext(ints); return(r != ints); } catch (Exception) { return(true); } finally { UnixMarshal.FreeHeap(ints); } }
IntPtr ICustomMarshaler.MarshalManagedToNative(object ManagedObj) { return((!(ManagedObj is string)) ? IntPtr.Zero : UnixMarshal.StringToHeap((string)ManagedObj, UnixEncoding.Instance)); }
public void BXC10074() { var result = UnixMarshal.StringToHeap(null, Encoding.ASCII); Assert.AreEqual(IntPtr.Zero, result, "This used to crash due to a NullReferenceException"); }