Author:
Armin Costa
e-mail:
armincosta@msls.biz
Dpdl
is a scripting language which can be used to easily
implement a vast variety of Services on the MSLS platform and
on other software products based on Dpdl.
A full
documented
API, Dpdl libs itself and other related tools (MapBuilder,
Data-Submission Tools, etc. ), will be available
soon for Developers.
Dpdl has been
designed to be applied especially in Mobile Devices and Embedded Systems (PDAs ....), but runs as well on other
platforms ( the same Service for example runs in an Internet
Browser).
* A very useful Feature,
is the possibility to bind actual Data with the ".map"
file, designed with our Map-builder Tool -->
mslsMapBuilder . This
makes it possible to implement in very short time a
data-service that is being visualized graphically.
Compared to other
standards like XML, Dpdl has the following advantages:
- easy to use
- enhenced binding
possibilities with the MSLS-MapBuilder-Format in order to visualize
information graphically ( see the Skiing System as example ).
- basic build in GUI-Construction (Graphical
User Interface) which, controlled by language data-constraints,
can provide a very powerful Service-Architecture.
- high execution
rates ( search for a phone-number in a packet with more than
1200 triple data-entries takes at most 0,8 seconds --> this
may depend on how the User controls the search and on how the
specific Dpdl-Script has been implented.
- high data
compression ( 1200 random data-entries --> full name, phone
nr., e-mail in ca. 22 kb )
- scalability
between different platforms
- Encryption, Integrity and
Authentication supported
- the same Dpdl-script
is used for data Encoding, Decoding and for Data
Submission
- data source
specification (typically a database or Vectors)
- supports all
basic Types ( int, string, byte, Image,
class , float, short, Object)
- on all
platforms, except on Mobile-Phones, due to missing
Serialization API, there is also the possibility to
define a class-loading and excecution mechanism
in the MSLS-Services.
------------------------------------------------------------------------------------------------
4 Dpdl
Examples
A
simple Phone-Book |
|
A
street-Finder App
(easy intergration
with GPS
) |
|
|
|
Results
-->
|
|
Results
-->
|
A simple
Weekly-Event Calendar |
A Service
to locate Shops, Hotels etc. |
|
|
Results
-->
|
Results
-->
|
Here as example a
basic Dpdl-script implementing a Phone-Book on a Mobile Phone
--> the PDA version may look slightly different due to the
possibility to scale up the search results by just altering
the numer in the CHUNK definition.
NOTE:
For Dpdl-scripts, you may probably want to use a C++ Syntax
Highlighter
------------------- Author:
Armin Costa
|
Dpdl -
EXAMPLE: Public Phone-Book
call(dpdlInterpreter)
::module dpdl_PHONEBOOK
::module_SPEC 23452
::model 836
::dpdlVersion 1.0
OPTIONS {
TARGET = MOBILE_PHONE & PDA
KVM = 1.0
ZIP = true
CHECKSUM = true
SIGNATURE = true
ENCRYPTION(RSA) = true
}
#defineDpdlEncoding UTF-8
#defineDpdlDecoding UTF-8
#defineDB phone_bz | 129.124.89.2 | root root
#defineSQL query_ SELECT * FROM PHONE_BZ
#defineCSS-StyleSheet phoneB_css phone_display.css
import extern SystemData;
import virtual DATA none {
class BolzanoPhone volatile phoneB_css {
MAP::string const name;
MAP::string using phoneNR;
MAP::string using e-mail;
#defineGUI
Default <Brunico_PhoneBook>
<please_enter_name_and_surname_here:>
}
}
#defineD BolzanoPhone src phone_bz SQL query_ {
CHUNK entry [6];
entry.content { name , phoneNR ,
e-mail }
entry.name TAG(0xef) const
(string) = 20;
entry.phoneNR TAG(0xefe) (string) =
15;
entry.e-mail TAG(0xefee) (string) =
30;
}
Dpdl -
EXAMPLE: searchable Train- , Bus-Schedules
call(dpdlInterpreter)
::module dpdl_TRAIN_BUS
::module_SPEC 34565
::model 836
::dpdlVersion 1.0
OPTIONS {
TARGET = MOBILE_PHONE & PDA
KVM = 1.0
ZIP = true
CHECKSUM = true
SIGNATURE = true
ENCRYPTION(RSA) = true
}
#defineDpdlEncoding UTF-8
#defineDpdlDecoding UTF-8
#defineDB db_bz | 129.124.89.2 | root root
#defineSQL query_Trains SELECT * FROM BZ_Train
#defineSQL query_Buses SELECT * FROM BZ_Buses
#defineSQL query_stops SELECT * FROM BZ_stops
#defineDpdlService service_ID Http 129.283.48.3 7903
#defineCSS-StyleSheet train_css train_display.css
import extern SystemData;
/*
virtual User Data-Space --> Data can be combined easily
with Maps or System Data
**/
import virtual DATA none {
class Train volatile train_css {
DATA::string const
target;
DATA::string using
trains;
#defineGUI List ONCE target
#defineSUBGui subselection_1
}
class Bus {
DATA::string const
target;
DATA::string using
busses;
#defineGUI Menu ONCE
target
}
}
#defineD Train src db_bz SQL query_Trains {
template (byte) subselection_1 src
service_ID
CHUNK entry [1];
entry.content { target , trains }
entry.target TAG(0xef) const
(string) = 30;
entry.trains TAG(0xefe) (string) = 200;
entry.reservation_form TAG(0x99f) (class)
for(CANVAS) __stdcall(visualize());
}
#defineD Bus src db_bz SQL query_Buses {
CHUNK entry [1];
entry.content { target , busses }
entry.target TAG(0xef) const (string) =
30;
entry.busses TAG(0xefe) (string) = 120;
}
/** Definition of a Second Record structure
*/
import virtual MAP BZ_city_map.mslsMap {
class Bus_Stops {
MAP::int const id;
MAP::int x;
MAP::int y;
}
}
#defineD Bus_Stops src db_bz SQL query_stops {
CHUNK entry [100];
entry.content { id , routes }
entry.id TAG(0xef) const (int) = 6;
entry.routes TAG(0xefe) (string) = 80;
}
|
|