Ho scritto un file per il syntax highlighting di Code Snippet
Editor destinato al nuovo linguaggio C++/CLI.
Come vi sembrano i colori? Sicuramente non è perfetto ma per iniziare può
andare bene.
A proposito... se non conoscete le novita del nuovo linguaggio che sarà
rilasciato con Whidbey, date un'occhiata al codice. Presto scriverò un articolo
in merito...
Credo che il mio rapporto con C# stia per finire... dopo soli 3
mesi...
Ecco un piccolo esempio (non mostra proprio tutti tutti i costrutti... ma non
volevo esagerare).
PS Scusate, lo riposto scrollabile perchè mi sembrava un po' da cafoni
occupare tutta la pagina dei nuovi post
#using <mscorlib.dll>
#using <System.dll>
#pragma managed
using namespace System;
namespace Example {
/* Customer data.
* Inherits from System::ValueType.
*/
public value struct CustomerKey: IComparable<CustomerKey^>
{
public:
CustomerKey (String^ firstName, String^ lastName):
FirstName (firstName),
LastName (lastName)
{
}
String^ FirstName;
String^ LastName;
bool Equals (CustomerKey^ key) override
{
bool firstNameResult = this->FirstName->Equals (key->FirstName);
bool lastNameResult = this->LastName->Equals (key->LastName);
return (firstNameResult && lastNameResult);
}
int CompareTo (CustomerKey^ key) override
{
return Equals (key);
}
};
/* Customer.
* Inherits from System::Object.
*/
public ref class Customer
{
private:
initonly CustomerKey key_;
public:
Customer (CustomerKey % key)
{
key_ = key;
}
Customer (String^ firstName, String^ lastName)
{
if (firstName == nullptr) throw gcnew ArgumentNullException ();
if (lastName == nullptr) throw gcnew ArgumentNullException ();
key_ = CustomerKey (firstName, lastName);
}
property CustomerKey^ Key
{
CustomerKey^ get () { return key_; }
}
property String^ FirstName
{
String^ get () { return key_.FirstName; }
}
property String^ LastName
{
String^ get () { return key_.LastName; }
}
String^ ToString () override
{
String^ s = key_.FirstName;
return s;
}
};
typedef System::Collections::Generic:ictionary<CustomerKey^, Customer^> CustomerDictionary;
typedef System:iagnostics:ebug Debug;
public ref class CustomerContainer
{
CustomerDictionary^ customers_;
public:
CustomerContainer ()
{
customers_ = gcnew CustomerDictionary ();
}
void Insert (String^ firstName, String^ lastName)
{
try
{
Customer^ customer = gcnew Customer (firstName, lastName);
customers_->Add (customer->Key, customer);
Debug::WriteLine ("Inserted: %s", customer->ToString ());
}
catch (Exception^ exception)
{
Debug::WriteLine (exception->Message);
throw;
}
}
};
}
using namespace Example;
/* Entry point of the application.
* It should be in the default namespace!
*/
int main () {
String^ helloWorld = "Hello world!";
CustomerContainer^ container = gcnew CustomerContainer ();
container->Insert ("Andrea", "Sansottera");
return 0;
}