what is an extension function? - language-agnostic

I am learning the codebase for the Flight Gear project. On their wiki they have a list of "extension functions" for the project's internal scripting language (called NASAL).
What is an extension function? Is this a common term?

Related

What is the terminology which refers to "non-cloud", "locally-installed", "not-internet-hosted" in the context of a category of software package?

For example, if I wish to find a Google Docs clone which runs on a local server which I maintain, I should search for "Google Docs clone x", where x is the terminology I'm looking for.
Think Diaspora* software.
What is the terminology for this category of networked, but non-Internet-hosted, software solution? Does the terminology exist?
On-premise would be my first choice, especially if talking about hosting software on a server that is accessed internally.
Client-side
Local
Pods (diaspora*)
Node (depending)

Windows Store apps verticalization / customization

The issue is the following: I have developed an app which has to be tailored to multiple customers (actually, just string/color/UI-related resources need to be customized). It should also be noted that other customizations may be implemented on the webservice-side.
The result of such an operation has to be a new app (with a new name) to be submitted to the store.
Is this contemplated by Windows Store policies?
What approaches can I follow?
A first approach which comes to my mind is straightforward but error-prone and verbose:
creating an app which performs the following operations:
Makes a copy of the solution
Retrieves all the solution resources
Allows the user to customize the resources
Builds in output the new app version (solution) with the overrides
If the "user" that will do the customization is a developer, meaning someone who knows how to use Visual Studio, I'd suggest creating a Visual Studio template project.
You can easily export your existing app project as template (Microsoft provides a basic step-by-step explanation at How to: Create Project Templates, and I've once written a blog post that contains a more detailed tutorial: Creating template projects).
Either way, the result is a .VSIX file that can be installed as Visual Studio Add-In. With that, any developer that has the project template installed can choose it from the File -> New -> Project... dialog in Visual Studio - a new project will be created including all the files from the original project, the developer can then adapt the resource files and build the project into a new App.

Does shiva support c++11 standard?

Does Shiva support the C++11 standard?
I want to learn how to use a game engine and I already know C++, so I prefer Shiva over Unity if it supports C++11.
ShiVa engine development does support development C++.
Please see here for more information.
One of the methods in the above link says:
In ShiVa, create a game with one main AIModel that will act as a "proxy" between the engine and your C++ code, let's call it "AIProxy".
In your "AIProxy", add for instance a handler named "onLoadScene", another one named "onMoveObject", etc.
Import your objects, create your scenes, and any other assets you'll need at runtime.
Now, export your game as an STK file.
On the Mac side, open the ShiVa Authoring Tool and create an Xcode project from your STK file.
Now you can use the function "S3DClient_SendEventToCurrentUser" located in the "S3DClient_Wrapper.h" to call your "AIProxy" handlers from the C++ and/or Objective-C. For the opposite (calling the C++ from the Script you can use the hooks related functions).

What does generating an app bundle in Windows 8.1 do?

Windows 8.1 introduced a new feature in the packaging section of the manifest called "Generate app bundle". It says that "Consider generating an app bundle if your app contains language-specific resources, a variety of image scales, or resources that apply to specific versions of DirectX. If you don't generate one, your app will run just fine, but users will have to download a larger app. For more information about app bundles, see App Packaging."
But users can change their language or run the app on a variety of different monitors at any time without reinstalling the app. So how does this feature work, what is it doing?
Basically, the App Package is split up into modular chunks. Each library that you use is split up into its component dll's. The language resources are also split up into a different chunk for each language.
This does a few things. For instance, let's say you have two games, BlackJack and Spades. Both of them use the same base engine, with the same images and base game logic. All of these are included in your 'BaseCardGame' library. In the bundle, it will keep a log of the BaseCardGame library and include it in the bundle. Now, let's say you have a user who downloads both of these apps (as you hope they would). The bundle says "I need the BaseCardGame library with XXXXX signature." Your system says "I already have that, so bundle me up the rest of the stuff that I don't have." So your users only have to download that package once.
The same thing is true for the language resources. If they have only added to their system French and Italian, then it's unlikely they're going to need the Ukrainian language information. So, they don't have to download that. Note: It does not have to be the language they have currently set, only the languages they have added to their system. If they then add a new language, the system will go and get the language packages for the apps that have them.
This is all at a high level, but describes the basics of the bundling system. Channel 9 has quite a few good videos on it.

Why do the terms API and an SDK seem to be used interchangeably?

What is the accepted definition of an API compared to the definition of an SDK? Both seem to be used interchangeably, so I'd imagine that some libraries dubbed APIs are in reality SDKs, and vice versa. Also, is there a reason for this distinction?
Thanks!
An API, or application programming interface, defines a set of classes, functions, and structures to be used by an application to make use of some library or subsystem. For example, both the windows multimedia subsystem, and windows sockets subsystem both have their own API. An API is not a concrete entity, you can't point at a file and say that the file itself is an API. An API is merely a specification for a communications protocol that a program needs to use to make use of a library or subsystem.
An SDK, or software development kit, contains tools, documentation, and needed files, to program against 1 or more APIs. Some SDKs, but by no means all, may contain sample code to demonstrate how an API can be used. 2 examples of an SDK are the Windows Platform SDK and the .NET Framework SDK.
The most likely reason the terms are used interchangeably is because sometimes an SDK only has the tools, documentation, and files for a single API, and both the API and SDK share the same name. An example of this would be the SDK for developing winamp plugins.
API - Application Programming Interface. This is what you write code to.
SDK - Software Development Kit. These are the libraries that you need so you can code. An SDK likely has many different api's contained in it.
None of the answers I've seen so far really capture it clearly and completely.
The two terms are not interchangeable and if someone uses them interchangeably, it indicates a lack of understanding or preciseness.
API - Application Programming Interface. Exposed by a class library. Utilized by an application. When you build an application that uses the library, this is the interface your code uses to connect to or call into the library. In other words the set of rules and conventions applications must follow to use the library. The API includes the classes, their methods, the parameter lists for the methods, and other supporting elements (like enumerations, constants and so on). An API is an abstract artifact: You cannot download an API, or install an API. You can describe an API, and you can use one. The library itself is the concrete realization of the API, the delivery mechanism.
SDK - Software Development Kit. This is a concrete thing. You can download an SDK, install it, store it. An SDK includes:
libraries, which, as you know, expose or provide APIs.
header files (if applicable)
documentation - readme files, help files, release notes, reference documentation, programming guides. Realized as .CHM files, pdf documents, etc.
tools - such as compilers, assemblers, linkers, profilers, debuggers, optmizers, test tools, and more.
sample code and sample apps - showing how to use the API
maybe some other stuff that doesn't fit into one of the above categories
A Concrete Example:
the Java SDK is a downloadable, versioned thing. It delivers libraries, tools (on windows: javac.exe, java.exe, jar.exe, etc), all the help files and API doc, and source code for the libraries.
the API for Java is the set of rules your code must follow to invoke the libraries; these rules are described in the API documentation.
An API is an Application Programming Interface -- its something your program can talk to. An SDK usually includes an API along with documentation for the API. An API is not required to contain documentation. An SDK may include the API Components, but will always include the documentation.
APIs can exist within SDKs but not vice versa. SDKs generally contain a complete specifiction of a framework or environment. For example the Java SDK contains a full specification of the Java language plus tools, external libraries and whatever else the vendor decides to throw in there. The java apis are simply the interface to those specifications.