Beispiel #1
0
 internal AvailabilityBaseAttribute(
     AvailabilityKind availabilityKind,
     PlatformName platform,
     Version version,
     string message)
 {
     AvailabilityKind = availabilityKind;
     Platform         = platform;
     Version          = version;
     Message          = message;
 }
 internal AvailabilityBaseAttribute(
     AvailabilityKind availabilityKind,
     PlatformName platform,
     Version version,
     PlatformArchitecture architecture,
     string message)
 {
     AvailabilityKind = availabilityKind;
     Platform         = platform;
     Version          = version;
     Architecture     = architecture;
     Message          = message;
 }
Beispiel #3
0
 internal AvailabilityBaseAttribute(
     AvailabilityKind availabilityKind,
     PlatformName platform,
     Version version,
     PlatformArchitecture architecture,
     string message)
 {
     AvailabilityKind = availabilityKind;
     Platform = platform;
     Version = version;
     Architecture = architecture;
     Message = message;
 }
Beispiel #4
0
 internal unsafe CodeCompletion(Interop.CompletionResult* native) {
     IntPtr completionString = native->completionString;
     Chunks = new Chunk[Interop.clang_getNumCompletionChunks(completionString)];
     for (uint i = 0; i < Chunks.Count(); ++i) {
         Chunks[(int)i] = new Chunk(
             Interop.clang_getCompletionChunkKind(completionString, i),
             Interop.clang_getCompletionChunkText(completionString, i).ManagedString);
     }
     Priority = Interop.clang_getCompletionPriority(completionString);
     Availability = Interop.clang_getCompletionAvailability(completionString);
     Annotations = new string[Interop.clang_getCompletionNumAnnotations(completionString)];
     for (uint i = 0; i < Annotations.Count(); ++i) {
         Annotations[(int)i] = Interop.clang_getCompletionAnnotation(completionString, i).ManagedString;
     }
     Comment = Interop.clang_getCompletionAnnotation(completionString).ManagedString;
 }
Beispiel #5
0
        internal unsafe CodeCompletion(Interop.CompletionResult *native)
        {
            IntPtr completionString = native->completionString;

            Chunks = new Chunk[Interop.clang_getNumCompletionChunks(completionString)];
            for (uint i = 0; i < Chunks.Count(); ++i)
            {
                Chunks[(int)i] = new Chunk(
                    Interop.clang_getCompletionChunkKind(completionString, i),
                    Interop.clang_getCompletionChunkText(completionString, i).ManagedString);
            }
            Priority     = Interop.clang_getCompletionPriority(completionString);
            Availability = Interop.clang_getCompletionAvailability(completionString);
            Annotations  = new string[Interop.clang_getCompletionNumAnnotations(completionString)];
            for (uint i = 0; i < Annotations.Count(); ++i)
            {
                Annotations[(int)i] = Interop.clang_getCompletionAnnotation(completionString, i).ManagedString;
            }
            Comment = Interop.clang_getCompletionAnnotation(completionString).ManagedString;
        }
        static PlatformAvailability MergeNewStyleAvailabilityAttribute(PlatformAvailability availability, AttributeData attr, AvailabilityKind availabilityKind)
        {
            var      platformName = (PlatformName)(byte)attr.ConstructorArguments[0].Value;
            var      platformSet  = new PlatformSet();
            Platform platform     = platformSet.GetPlatform(platformName);

            if (platform == null)
            {
                throw new ArgumentOutOfRangeException($"Platform name: {platformName}.");
            }

            if (availability == null)
            {
                availability = new PlatformAvailability();
            }

            switch (attr.ConstructorArguments.Length)
            {
            case 3:     //PlatformName platform, PlatformArchitecture architecture, string message
                platform.Architecture = (PlatformArchitecture)(byte)attr.ConstructorArguments[1].Value;
                break;

            case 5:     //PlatformName platform, int majorVersion, int minorVersion, PlatformArchitecture architecture, string message
                platform.Major        = (byte)(int)attr.ConstructorArguments[1].Value;
                platform.Minor        = (byte)(int)attr.ConstructorArguments[2].Value;
                platform.Architecture = (PlatformArchitecture)(byte)attr.ConstructorArguments[3].Value;
                availability.Message  = (string)attr.ConstructorArguments[4].Value;
                break;

            case 6:     //PlatformName platform, int majorVersion, int minorVersion, int subminorVersion, PlatformArchitecture architecture, string message
                platform.Major        = (byte)(int)attr.ConstructorArguments[1].Value;
                platform.Minor        = (byte)(int)attr.ConstructorArguments[2].Value;
                platform.Minor        = (byte)(int)attr.ConstructorArguments[3].Value;
                platform.Architecture = (PlatformArchitecture)(byte)attr.ConstructorArguments[4].Value;
                availability.Message  = (string)attr.ConstructorArguments[5].Value;
                break;
            }

            switch (availabilityKind)
            {
            case AvailabilityKind.Introduced:
                availability.Introduced |= platformSet;
                break;

            case AvailabilityKind.Deprecated:
                availability.Deprecated |= platformSet;
                break;

            case AvailabilityKind.Obsoleted:
                availability.Obsoleted |= platformSet;
                break;

            case AvailabilityKind.Unavailable:
                availability.Unavailable |= platformSet;
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            return(availability);
        }