Jump to content
x39

[InDev] ObjectOrientedScripting - A C# Project to bring SQF to the next level

Recommended Posts

Release

v0.7.4-ALPHA

Changelog

Version 0.7.4-ALPHA
    |v- Compiler: Fixed error in PreProcessor preventing some macros to work
    |v- Compiler: Fixed define compiler flag
    |v- Compiler: Added internal defines:
    ||-            __VERSION <-- Contains current compiler version
    ||-            __NEXCEPT(MSG) <-- Wrapper for Exception Object
    |\                                Only working in Native Functions
    |- Compiler:  `async` attribute functions now have to be of type script
    |- Compiler:  Added `inline` attribute to functions
    |             static inline [ async ]
    |                    <TYPE> <IDENT> ( <ARGLIST> ) [ throwing ] {...}
    |- Compiler:  Added `throwing` attribute to functions
    |             throwing is required when using the "throw" operation.
    |             functions that call such a function but do not catch the
    |             potential exception will generate a warning
    |             Syntax:
    |             static [ inline | external ] [ async ] [ virtual ]
    |                    <TYPE> <IDENT> ( <ARGLIST> ) throwing {...}
    |v- Compiler: Added internal object Exception (extendable for custom)
    ||-            catch now has to use Exception type
    |\-            throw now has to use Exception type
    |v- Compiler: updated vec3 (thx to Zeven90`s PR #48)
    ||-            new constructor `vec3(array<scalar>)`
    ||-            new member function `vec3 add(vec3 other)`
    ||-            new member function `vec3 diff(vec3 other)`
    ||-            new member function `vec3 dot(vec3 other)`
    ||-            new member function `vec3 cross(vec3 other)`
    ||-            new member function `scalar cos(vec3 other)`
    ||-            new member function `scalar magnitude()`
    ||-            new member function `scalar magnitudeSqr()`
    ||-            new member function `vec3 multiply(scalar n)`
    ||-            new member function `scalar distance(vec3 other)`
    ||-            new member function `scalar distanceSqr(vec3 other)`
    |\-            new member function `vec3 normalized()`
    |- stdLib:    Updated ::std::Marker to use vec3
    |- stdLib:    Updated ::std::base::VehicleBase to use vec3
    |v- stdLib:   ::std::base::VehicleBase (thx to Zeven90` PR #48)
    |\-            Fixed error in `::std::Config getConfigEntry()`
    |v- stdLib:   ::std::Man (thx to Zeven90` PR #47)
    ||-            Added enum ::std::Man::VisionMode
    ||-            Fixed locality on `void disableAI(AiSection)` (throws now)
    ||-            Fixed locality on `void enableAI(AiSection)` (throws now)
    |\-            Updated enum ::std::Man::AiSection to 1.56
    \v- stdLib:   ::std::Group (thx to Zeven90` PR #47)
     |             Fixed locality on `void delete()` (throws now)
     |             Added `void join()`
     \             Added `::std::Man getLeader()`

Known Issues

- Passing an object of the same class which you are in right now will result in
  the object getting assigned an invalid type
  ((Internally it will ref to the function which is for sure nonsense ...
    however ... harder to fix then it might sounds in first place due to the
	lower logic behind it))

- (Not rly an issue but more of a note) currently only idents are allowed to be
  callen. Thus you cannot call from an expression
  following would be invalid:
  `(new foobar()).foo()`
  due to the fact that it is the following:
  `<EXPRESSION>.<IDENT><FUNCTIONCALL>`

- Casts currently do not check if given object is kind of cast target thus you
  can enforce invalid object types

- Downcasting has to be done explicit

- casting to an object having a template requires you to write it like so (example shows array<scalar> cast):
  < array<scalar> >yourVariable
  
- creating a new template object which gets another template object as kind requires you to write it like so (example shows array<scalar> in another array):
  new array< array<scalar> >()

Share this post


Link to post
Share on other sites

Release

v0.8.0-ALPHA

Changelog

Version 0.8.0-ALPHA
    |- stdLib:    Added interface ::std::ISerializable
    |- stdLib:    Added ::std::Vehicle(string, vec3) constructor
    |v- stdLib:   Added `using ::std::Tupel`
    ||-            Added Tupel2<T1, T2>
    ||-            Added Tupel3<T1, T2, T3>
    ||-            Added Tupel4<T1, T2, T3, T4>
    |\-            Added Tupel5<T1, T2, T3, T4, T5>
    |- Compiler:  ReEnabled (& implemented) interfaces
    |- Compiler:  Fixed TryCatch variable is not getting printed
    |- Compiler:  Changed how virtual functions are adressed
    |- Compiler:  Changed where object meta data is located
    |- Compiler:  Fixed issue in switch
    |- Compiler:  Fixed NPE in Idents on LNK errors
    \v- Compiler: Only one PreInit function is allowed now
     \-            Added new Linker exception LNK0060
Known Issues

- Passing an object of the same class which you are in right now will result in
  the object getting assigned an invalid type
  ((Internally it will ref to the function which is for sure nonsense ...
    however ... harder to fix then it might sounds in first place due to the
	lower logic behind it))

- (Not rly an issue but more of a note) currently only idents are allowed to be
  callen. Thus you cannot call from an expression
  following would be invalid:
  `(new foobar()).foo()`
  due to the fact that it is the following:
  `<EXPRESSION>.<IDENT><FUNCTIONCALL>`

- Casts currently do not check if given object is kind of cast target thus you
  can enforce invalid object types

- Downcasting has to be done explicit

- casting to an object having a template requires you to write it like so (example shows array<scalar> cast):
  < array<scalar> >yourVariable
  
- creating a new template object which gets another template object as kind requires you to write it like so (example shows array<scalar> in another array):
  new array< array<scalar> >()
  • Like 1

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

×