mirror of https://github.com/mono/CppSharp.git
14 changed files with 0 additions and 427 deletions
@ -1,96 +0,0 @@ |
|||||||
using System.Collections.Generic; |
|
||||||
using Cxxi.Generators; |
|
||||||
using Cxxi.Generators.CLI; |
|
||||||
using Cxxi.Passes; |
|
||||||
using Cxxi.Types; |
|
||||||
|
|
||||||
namespace Cxxi.Libraries |
|
||||||
{ |
|
||||||
class Qt : ILibrary |
|
||||||
{ |
|
||||||
public void Preprocess(Library lib) |
|
||||||
{ |
|
||||||
// Qt Base
|
|
||||||
lib.IgnoreFile("qalgorithms.h"); |
|
||||||
lib.IgnoreFile("qarraydata.h"); |
|
||||||
lib.IgnoreFile("qatomic.h"); |
|
||||||
lib.IgnoreFile("qatomic_x86.h"); |
|
||||||
lib.IgnoreFile("qbytearray.h"); |
|
||||||
lib.IgnoreFile("qbasicatomic.h"); |
|
||||||
lib.IgnoreFile("qflags.h"); |
|
||||||
lib.IgnoreFile("qglobal.h"); |
|
||||||
lib.IgnoreFile("qstring.h"); |
|
||||||
lib.IgnoreFile("qrefcount.h"); |
|
||||||
lib.IgnoreFile("qtypeinfo.h"); |
|
||||||
lib.IgnoreFile("qtypetraits.h"); |
|
||||||
|
|
||||||
lib.IgnoreClassWithName("QForeachContainer"); |
|
||||||
lib.IgnoreClassWithName("QFlags"); |
|
||||||
lib.IgnoreClassWithName("QUrlTwoFlags"); |
|
||||||
|
|
||||||
lib.SetClassAsValueType("QChar"); |
|
||||||
lib.SetClassAsValueType("QPair"); |
|
||||||
lib.SetClassAsValueType("QPoint"); |
|
||||||
lib.SetClassAsValueType("QPointF"); |
|
||||||
} |
|
||||||
|
|
||||||
public void Postprocess(Library lib) |
|
||||||
{ |
|
||||||
} |
|
||||||
|
|
||||||
public void Setup(DriverOptions options) |
|
||||||
{ |
|
||||||
options.LibraryName = "Qt"; |
|
||||||
options.OutputNamespace = "Qt"; |
|
||||||
options.OutputDir = @"C:\Users\triton\Development\cxxi\examples\qt\wrappers"; |
|
||||||
options.IncludeDirs.Add(@"C:\Qt\Qt5.0.1\5.0.1\msvc2010\include"); |
|
||||||
options.GeneratorKind = LanguageGeneratorKind.CPlusPlusCLI; |
|
||||||
|
|
||||||
SetupHeaders(options.Headers); |
|
||||||
} |
|
||||||
|
|
||||||
public void SetupHeaders(List<string> headers) |
|
||||||
{ |
|
||||||
var sources = new string[] |
|
||||||
{ |
|
||||||
"QtCore/QPoint", |
|
||||||
"QtCore/QUrl", |
|
||||||
}; |
|
||||||
|
|
||||||
headers.AddRange(sources); |
|
||||||
} |
|
||||||
|
|
||||||
public void SetupPasses(PassBuilder p) |
|
||||||
{ |
|
||||||
p.RemovePrefix("Q"); |
|
||||||
|
|
||||||
const RenameTargets renameTargets = RenameTargets.Function |
|
||||||
| RenameTargets.Method | RenameTargets.Field; |
|
||||||
p.RenameDeclsCase(renameTargets, RenameCasePattern.UpperCamelCase); |
|
||||||
|
|
||||||
p.FunctionToInstanceMethod(); |
|
||||||
p.FunctionToStaticMethod(); |
|
||||||
p.CheckDuplicateNames(); |
|
||||||
} |
|
||||||
|
|
||||||
public void GenerateStart(TextTemplate template) |
|
||||||
{ |
|
||||||
if (template is CLISourcesTemplate) |
|
||||||
template.WriteLine("#include \"_Marshal.h\""); |
|
||||||
} |
|
||||||
|
|
||||||
public void GenerateAfterNamespaces(TextTemplate template) |
|
||||||
{ |
|
||||||
if (template is CLISourcesTemplate) |
|
||||||
template.WriteLine("using namespace clix;"); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
static class Program |
|
||||||
{ |
|
||||||
public static void Main(string[] args) |
|
||||||
{ |
|
||||||
Cxxi.Program.Run(new Libraries.Qt()); |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
@ -1,41 +0,0 @@ |
|||||||
<!-- |
|
||||||
This XML filter file format. |
|
||||||
|
|
||||||
There are 3 different modes: |
|
||||||
Include -> include this type in the generated output |
|
||||||
Exclude -> do not include this type in the generated output. methods using this type will be removed (virtual methods will be stubbed with IntPtr) |
|
||||||
External -> do not include this type in the generated output, but expect an implementation to be provided |
|
||||||
The type of external implementation can be specified: |
|
||||||
class (default) -> this type is implemented as a managed reference type |
|
||||||
struct -> this type is implemented as a managed value type. when passed as pointer or reference, the managed "ref" prefix will be used |
|
||||||
Rename -> include this type in the generated output, but rename to the specified managed type (specified in "to" attribute, "implementation" attribute also allowed) |
|
||||||
|
|
||||||
The default behavior is Include. Change the default by specifying the default attribute on the top-level Filter tag. |
|
||||||
Specify exceptions to the default behavior with child nodes named after one of the modes above… |
|
||||||
--> |
|
||||||
|
|
||||||
<Filter default="Exclude"> |
|
||||||
<Include>QObject</Include> |
|
||||||
<Include>Qt</Include> |
|
||||||
<Include>Qt::ConnectionType</Include> |
|
||||||
<Include>Qt::KeyboardModifier</Include> |
|
||||||
<Include>Qt::MouseButton</Include> |
|
||||||
<Include>Qt::ButtonState</Include> |
|
||||||
|
|
||||||
<Include>QApplication</Include> |
|
||||||
<Include>QCoreApplication</Include> |
|
||||||
<Include>QWidget</Include> |
|
||||||
<Include>QAbstractButton</Include> |
|
||||||
<Include>QPushButton</Include> |
|
||||||
<Include>QPaintDevice</Include> |
|
||||||
|
|
||||||
<Include>QEvent</Include> |
|
||||||
<Include>QInputEvent</Include> |
|
||||||
<Include>QMouseEvent</Include> |
|
||||||
<Include>QTimerEvent</Include> |
|
||||||
|
|
||||||
<External implementation="struct">QString</External> |
|
||||||
<External implementation="struct">QSize</External> |
|
||||||
<External implementation="struct">QPoint</External> |
|
||||||
<External implementation="struct">QFlags<Qt::KeyboardModifier></External> |
|
||||||
</Filter> |
|
@ -1,21 +0,0 @@ |
|||||||
|
|
||||||
/*
|
|
||||||
* These are not in the unix version of qt, and -fkeep-inline-functions will generate |
|
||||||
* references to their vtables etc., making the library unloadable. |
|
||||||
*/ |
|
||||||
#define QT_NO_STYLE_WINDOWSVISTA |
|
||||||
#define QT_NO_STYLE_WINDOWSXP |
|
||||||
#define QT_NO_STYLE_S60 |
|
||||||
#define QT_NO_STYLE_WINDOWSCE |
|
||||||
#define QT_NO_STYLE_WINDOWSMOBILE |
|
||||||
#define QT_NO_QWSEMBEDWIDGET |
|
||||||
|
|
||||||
// this one was annoying to track down!
|
|
||||||
#define QT_NO_TRANSLATION |
|
||||||
|
|
||||||
#include "QtGui/QApplication" |
|
||||||
#include "QtGui/QPushButton" |
|
||||||
|
|
||||||
int main () |
|
||||||
{ |
|
||||||
} |
|
@ -1,3 +0,0 @@ |
|||||||
#include "QApplication" |
|
||||||
#include "qevent.h" |
|
||||||
#include "QPushButton" |
|
@ -1,25 +0,0 @@ |
|||||||
using System; |
|
||||||
using System.Diagnostics; |
|
||||||
using Qt.Gui; |
|
||||||
using Qt.Gui.Qt; |
|
||||||
|
|
||||||
using Mono.Cxxi; |
|
||||||
|
|
||||||
namespace QtTest { |
|
||||||
class MainClass { |
|
||||||
public static void Main (string[] args) |
|
||||||
{ |
|
||||||
using (QApplication app = new QApplication ()) { |
|
||||||
using (QPushButton hello = new QPushButton ("Hello world!")) { |
|
||||||
|
|
||||||
hello.Resize (200, 30); |
|
||||||
QObject.Connect (hello, "2clicked()", app, "1aboutQt()", ConnectionType.AutoConnection); |
|
||||||
|
|
||||||
hello.SetVisible (true); |
|
||||||
QApplication.Exec (); |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
@ -1,11 +0,0 @@ |
|||||||
project "Qt" |
|
||||||
|
|
||||||
kind "ConsoleApp" |
|
||||||
language "C#" |
|
||||||
location "." |
|
||||||
|
|
||||||
files { "**.cs", "./*.lua" } |
|
||||||
|
|
||||||
links { "Bridge", "Generator" } |
|
||||||
|
|
||||||
|
|
@ -1,20 +0,0 @@ |
|||||||
using System; |
|
||||||
using System.Runtime.InteropServices; |
|
||||||
using Mono.Cxxi; |
|
||||||
|
|
||||||
namespace Qt.Gui { |
|
||||||
public partial class QApplication { |
|
||||||
|
|
||||||
public partial interface IQApplication { |
|
||||||
[Constructor] CppInstancePtr QApplication (CppInstancePtr @this, [MangleAs ("int&")] IntPtr argc, [MangleAs ("char**")] IntPtr argv, int version); |
|
||||||
} |
|
||||||
|
|
||||||
public QApplication () : base (impl.TypeInfo) |
|
||||||
{ |
|
||||||
InitArgcAndArgv (); |
|
||||||
Native = impl.QApplication (impl.Alloc (this), argc, argv, 0x040602); |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
} |
|
||||||
|
|
@ -1,50 +0,0 @@ |
|||||||
using System; |
|
||||||
using System.Runtime.InteropServices; |
|
||||||
using Mono.Cxxi; |
|
||||||
|
|
||||||
namespace Qt.Gui { |
|
||||||
public partial class QCoreApplication { |
|
||||||
|
|
||||||
public partial interface IQCoreApplication { |
|
||||||
[Constructor] CppInstancePtr QCoreApplication (CppInstancePtr @this, [MangleAs ("int&")] IntPtr argc, [MangleAs ("char**")] IntPtr argv); |
|
||||||
} |
|
||||||
|
|
||||||
protected IntPtr argc, argv; |
|
||||||
|
|
||||||
public QCoreApplication () : base (impl.TypeInfo) |
|
||||||
{ |
|
||||||
InitArgcAndArgv (); |
|
||||||
Native = impl.QCoreApplication (impl.Alloc (this), argc, argv); |
|
||||||
} |
|
||||||
|
|
||||||
partial void AfterDestruct () |
|
||||||
{ |
|
||||||
FreeArgcAndArgv (); |
|
||||||
} |
|
||||||
|
|
||||||
protected void InitArgcAndArgv () |
|
||||||
{ |
|
||||||
var args = Environment.GetCommandLineArgs (); |
|
||||||
var argCount = args.Length; |
|
||||||
|
|
||||||
argc = Marshal.AllocHGlobal (sizeof(int)); |
|
||||||
Marshal.WriteInt32 (argc, argCount); |
|
||||||
|
|
||||||
argv = Marshal.AllocHGlobal (Marshal.SizeOf (typeof(IntPtr)) * argCount); |
|
||||||
for (var i = 0; i < argCount; i++) { |
|
||||||
IntPtr arg = Marshal.StringToHGlobalAnsi (args [i]); |
|
||||||
Marshal.WriteIntPtr (argv, i * Marshal.SizeOf (typeof(IntPtr)), arg); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
protected void FreeArgcAndArgv () |
|
||||||
{ |
|
||||||
Marshal.FreeHGlobal (argc); |
|
||||||
for (var i = 0; i < Environment.GetCommandLineArgs ().Length; i++) |
|
||||||
Marshal.FreeHGlobal (Marshal.ReadIntPtr (argv, i * Marshal.SizeOf (typeof(IntPtr)))); |
|
||||||
Marshal.FreeHGlobal (argv); |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
} |
|
||||||
|
|
@ -1,13 +0,0 @@ |
|||||||
using System; |
|
||||||
using System.Runtime.InteropServices; |
|
||||||
using Mono.Cxxi; |
|
||||||
|
|
||||||
namespace Qt.Gui { |
|
||||||
|
|
||||||
[StructLayout (LayoutKind.Sequential)] |
|
||||||
public struct QFlags<T> where T : struct { |
|
||||||
|
|
||||||
public T Value; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
@ -1,20 +0,0 @@ |
|||||||
using System; |
|
||||||
using System.Runtime.InteropServices; |
|
||||||
using Mono.Cxxi; |
|
||||||
|
|
||||||
namespace Qt.Gui { |
|
||||||
|
|
||||||
[StructLayout (LayoutKind.Sequential)] |
|
||||||
public struct QPoint { |
|
||||||
|
|
||||||
private int xy, yx; //Wtf.. on Mac the order is y, x; elsewhere x, y
|
|
||||||
|
|
||||||
public QPoint (int x, int y) |
|
||||||
{ |
|
||||||
//FIXME: do some snazzy stuff to get this right.. for now, I'm a mac user :P
|
|
||||||
this.yx = x; |
|
||||||
this.xy = y; |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
@ -1,20 +0,0 @@ |
|||||||
using System; |
|
||||||
using System.Runtime.InteropServices; |
|
||||||
using Mono.Cxxi; |
|
||||||
|
|
||||||
namespace Qt.Gui { |
|
||||||
public partial class QPushButton { |
|
||||||
|
|
||||||
public QPushButton (QString text, QWidget parent) |
|
||||||
: this (ref text, parent) |
|
||||||
{ |
|
||||||
} |
|
||||||
|
|
||||||
public QPushButton (QString text) |
|
||||||
: this (ref text, null) |
|
||||||
{ |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
} |
|
||||||
|
|
@ -1,20 +0,0 @@ |
|||||||
using System; |
|
||||||
using System.Runtime.InteropServices; |
|
||||||
using Mono.Cxxi; |
|
||||||
|
|
||||||
namespace Qt.Gui { |
|
||||||
|
|
||||||
[StructLayout (LayoutKind.Sequential)] |
|
||||||
public struct QSize { |
|
||||||
|
|
||||||
public int Width; |
|
||||||
public int Height; |
|
||||||
|
|
||||||
public QSize (int w, int h) |
|
||||||
{ |
|
||||||
this.Width = w; |
|
||||||
this.Height = h; |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
@ -1,71 +0,0 @@ |
|||||||
using System; |
|
||||||
using System.Text; |
|
||||||
using System.Runtime.InteropServices; |
|
||||||
|
|
||||||
using Mono.Cxxi; |
|
||||||
|
|
||||||
namespace Qt.Gui { |
|
||||||
//TODO: Will this leak?
|
|
||||||
[StructLayout (LayoutKind.Sequential)] |
|
||||||
public unsafe struct QString { |
|
||||||
#region Sync with qstring.h
|
|
||||||
public interface IQString : ICppClass { |
|
||||||
[Constructor] void QString(ref QString @this, [MangleAs ("const QChar*")] IntPtr unicode, int size); |
|
||||||
} |
|
||||||
|
|
||||||
[StructLayout (LayoutKind.Sequential)] |
|
||||||
public struct Data { |
|
||||||
public int @ref; |
|
||||||
public int alloc, size; |
|
||||||
public IntPtr data; |
|
||||||
public ushort clean; |
|
||||||
public ushort simpletext; |
|
||||||
public ushort righttoleft; |
|
||||||
public ushort asciiCache; |
|
||||||
public ushort capacity; |
|
||||||
public ushort reserved; |
|
||||||
public IntPtr array; |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
public Data* d; |
|
||||||
#endregion
|
|
||||||
|
|
||||||
private static IQString impl = Libs.QtGui.GetClass<IQString> ("QString"); |
|
||||||
|
|
||||||
public QString (string str) : this () |
|
||||||
{ |
|
||||||
var strPtr = Marshal.StringToHGlobalUni (str); |
|
||||||
impl.QString (ref this, strPtr, str.Length); |
|
||||||
Marshal.FreeHGlobal (strPtr); |
|
||||||
|
|
||||||
// TODO: I deref this on construction to let Qt free it when it's done with it.
|
|
||||||
// My assumption is that this struct will only be used to interop with Qt and
|
|
||||||
// no managed class is going to hold on to it.
|
|
||||||
this.DeRef (); |
|
||||||
} |
|
||||||
|
|
||||||
public static implicit operator QString (string str) |
|
||||||
{ |
|
||||||
return new QString (str); |
|
||||||
} |
|
||||||
|
|
||||||
public override string ToString () |
|
||||||
{ |
|
||||||
return Marshal.PtrToStringUni (d->data, d->size); |
|
||||||
} |
|
||||||
|
|
||||||
public QString AddRef () |
|
||||||
{ |
|
||||||
d->@ref++; |
|
||||||
return this; |
|
||||||
} |
|
||||||
|
|
||||||
public QString DeRef () |
|
||||||
{ |
|
||||||
d->@ref--; |
|
||||||
return this; |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
@ -1,16 +0,0 @@ |
|||||||
using System; |
|
||||||
using System.Runtime.InteropServices; |
|
||||||
using Mono.Cxxi; |
|
||||||
|
|
||||||
namespace Qt.Gui { |
|
||||||
public partial class QWidget { |
|
||||||
|
|
||||||
public void Resize (int width, int height) |
|
||||||
{ |
|
||||||
var size = new QSize (width, height); |
|
||||||
impl.resize (Native, ref size); |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
} |
|
||||||
|
|
Loading…
Reference in new issue