Commit 56f225f6 authored by Paarth's avatar Paarth

added doxygen comments for php files

parent 485d60d6
<?php
/*!
/*! \file
This script compiles a given code file (except python code files) for a user using the compiler correponding to the language
of the code file, using system() function.
Returns an error if there is a compilation error.
*/
header("Access-Control-Allow-Origin: *");
......
<?php
/*!
This is the default script to connect with the MySQL server in the backend. The login and registration php scripts use this.
/*! \file
This is the default script to connect with the MySQL server in the backend.
*/
header("Access-Control-Allow-Origin: *");
......
<?php
/*!
/*! \file
This script returns the directory tree of a user's workspace, given the username. It returns a nested array in JSON form, after
using a recursive function called dirToArray()
using the recursive function called dirToArray().
*/
header("Access-Control-Allow-Origin: *");
......
<?php
/*!
/*! \file
This script uses the username, name of the code file, language of the code file and the input data (test case) and executes the code,
(given that it has already been compiled) using system() function, and returns the output. If the file hasn't been compiled or a runtime error occurs, then
the script raises an exception
the script raises an exception.
*/
header("Access-Control-Allow-Origin: *");
......
<?php
/*!
/*! \file
This script deletes a given code file, or a directory in the user's workspace, given its path.
This file also communicates with the MySQL Server to update n_files(file count) of the user, to enforce the maximum limit of 10 files.
Hence SQL Injection is taken care of.
Deleting a directory deletes all contained files.
*/
header("Access-Control-Allow-Origin: *");
......
<?php
/*!
/*! \file
This script saves a given code file for a user, given it's path.
If the file is an Attempt to a question, it is saved in the separate questions directory(part of the workspace).
This file also communicates with the MySQL Server to update n_files(file count) of the user, to enforce the maximum limit of 10 files.
Hence SQL injection is taken care of.
*/
header("Access-Control-Allow-Origin: *");
......
<?php
/*!
/*! \file
This script uses the username and file path in the user's workspace to return the contents in the requested file (code file).
If the file path is not found on the server, a 404 HTTP error is raised.
*/
......
......@@ -2,6 +2,7 @@
/*! \file
This script is for user login using username and password. Here, we authenticate user credentials with MySQL server.
Returns a 404 error if username/password is incorrect.
*/
include_once("database.php");
......
<?php
/** \file
* This script creates a new directory as and where, the user wants it to be made.
* Returns 0 in case a directory with the same name and path already exists.
* Returns 1 in case of a succesful operation.
*/
header("Access-Control-Allow-Origin: *");
header('Access-Control-Allow-Credentials: true');
header("Access-Control-Allow-Methods: PUT, GET, POST, DELETE, OPTIONS");
......
<?php
/** \file
* This script compares the output generated by users's code and the correct output, for the specified testcase.
* This script also ensures that the change in rating is handled based on if the testcase is correct.
* For this the script communicates with the MySQL server.
* Thus SQL injection has been handled.
*/
header("Access-Control-Allow-Origin: *");
header('Access-Control-Allow-Credentials: true');
header("Access-Control-Allow-Methods: PUT, GET, POST, DELETE");
......
<?php
/*!
/*! \file
This script checks the questions present in the MySQL database, and sends the question info (title, problem statement,
start and end time, and the author's username) to the frontend.
For this the script communicates with the MySQL server.
Thus SQL injection has been handled.
*/
header("Access-Control-Allow-Origin: *");
......
<?php
/*!
/*! \file
This script saves a question in the MySQL database after a user creates it. It uses parameters like, author's username,
problem statement, testcases, start and end time, etc.
*/
......
<?php
/*!
This script registers a user using a username, password, name, and email. This script communicates with the MySQL server to save
user data.
/** \file
This script registers a user using a username, password, name, and email.
This script communicates with the MySQL server to save user data.
Passowrd is hashed, and SQL injection is taken care of.
The process of registering involves -
1. An insert operation into the users table, in the database.
2. Creation of directories, required to store files, executables and question attempts made by the user.
Returns a 404 error if username already exists.
*/
header("Access-Control-Allow-Origin: *");
......@@ -12,7 +18,10 @@ header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Ac
header("Content-Type: application/json; charset=UTF-8");
include_once("database.php");
/** \cond */
$postData = file_get_contents("php://input");
/** \endcond */
if (isset($postData) && !empty($postData)) {
......
<?php
/** \file
* This script updates the userdata based on whether the most recent attempt made by the user was successful or unsuccessful.
* An attempt is successful if and only if all testcases produce correct output.
*/
header("Access-Control-Allow-Origin: *");
header('Access-Control-Allow-Credentials: true');
header("Access-Control-Allow-Methods: PUT, GET, POST, DELETE");
......
/* The standard CSS for doxygen 1.9.0 */
body, table, div, p, dl {
font: 400 14px/22px Roboto,sans-serif;
}
p.reference, p.definition {
font: 400 14px/22px Roboto,sans-serif;
}
/* @group Heading Levels */
h1.groupheader {
font-size: 150%;
}
.title {
font: 400 14px/28px Roboto,sans-serif;
font-size: 150%;
font-weight: bold;
margin: 10px 2px;
}
h2.groupheader {
border-bottom: 1px solid #879ECB;
color: #354C7B;
font-size: 150%;
font-weight: normal;
margin-top: 1.75em;
padding-top: 8px;
padding-bottom: 4px;
width: 100%;
}
h3.groupheader {
font-size: 100%;
}
h1, h2, h3, h4, h5, h6 {
-webkit-transition: text-shadow 0.5s linear;
-moz-transition: text-shadow 0.5s linear;
-ms-transition: text-shadow 0.5s linear;
-o-transition: text-shadow 0.5s linear;
transition: text-shadow 0.5s linear;
margin-right: 15px;
}
h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow {
text-shadow: 0 0 15px cyan;
}
dt {
font-weight: bold;
}
ul.multicol {
-moz-column-gap: 1em;
-webkit-column-gap: 1em;
column-gap: 1em;
-moz-column-count: 3;
-webkit-column-count: 3;
column-count: 3;
}
p.startli, p.startdd {
margin-top: 2px;
}
th p.starttd, th p.intertd, th p.endtd {
font-size: 100%;
font-weight: 700;
}
p.starttd {
margin-top: 0px;
}
p.endli {
margin-bottom: 0px;
}
p.enddd {
margin-bottom: 4px;
}
p.endtd {
margin-bottom: 2px;
}
p.interli {
}
p.interdd {
}
p.intertd {
}
/* @end */
caption {
font-weight: bold;
}
span.legend {
font-size: 70%;
text-align: center;
}
h3.version {
font-size: 90%;
text-align: center;
}
div.qindex, div.navtab{
background-color: #EBEFF6;
border: 1px solid #A3B4D7;
text-align: center;
}
div.qindex, div.navpath {
width: 100%;
line-height: 140%;
}
div.navtab {
margin-right: 15px;
}
/* @group Link Styling */
a {
color: #3D578C;
font-weight: normal;
text-decoration: none;
}
.contents a:visited {
color: #4665A2;
}
a:hover {
text-decoration: underline;
}
a.qindex {
font-weight: bold;
}
a.qindexHL {
font-weight: bold;
background-color: #9CAFD4;
color: #FFFFFF;
border: 1px double #869DCA;
}
.contents a.qindexHL:visited {
color: #FFFFFF;
}
a.el {
font-weight: bold;
}
a.elRef {
}
a.code, a.code:visited, a.line, a.line:visited {
color: #4665A2;
}
a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited {
color: #4665A2;
}
/* @end */
dl.el {
margin-left: -1cm;
}
ul {
overflow: hidden; /*Fixed: list item bullets overlap floating elements*/
}
#side-nav ul {
overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */
}
#main-nav ul {
overflow: visible; /* reset ul rule for the navigation bar drop down lists */
}
.fragment {
text-align: left;
direction: ltr;
overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/
overflow-y: hidden;
}
pre.fragment {
border: 1px solid #C4CFE5;
background-color: #FBFCFD;
padding: 4px 6px;
margin: 4px 8px 4px 2px;
overflow: auto;
word-wrap: break-word;
font-size: 9pt;
line-height: 125%;
font-family: monospace, fixed;
font-size: 105%;
}
div.fragment {
padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/
margin: 4px 8px 4px 2px;
background-color: #FBFCFD;
border: 1px solid #C4CFE5;
}
div.line {
font-family: monospace, fixed;
font-size: 13px;
min-height: 13px;
line-height: 1.0;
text-wrap: unrestricted;
white-space: -moz-pre-wrap; /* Moz */
white-space: -pre-wrap; /* Opera 4-6 */
white-space: -o-pre-wrap; /* Opera 7 */
white-space: pre-wrap; /* CSS3 */
word-wrap: break-word; /* IE 5.5+ */
text-indent: -53px;
padding-left: 53px;
padding-bottom: 0px;
margin: 0px;
-webkit-transition-property: background-color, box-shadow;
-webkit-transition-duration: 0.5s;
-moz-transition-property: background-color, box-shadow;
-moz-transition-duration: 0.5s;
-ms-transition-property: background-color, box-shadow;
-ms-transition-duration: 0.5s;
-o-transition-property: background-color, box-shadow;
-o-transition-duration: 0.5s;
transition-property: background-color, box-shadow;
transition-duration: 0.5s;
}
div.line:after {
content:"\000A";
white-space: pre;
}
div.line.glow {
background-color: cyan;
box-shadow: 0 0 10px cyan;
}
span.lineno {
padding-right: 4px;
text-align: right;
border-right: 2px solid #0F0;
background-color: #E8E8E8;
white-space: pre;
}
span.lineno a {
background-color: #D8D8D8;
}
span.lineno a:hover {
background-color: #C8C8C8;
}
.lineno {
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
div.ah, span.ah {
background-color: black;
font-weight: bold;
color: #FFFFFF;
margin-bottom: 3px;
margin-top: 3px;
padding: 0.2em;
border: solid thin #333;
border-radius: 0.5em;
-webkit-border-radius: .5em;
-moz-border-radius: .5em;
box-shadow: 2px 2px 3px #999;
-webkit-box-shadow: 2px 2px 3px #999;
-moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444));
background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%);
}
div.classindex ul {
list-style: none;
padding-left: 0;
}
div.classindex span.ai {
display: inline-block;
}
div.groupHeader {
margin-left: 16px;
margin-top: 12px;
font-weight: bold;
}
div.groupText {
margin-left: 16px;
font-style: italic;
}
body {
background-color: white;
color: black;
margin: 0;
}
div.contents {
margin-top: 10px;
margin-left: 12px;
margin-right: 8px;
}
td.indexkey {
background-color: #EBEFF6;
font-weight: bold;
border: 1px solid #C4CFE5;
margin: 2px 0px 2px 0;
padding: 2px 10px;
white-space: nowrap;
vertical-align: top;
}
td.indexvalue {
background-color: #EBEFF6;
border: 1px solid #C4CFE5;
padding: 2px 10px;
margin: 2px 0px;
}
tr.memlist {
background-color: #EEF1F7;
}
p.formulaDsp {
text-align: center;
}
img.formulaDsp {
}
img.formulaInl, img.inline {
vertical-align: middle;
}
div.center {
text-align: center;
margin-top: 0px;
margin-bottom: 0px;
padding: 0px;
}
div.center img {
border: 0px;
}
address.footer {
text-align: right;
padding-right: 12px;
}
img.footer {
border: 0px;
vertical-align: middle;
}
/* @group Code Colorization */
span.keyword {
color: #008000
}
span.keywordtype {
color: #604020
}
span.keywordflow {
color: #e08000
}
span.comment {
color: #800000
}
span.preprocessor {
color: #806020
}
span.stringliteral {
color: #002080
}
span.charliteral {
color: #008080
}
span.vhdldigit {
color: #ff00ff
}
span.vhdlchar {
color: #000000
}
span.vhdlkeyword {
color: #700070
}
span.vhdllogic {
color: #ff0000
}
blockquote {
background-color: #F7F8FB;
border-left: 2px solid #9CAFD4;
margin: 0 24px 0 4px;
padding: 0 12px 0 16px;
}
blockquote.DocNodeRTL {
border-left: 0;
border-right: 2px solid #9CAFD4;
margin: 0 4px 0 24px;
padding: 0 16px 0 12px;
}
/* @end */
/*
.search {
color: #003399;
font-weight: bold;
}
form.search {
margin-bottom: 0px;
margin-top: 0px;
}
input.search {
font-size: 75%;
color: #000080;
font-weight: normal;
background-color: #e8eef2;
}
*/
td.tiny {
font-size: 75%;
}
.dirtab {
padding: 4px;
border-collapse: collapse;
border: 1px solid #A3B4D7;
}
th.dirtab {
background: #EBEFF6;
font-weight: bold;
}
hr {
height: 0px;
border: none;
border-top: 1px solid #4A6AAA;
}
hr.footer {
height: 1px;
}
/* @group Member Descriptions */
table.memberdecls {
border-spacing: 0px;
padding: 0px;
}
.memberdecls td, .fieldtable tr {
-webkit-transition-property: background-color, box-shadow;
-webkit-transition-duration: 0.5s;
-moz-transition-property: background-color, box-shadow;
-moz-transition-duration: 0.5s;
-ms-transition-property: background-color, box-shadow;
-ms-transition-duration: 0.5s;
-o-transition-property: background-color, box-shadow;
-o-transition-duration: 0.5s;
transition-property: background-color, box-shadow;
transition-duration: 0.5s;
}
.memberdecls td.glow, .fieldtable tr.glow {
background-color: cyan;
box-shadow: 0 0 15px cyan;
}
.mdescLeft, .mdescRight,
.memItemLeft, .memItemRight,
.memTemplItemLeft, .memTemplItemRight, .memTemplParams {
background-color: #F9FAFC;
border: none;
margin: 4px;
padding: 1px 0 0 8px;
}
.mdescLeft, .mdescRight {
padding: 0px 8px 4px 8px;
color: #555;
}
.memSeparator {
border-bottom: 1px solid #DEE4F0;
line-height: 1px;
margin: 0px;
padding: 0px;
}
.memItemLeft, .memTemplItemLeft {
white-space: nowrap;
}
.memItemRight, .memTemplItemRight {
width: 100%;
}
.memTemplParams {
color: #4665A2;
white-space: nowrap;
font-size: 80%;
}
/* @end */
/* @group Member Details */
/* Styles for detailed member documentation */
.memtitle {
padding: 8px;
border-top: 1px solid #A8B8D9;
border-left: 1px solid #A8B8D9;
border-right: 1px solid #A8B8D9;
border-top-right-radius: 4px;
border-top-left-radius: 4px;
margin-bottom: -1px;
background-image: url('nav_f.png');
background-repeat: repeat-x;
background-color: #E2E8F2;
line-height: 1.25;
font-weight: 300;
float:left;
}
.permalink
{
font-size: 65%;
display: inline-block;
vertical-align: middle;
}
.memtemplate {
font-size: 80%;
color: #4665A2;
font-weight: normal;
margin-left: 9px;
}
.memnav {
background-color: #EBEFF6;
border: 1px solid #A3B4D7;
text-align: center;
margin: 2px;
margin-right: 15px;
padding: 2px;
}
.mempage {
width: 100%;
}
.memitem {
padding: 0;
margin-bottom: 10px;
margin-right: 5px;
-webkit-transition: box-shadow 0.5s linear;
-moz-transition: box-shadow 0.5s linear;
-ms-transition: box-shadow 0.5s linear;
-o-transition: box-shadow 0.5s linear;
transition: box-shadow 0.5s linear;
display: table !important;
width: 100%;
}
.memitem.glow {
box-shadow: 0 0 15px cyan;
}
.memname {
font-weight: 400;
margin-left: 6px;
}
.memname td {
vertical-align: bottom;
}
.memproto, dl.reflist dt {
border-top: 1px solid #A8B8D9;
border-left: 1px solid #A8B8D9;
border-right: 1px solid #A8B8D9;
padding: 6px 0px 6px 0px;
color: #253555;
font-weight: bold;
text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
background-color: #DFE5F1;
/* opera specific markup */
box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
border-top-right-radius: 4px;
/* firefox specific markup */
-moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
-moz-border-radius-topright: 4px;
/* webkit specific markup */
-webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
-webkit-border-top-right-radius: 4px;
}
.overload {
font-family: "courier new",courier,monospace;
font-size: 65%;
}
.memdoc, dl.reflist dd {
border-bottom: 1px solid #A8B8D9;
border-left: 1px solid #A8B8D9;
border-right: 1px solid #A8B8D9;
padding: 6px 10px 2px 10px;
background-color: #FBFCFD;
border-top-width: 0;
background-image:url('nav_g.png');
background-repeat:repeat-x;
background-color: #FFFFFF;
/* opera specific markup */
border-bottom-left-radius: 4px;
border-bottom-right-radius: 4px;
box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
/* firefox specific markup */
-moz-border-radius-bottomleft: 4px;
-moz-border-radius-bottomright: 4px;
-moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
/* webkit specific markup */
-webkit-border-bottom-left-radius: 4px;
-webkit-border-bottom-right-radius: 4px;
-webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
}
dl.reflist dt {
padding: 5px;
}
dl.reflist dd {
margin: 0px 0px 10px 0px;
padding: 5px;
}
.paramkey {
text-align: right;
}
.paramtype {
white-space: nowrap;
}
.paramname {
color: #602020;
white-space: nowrap;
}
.paramname em {
font-style: normal;
}
.paramname code {
line-height: 14px;
}
.params, .retval, .exception, .tparams {
margin-left: 0px;
padding-left: 0px;
}
.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname {
font-weight: bold;
vertical-align: top;
}
.params .paramtype, .tparams .paramtype {
font-style: italic;
vertical-align: top;
}
.params .paramdir, .tparams .paramdir {
font-family: "courier new",courier,monospace;
vertical-align: top;
}
table.mlabels {
border-spacing: 0px;
}
td.mlabels-left {
width: 100%;
padding: 0px;
}
td.mlabels-right {
vertical-align: bottom;
padding: 0px;
white-space: nowrap;
}
span.mlabels {
margin-left: 8px;
}
span.mlabel {
background-color: #728DC1;
border-top:1px solid #5373B4;
border-left:1px solid #5373B4;
border-right:1px solid #C4CFE5;
border-bottom:1px solid #C4CFE5;
text-shadow: none;
color: white;
margin-right: 4px;
padding: 2px 3px;
border-radius: 3px;
font-size: 7pt;
white-space: nowrap;
vertical-align: middle;
}
/* @end */
/* these are for tree view inside a (index) page */
div.directory {
margin: 10px 0px;
border-top: 1px solid #9CAFD4;
border-bottom: 1px solid #9CAFD4;
width: 100%;
}
.directory table {
border-collapse:collapse;
}
.directory td {
margin: 0px;
padding: 0px;
vertical-align: top;
}
.directory td.entry {
white-space: nowrap;
padding-right: 6px;
padding-top: 3px;
}
.directory td.entry a {
outline:none;
}
.directory td.entry a img {
border: none;
}
.directory td.desc {
width: 100%;
padding-left: 6px;
padding-right: 6px;
padding-top: 3px;
border-left: 1px solid rgba(0,0,0,0.05);
}
.directory tr.even {
padding-left: 6px;
background-color: #F7F8FB;
}
.directory img {
vertical-align: -30%;
}
.directory .levels {
white-space: nowrap;
width: 100%;
text-align: right;
font-size: 9pt;
}
.directory .levels span {
cursor: pointer;
padding-left: 2px;
padding-right: 2px;
color: #3D578C;
}
.arrow {
color: #9CAFD4;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
cursor: pointer;
font-size: 80%;
display: inline-block;
width: 16px;
height: 22px;
}
.icon {
font-family: Arial, Helvetica;
font-weight: bold;
font-size: 12px;
height: 14px;
width: 16px;
display: inline-block;
background-color: #728DC1;
color: white;
text-align: center;
border-radius: 4px;
margin-left: 2px;
margin-right: 2px;
}
.icona {
width: 24px;
height: 22px;
display: inline-block;
}
.iconfopen {
width: 24px;
height: 18px;
margin-bottom: 4px;
background-image:url('folderopen.png');
background-position: 0px -4px;
background-repeat: repeat-y;
vertical-align:top;
display: inline-block;
}
.iconfclosed {
width: 24px;
height: 18px;
margin-bottom: 4px;
background-image:url('folderclosed.png');
background-position: 0px -4px;
background-repeat: repeat-y;
vertical-align:top;
display: inline-block;
}
.icondoc {
width: 24px;
height: 18px;
margin-bottom: 4px;
background-image:url('doc.png');
background-position: 0px -4px;
background-repeat: repeat-y;
vertical-align:top;
display: inline-block;
}
table.directory {
font: 400 14px Roboto,sans-serif;
}
/* @end */
div.dynheader {
margin-top: 8px;
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
address {
font-style: normal;
color: #2A3D61;
}
table.doxtable caption {
caption-side: top;
}
table.doxtable {
border-collapse:collapse;
margin-top: 4px;
margin-bottom: 4px;
}
table.doxtable td, table.doxtable th {
border: 1px solid #2D4068;
padding: 3px 7px 2px;
}
table.doxtable th {
background-color: #374F7F;
color: #FFFFFF;
font-size: 110%;
padding-bottom: 4px;
padding-top: 5px;
}
table.fieldtable {
/*width: 100%;*/
margin-bottom: 10px;
border: 1px solid #A8B8D9;
border-spacing: 0px;
-moz-border-radius: 4px;
-webkit-border-radius: 4px;
border-radius: 4px;
-moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
-webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
}
.fieldtable td, .fieldtable th {
padding: 3px 7px 2px;
}
.fieldtable td.fieldtype, .fieldtable td.fieldname {
white-space: nowrap;
border-right: 1px solid #A8B8D9;
border-bottom: 1px solid #A8B8D9;
vertical-align: top;
}
.fieldtable td.fieldname {
padding-top: 3px;
}
.fieldtable td.fielddoc {
border-bottom: 1px solid #A8B8D9;
/*width: 100%;*/
}
.fieldtable td.fielddoc p:first-child {
margin-top: 0px;
}
.fieldtable td.fielddoc p:last-child {
margin-bottom: 2px;
}
.fieldtable tr:last-child td {
border-bottom: none;
}
.fieldtable th {
background-image:url('nav_f.png');
background-repeat:repeat-x;
background-color: #E2E8F2;
font-size: 90%;
color: #253555;
padding-bottom: 4px;
padding-top: 5px;
text-align:left;
font-weight: 400;
-moz-border-radius-topleft: 4px;
-moz-border-radius-topright: 4px;
-webkit-border-top-left-radius: 4px;
-webkit-border-top-right-radius: 4px;
border-top-left-radius: 4px;
border-top-right-radius: 4px;
border-bottom: 1px solid #A8B8D9;
}
.tabsearch {
top: 0px;
left: 10px;
height: 36px;
background-image: url('tab_b.png');
z-index: 101;
overflow: hidden;
font-size: 13px;
}
.navpath ul
{
font-size: 11px;
background-image:url('tab_b.png');
background-repeat:repeat-x;
background-position: 0 -5px;
height:30px;
line-height:30px;
color:#8AA0CC;
border:solid 1px #C2CDE4;
overflow:hidden;
margin:0px;
padding:0px;
}
.navpath li
{
list-style-type:none;
float:left;
padding-left:10px;
padding-right:15px;
background-image:url('bc_s.png');
background-repeat:no-repeat;
background-position:right;
color:#364D7C;
}
.navpath li.navelem a
{
height:32px;
display:block;
text-decoration: none;
outline: none;
color: #283A5D;
font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
text-decoration: none;
}
.navpath li.navelem a:hover
{
color:#6884BD;
}
.navpath li.footer
{
list-style-type:none;
float:right;
padding-left:10px;
padding-right:15px;
background-image:none;
background-repeat:no-repeat;
background-position:right;
color:#364D7C;
font-size: 8pt;
}
div.summary
{
float: right;
font-size: 8pt;
padding-right: 5px;
width: 50%;
text-align: right;
}
div.summary a
{
white-space: nowrap;
}
table.classindex
{
margin: 10px;
white-space: nowrap;
margin-left: 3%;
margin-right: 3%;
width: 94%;
border: 0;
border-spacing: 0;
padding: 0;
}
div.ingroups
{
font-size: 8pt;
width: 50%;
text-align: left;
}
div.ingroups a
{
white-space: nowrap;
}
div.header
{
background-image:url('nav_h.png');
background-repeat:repeat-x;
background-color: #F9FAFC;
margin: 0px;
border-bottom: 1px solid #C4CFE5;
}
div.headertitle
{
padding: 5px 5px 5px 10px;
}
.PageDocRTL-title div.headertitle {
text-align: right;
direction: rtl;
}
dl {
padding: 0 0 0 0;
}
/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */
dl.section {
margin-left: 0px;
padding-left: 0px;
}
dl.section.DocNodeRTL {
margin-right: 0px;
padding-right: 0px;
}
dl.note {
margin-left: -7px;
padding-left: 3px;
border-left: 4px solid;
border-color: #D0C000;
}
dl.note.DocNodeRTL {
margin-left: 0;
padding-left: 0;
border-left: 0;
margin-right: -7px;
padding-right: 3px;
border-right: 4px solid;
border-color: #D0C000;
}
dl.warning, dl.attention {
margin-left: -7px;
padding-left: 3px;
border-left: 4px solid;
border-color: #FF0000;
}
dl.warning.DocNodeRTL, dl.attention.DocNodeRTL {
margin-left: 0;
padding-left: 0;
border-left: 0;
margin-right: -7px;
padding-right: 3px;
border-right: 4px solid;
border-color: #FF0000;
}
dl.pre, dl.post, dl.invariant {
margin-left: -7px;
padding-left: 3px;
border-left: 4px solid;
border-color: #00D000;
}
dl.pre.DocNodeRTL, dl.post.DocNodeRTL, dl.invariant.DocNodeRTL {
margin-left: 0;
padding-left: 0;
border-left: 0;
margin-right: -7px;
padding-right: 3px;
border-right: 4px solid;
border-color: #00D000;
}
dl.deprecated {
margin-left: -7px;
padding-left: 3px;
border-left: 4px solid;
border-color: #505050;
}
dl.deprecated.DocNodeRTL {
margin-left: 0;
padding-left: 0;
border-left: 0;
margin-right: -7px;
padding-right: 3px;
border-right: 4px solid;
border-color: #505050;
}
dl.todo {
margin-left: -7px;
padding-left: 3px;
border-left: 4px solid;
border-color: #00C0E0;
}
dl.todo.DocNodeRTL {
margin-left: 0;
padding-left: 0;
border-left: 0;
margin-right: -7px;
padding-right: 3px;
border-right: 4px solid;
border-color: #00C0E0;
}
dl.test {
margin-left: -7px;
padding-left: 3px;
border-left: 4px solid;
border-color: #3030E0;
}
dl.test.DocNodeRTL {
margin-left: 0;
padding-left: 0;
border-left: 0;
margin-right: -7px;
padding-right: 3px;
border-right: 4px solid;
border-color: #3030E0;
}
dl.bug {
margin-left: -7px;
padding-left: 3px;
border-left: 4px solid;
border-color: #C08050;
}
dl.bug.DocNodeRTL {
margin-left: 0;
padding-left: 0;
border-left: 0;
margin-right: -7px;
padding-right: 3px;
border-right: 4px solid;
border-color: #C08050;
}
dl.section dd {
margin-bottom: 6px;
}
#projectlogo
{
text-align: center;
vertical-align: bottom;
border-collapse: separate;
}
#projectlogo img
{
border: 0px none;
}
#projectalign
{
vertical-align: middle;
}
#projectname
{
font: 300% Tahoma, Arial,sans-serif;
margin: 0px;
padding: 2px 0px;
}
#projectbrief
{
font: 120% Tahoma, Arial,sans-serif;
margin: 0px;
padding: 0px;
}
#projectnumber
{
font: 50% Tahoma, Arial,sans-serif;
margin: 0px;
padding: 0px;
}
#titlearea
{
padding: 0px;
margin: 0px;
width: 100%;
border-bottom: 1px solid #5373B4;
}
.image
{
text-align: center;
}
.dotgraph
{
text-align: center;
}
.mscgraph
{
text-align: center;
}
.plantumlgraph
{
text-align: center;
}
.diagraph
{
text-align: center;
}
.caption
{
font-weight: bold;
}
div.zoom
{
border: 1px solid #90A5CE;
}
dl.citelist {
margin-bottom:50px;
}
dl.citelist dt {
color:#334975;
float:left;
font-weight:bold;
margin-right:10px;
padding:5px;
text-align:right;
width:52px;
}
dl.citelist dd {
margin:2px 0 2px 72px;
padding:5px 0;
}
div.toc {
padding: 14px 25px;
background-color: #F4F6FA;
border: 1px solid #D8DFEE;
border-radius: 7px 7px 7px 7px;
float: right;
height: auto;
margin: 0 8px 10px 10px;
width: 200px;
}
.PageDocRTL-title div.toc {
float: left !important;
text-align: right;
}
div.toc li {
background: url("bdwn.png") no-repeat scroll 0 5px transparent;
font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif;
margin-top: 5px;
padding-left: 10px;
padding-top: 2px;
}
.PageDocRTL-title div.toc li {
background-position-x: right !important;
padding-left: 0 !important;
padding-right: 10px;
}
div.toc h3 {
font: bold 12px/1.2 Arial,FreeSans,sans-serif;
color: #4665A2;
border-bottom: 0 none;
margin: 0;
}
div.toc ul {
list-style: none outside none;
border: medium none;
padding: 0px;
}
div.toc li.level1 {
margin-left: 0px;
}
div.toc li.level2 {
margin-left: 15px;
}
div.toc li.level3 {
margin-left: 30px;
}
div.toc li.level4 {
margin-left: 45px;
}
span.emoji {
/* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html
* font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort;
*/
}
.PageDocRTL-title div.toc li.level1 {
margin-left: 0 !important;
margin-right: 0;
}
.PageDocRTL-title div.toc li.level2 {
margin-left: 0 !important;
margin-right: 15px;
}
.PageDocRTL-title div.toc li.level3 {
margin-left: 0 !important;
margin-right: 30px;
}
.PageDocRTL-title div.toc li.level4 {
margin-left: 0 !important;
margin-right: 45px;
}
.inherit_header {
font-weight: bold;
color: gray;
cursor: pointer;
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.inherit_header td {
padding: 6px 0px 2px 5px;
}
.inherit {
display: none;
}
tr.heading h2 {
margin-top: 12px;
margin-bottom: 4px;
}
/* tooltip related style info */
.ttc {
position: absolute;
display: none;
}
#powerTip {
cursor: default;
white-space: nowrap;
background-color: white;
border: 1px solid gray;
border-radius: 4px 4px 4px 4px;
box-shadow: 1px 1px 7px gray;
display: none;
font-size: smaller;
max-width: 80%;
opacity: 0.9;
padding: 1ex 1em 1em;
position: absolute;
z-index: 2147483647;
}
#powerTip div.ttdoc {
color: grey;
font-style: italic;
}
#powerTip div.ttname a {
font-weight: bold;
}
#powerTip div.ttname {
font-weight: bold;
}
#powerTip div.ttdeci {
color: #006318;
}
#powerTip div {
margin: 0px;
padding: 0px;
font: 12px/16px Roboto,sans-serif;
}
#powerTip:before, #powerTip:after {
content: "";
position: absolute;
margin: 0px;
}
#powerTip.n:after, #powerTip.n:before,
#powerTip.s:after, #powerTip.s:before,
#powerTip.w:after, #powerTip.w:before,
#powerTip.e:after, #powerTip.e:before,
#powerTip.ne:after, #powerTip.ne:before,
#powerTip.se:after, #powerTip.se:before,
#powerTip.nw:after, #powerTip.nw:before,
#powerTip.sw:after, #powerTip.sw:before {
border: solid transparent;
content: " ";
height: 0;
width: 0;
position: absolute;
}
#powerTip.n:after, #powerTip.s:after,
#powerTip.w:after, #powerTip.e:after,
#powerTip.nw:after, #powerTip.ne:after,
#powerTip.sw:after, #powerTip.se:after {
border-color: rgba(255, 255, 255, 0);
}
#powerTip.n:before, #powerTip.s:before,
#powerTip.w:before, #powerTip.e:before,
#powerTip.nw:before, #powerTip.ne:before,
#powerTip.sw:before, #powerTip.se:before {
border-color: rgba(128, 128, 128, 0);
}
#powerTip.n:after, #powerTip.n:before,
#powerTip.ne:after, #powerTip.ne:before,
#powerTip.nw:after, #powerTip.nw:before {
top: 100%;
}
#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after {
border-top-color: #FFFFFF;
border-width: 10px;
margin: 0px -10px;
}
#powerTip.n:before {
border-top-color: #808080;
border-width: 11px;
margin: 0px -11px;
}
#powerTip.n:after, #powerTip.n:before {
left: 50%;
}
#powerTip.nw:after, #powerTip.nw:before {
right: 14px;
}
#powerTip.ne:after, #powerTip.ne:before {
left: 14px;
}
#powerTip.s:after, #powerTip.s:before,
#powerTip.se:after, #powerTip.se:before,
#powerTip.sw:after, #powerTip.sw:before {
bottom: 100%;
}
#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after {
border-bottom-color: #FFFFFF;
border-width: 10px;
margin: 0px -10px;
}
#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before {
border-bottom-color: #808080;
border-width: 11px;
margin: 0px -11px;
}
#powerTip.s:after, #powerTip.s:before {
left: 50%;
}
#powerTip.sw:after, #powerTip.sw:before {
right: 14px;
}
#powerTip.se:after, #powerTip.se:before {
left: 14px;
}
#powerTip.e:after, #powerTip.e:before {
left: 100%;
}
#powerTip.e:after {
border-left-color: #FFFFFF;
border-width: 10px;
top: 50%;
margin-top: -10px;
}
#powerTip.e:before {
border-left-color: #808080;
border-width: 11px;
top: 50%;
margin-top: -11px;
}
#powerTip.w:after, #powerTip.w:before {
right: 100%;
}
#powerTip.w:after {
border-right-color: #FFFFFF;
border-width: 10px;
top: 50%;
margin-top: -10px;
}
#powerTip.w:before {
border-right-color: #808080;
border-width: 11px;
top: 50%;
margin-top: -11px;
}
@media print
{
#top { display: none; }
#side-nav { display: none; }
#nav-path { display: none; }
body { overflow:visible; }
h1, h2, h3, h4, h5, h6 { page-break-after: avoid; }
.summary { display: none; }
.memitem { page-break-inside: avoid; }
#doc-content
{
margin-left:0 !important;
height:auto !important;
width:auto !important;
overflow:inherit;
display:inline;
}
}
/* @group Markdown */
table.markdownTable {
border-collapse:collapse;
margin-top: 4px;
margin-bottom: 4px;
}
table.markdownTable td, table.markdownTable th {
border: 1px solid #2D4068;
padding: 3px 7px 2px;
}
table.markdownTable tr {
}
th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone {
background-color: #374F7F;
color: #FFFFFF;
font-size: 110%;
padding-bottom: 4px;
padding-top: 5px;
}
th.markdownTableHeadLeft, td.markdownTableBodyLeft {
text-align: left
}
th.markdownTableHeadRight, td.markdownTableBodyRight {
text-align: right
}
th.markdownTableHeadCenter, td.markdownTableBodyCenter {
text-align: center
}
.DocNodeRTL {
text-align: right;
direction: rtl;
}
.DocNodeLTR {
text-align: left;
direction: ltr;
}
table.DocNodeRTL {
width: auto;
margin-right: 0;
margin-left: auto;
}
table.DocNodeLTR {
width: auto;
margin-right: auto;
margin-left: 0;
}
tt, code, kbd, samp
{
display: inline-block;
direction:ltr;
}
/* @end */
u {
text-decoration: underline;
}
<?xml version="1.0" encoding="UTF-8"?>
<svg version="1.1" viewBox="0 0 104 31" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs>
<linearGradient id="a">
<stop stop-color="#5373B4" offset="0"/>
<stop stop-color="#7C95C6" offset="1"/>
</linearGradient>
<linearGradient id="d" x1="31.474" x2="31.474" y1="24.821" y2="26.773" gradientUnits="userSpaceOnUse" xlink:href="#a"/>
<linearGradient id="c" x1="31.474" x2="31.474" y1="24.821" y2="26.773" gradientTransform="matrix(.6816 0 0 1.0248 72.391 -.91809)" gradientUnits="userSpaceOnUse" xlink:href="#a"/>
<linearGradient id="b" x1="56.295" x2="56.295" y1="24.622" y2="26.574" gradientUnits="userSpaceOnUse" xlink:href="#a"/>
<linearGradient id="e" x1="49.067" x2="48.956" y1="19.719" y2="9.5227" gradientTransform="matrix(.97968 0 0 1.0207 -.25579 -.25579)" gradientUnits="userSpaceOnUse">
<stop stop-color="#C0CCE3" offset="0"/>
<stop stop-color="#EEF1F7" offset="1"/>
</linearGradient>
<filter id="f" x="-.010676" y="-.045304" width="1.0214" height="1.0906" color-interpolation-filters="sRGB">
<feGaussianBlur stdDeviation="0.45293203"/>
</filter>
</defs>
<g>
<path transform="translate(-2.5759 -27.848)" d="m13.609 32.203v6.8633h-0.05078c-0.40533-0.66867-0.96254-1.1715-1.6719-1.5059-0.69244-0.35193-1.4282-0.52734-2.2051-0.52734-0.96267 0-1.807 0.2027-2.5332 0.60742-0.72622 0.38713-1.3344 0.90556-1.8242 1.5566-0.47289 0.65108-0.83456 1.4092-1.0879 2.2715-0.23644 0.84464-0.35547 1.7236-0.35547 2.6387 0 0.95022 0.11902 1.8643 0.35547 2.7441 0.25333 0.87983 0.615 1.6633 1.0879 2.3496 0.48978 0.66867 1.1065 1.2066 1.8496 1.6113 0.74311 0.38713 1.6044 0.58008 2.584 0.58008 0.86133 0 1.6311-0.15787 2.3066-0.47461 0.69244-0.33434 1.2497-0.87227 1.6719-1.6113h0.05078v1.7422h3.4199v-18.846zm12.875 4.8301c-1.0302 0-1.9596 0.17541-2.7871 0.52734-0.82756 0.33434-1.5358 0.81965-2.127 1.4531-0.59111 0.61588-1.0483 1.3721-1.3691 2.2695-0.32089 0.87983-0.48047 1.866-0.48047 2.957s0.15958 2.0752 0.48047 2.9551c0.32089 0.87983 0.77803 1.6361 1.3691 2.2695 0.59111 0.61588 1.2994 1.0914 2.127 1.4258 0.82756 0.33434 1.7569 0.50195 2.7871 0.50195 1.0302 0 1.9596-0.16762 2.7871-0.50195 0.84444-0.33434 1.5612-0.8099 2.1523-1.4258 0.59111-0.63348 1.0483-1.3897 1.3691-2.2695 0.32089-0.87983 0.48047-1.8641 0.48047-2.9551s-0.15958-2.0772-0.48047-2.957c-0.32089-0.89743-0.77803-1.6536-1.3691-2.2695-0.59111-0.63348-1.3079-1.1188-2.1523-1.4531-0.82756-0.35193-1.7569-0.52734-2.7871-0.52734zm41.715 0c-0.912 0-1.7223 0.18516-2.4316 0.55469-0.69244 0.36953-1.2752 0.87043-1.748 1.5039-0.47289 0.61588-0.83651 1.337-1.0898 2.1641-0.23645 0.80944-0.35352 1.6553-0.35352 2.5352 0 0.93262 0.10007 1.8214 0.30273 2.666 0.21956 0.82704 0.55767 1.556 1.0137 2.1895 0.456 0.61588 1.0387 1.109 1.748 1.4785 0.70933 0.35193 1.5536 0.5293 2.5332 0.5293 0.79378 0 1.5446-0.16762 2.2539-0.50195 0.72622-0.35193 1.2834-0.88986 1.6719-1.6113h0.05078v1.7949c0.01689 0.96782-0.21071 1.7689-0.68359 2.4023-0.456 0.63348-1.1898 0.95117-2.2031 0.95117-0.64178 0-1.2075-0.14228-1.6973-0.42383-0.48978-0.26395-0.81939-0.74731-0.98828-1.4512h-3.5723c0.05067 0.77425 0.25276 1.435 0.60742 1.9805 0.37156 0.56309 0.8287 1.0192 1.3691 1.3711 0.55733 0.35193 1.1656 0.60726 1.8242 0.76562 0.67556 0.17597 1.3328 0.26562 1.9746 0.26562 1.5031 0 2.7025-0.21245 3.5977-0.63477 0.89511-0.42232 1.5798-0.94076 2.0527-1.5566 0.47289-0.59829 0.777-1.2493 0.91211-1.9531 0.152-0.70386 0.22656-1.3295 0.22656-1.875v-12.775h-3.4199v1.8223h-0.05078c-0.43911-0.79185-0.98782-1.3551-1.6465-1.6895-0.64178-0.33434-1.3926-0.50195-2.2539-0.50195zm16.523 0c-0.99644 0-1.9088 0.18516-2.7363 0.55469-0.81067 0.36953-1.5124 0.88018-2.1035 1.5312-0.59111 0.63348-1.0463 1.3897-1.3672 2.2695s-0.48047 1.831-0.48047 2.8516c0 1.0558 0.15108 2.0225 0.45508 2.9023 0.32089 0.87983 0.76758 1.6361 1.3418 2.2695 0.57422 0.63348 1.276 1.1266 2.1035 1.4785 0.82756 0.33434 1.7569 0.50195 2.7871 0.50195 1.4862 0 2.7517-0.35277 3.7988-1.0566 1.0471-0.70387 1.8254-1.8733 2.332-3.5098h-3.168c-0.11822 0.42232-0.43934 0.82772-0.96289 1.2148-0.52355 0.36953-1.1468 0.55274-1.873 0.55273-1.0133 0-1.7916-0.27286-2.332-0.81836-0.54044-0.5455-0.83605-1.4245-0.88672-2.6387h9.4492c0.06756-1.0558-0.01551-2.0673-0.25195-3.0352-0.23644-0.96782-0.62557-1.8293-1.166-2.5859-0.52356-0.75666-1.1998-1.355-2.0273-1.7949-0.82756-0.45751-1.7974-0.6875-2.9121-0.6875zm16.189 0c-0.76 0-1.5023 0.18516-2.2285 0.55469-0.72622 0.35193-1.3174 0.92299-1.7734 1.7148h-0.07617v-1.9004h-3.4199v13.646h3.5977v-7.1523c0-1.3901 0.21909-2.3841 0.6582-2.9824 0.43911-0.61588 1.1494-0.92383 2.1289-0.92383 0.86133 0 1.4611 0.28066 1.7988 0.84375 0.33777 0.5455 0.50586 1.3816 0.50586 2.5078v7.707h3.5976v-8.3926c0-0.84464-0.0765-1.6106-0.22851-2.2969-0.13511-0.70387-0.37971-1.2925-0.73438-1.7676-0.35466-0.49271-0.84386-0.87277-1.4688-1.1367-0.608-0.28155-1.3948-0.42188-2.3574-0.42188zm-66.063 0.36914 4.3066 6.4668-4.7129 7.1797h4.0293l2.7363-4.3027 2.7344 4.3027h4.1055l-4.8398-7.2578 4.3066-6.3887h-3.9766l-2.2793 3.5645-2.3066-3.5645zm13.275 0 4.584 12.803c0.10133 0.26395 0.15234 0.54461 0.15234 0.84375 0 0.40472-0.11707 0.77504-0.35352 1.1094-0.21956 0.33434-0.56617 0.52729-1.0391 0.58008-0.35467 0.0176-0.70979 0.0098-1.0645-0.02539-0.35467-0.03519-0.70128-0.07028-1.0391-0.10547v3.0879c0.37156 0.03519 0.73518 0.06051 1.0898 0.07813 0.37156 0.03519 0.74368 0.05273 1.1152 0.05273 1.2329 0 2.1943-0.23778 2.8867-0.71289 0.69244-0.47511 1.2326-1.2664 1.6211-2.375l5.4727-15.336h-3.7246l-2.8613 9.3438h-0.05078l-2.9648-9.3438zm-37.48 2.4551c0.59111 0 1.0823 0.12279 1.4707 0.36914 0.38844 0.24635 0.6991 0.57184 0.93555 0.97656 0.25333 0.38713 0.43187 0.84515 0.5332 1.373 0.10133 0.5103 0.15234 1.0482 0.15234 1.6113 0 0.56309-0.05101 1.1069-0.15234 1.6348-0.10133 0.5279-0.27137 1.0035-0.50781 1.4258-0.23644 0.40472-0.5556 0.73021-0.96094 0.97656-0.38844 0.24635-0.87959 0.36914-1.4707 0.36914-0.55733 0-1.038-0.12279-1.4434-0.36914-0.38844-0.26395-0.71806-0.59723-0.98828-1.002-0.25333-0.42232-0.43842-0.89788-0.55664-1.4258s-0.17773-1.0561-0.17773-1.584c-1e-7 -0.56309 0.05101-1.0991 0.15234-1.6094 0.11822-0.5279 0.29481-0.99567 0.53125-1.4004 0.25333-0.40472 0.58295-0.73021 0.98828-0.97656 0.40533-0.24635 0.90303-0.36914 1.4941-0.36914zm15.84 0c0.608 0 1.1142 0.13253 1.5195 0.39648 0.42222 0.24635 0.75184 0.57184 0.98828 0.97656 0.25333 0.40472 0.42992 0.87054 0.53125 1.3984 0.10133 0.5279 0.15234 1.0658 0.15234 1.6113 0 0.5455-0.05101 1.0815-0.15234 1.6094-0.10134 0.5103-0.27792 0.97612-0.53125 1.3984-0.23644 0.40472-0.56606 0.73021-0.98828 0.97656-0.40533 0.24635-0.91153 0.36914-1.5195 0.36914-0.608 0-1.1142-0.12279-1.5195-0.36914s-0.73495-0.57184-0.98828-0.97656c-0.23644-0.42232-0.40648-0.88814-0.50781-1.3984-0.10133-0.5279-0.15234-1.0639-0.15234-1.6094 0-0.5455 0.05101-1.0834 0.15234-1.6113 0.10133-0.5279 0.27137-0.99371 0.50781-1.3984 0.25333-0.40472 0.58295-0.73021 0.98828-0.97656 0.40533-0.26395 0.91153-0.39648 1.5195-0.39648zm42.602 0c0.59111 0 1.0803 0.11499 1.4688 0.34375 0.38844 0.22876 0.70105 0.5367 0.9375 0.92383 0.23644 0.38713 0.40648 0.8354 0.50781 1.3457 0.10133 0.49271 0.15039 1.0209 0.15039 1.584 0 0.4927-0.06606 0.96827-0.20117 1.4258-0.11822 0.43992-0.30526 0.83557-0.55859 1.1875-0.25333 0.35193-0.57445 0.63259-0.96289 0.84375-0.38844 0.21116-0.83513 0.31836-1.3418 0.31836-0.55733 0-1.021-0.12474-1.3926-0.37109-0.37156-0.24635-0.67566-0.56209-0.91211-0.94922-0.21956-0.38713-0.38109-0.81786-0.48242-1.293-0.08444-0.49271-0.12695-0.98581-0.12695-1.4785 0-0.5103 0.05101-0.99366 0.15234-1.4512 0.11822-0.47511 0.29676-0.89025 0.5332-1.2422 0.25333-0.36953 0.55744-0.65993 0.91211-0.87109 0.37156-0.21116 0.80974-0.31641 1.3164-0.31641zm15.535 0c0.87822 0 1.529 0.24753 1.9512 0.74023 0.43911 0.49271 0.74322 1.2138 0.91211 2.1641h-5.8535c0.01689-0.26395 0.0679-0.5641 0.15234-0.89844 0.10133-0.33434 0.26287-0.65008 0.48242-0.94922 0.23644-0.29914 0.54055-0.54667 0.91211-0.74023 0.38845-0.21116 0.86914-0.31641 1.4434-0.31641z" filter="url(#f)" opacity=".3" stroke="#969696" xlink:href="#path141"/>
<path d="m0.97202 24.161 43.605-0.0019 0.0508 3.3061-43.6 0.04174z" fill="url(#d)" stroke="#000" stroke-width=".5"/>
<path d="m10.283 3.5547v6.8633h-0.05078c-0.40533-0.66867-0.96254-1.1715-1.6719-1.5059-0.69244-0.35193-1.4282-0.52734-2.2051-0.52734-0.96267 0-1.807 0.2027-2.5332 0.60742-0.72622 0.38713-1.3344 0.90556-1.8242 1.5566-0.47289 0.65108-0.83456 1.4092-1.0879 2.2715-0.23644 0.84464-0.35547 1.7236-0.35547 2.6387 0 0.95022 0.11902 1.8643 0.35547 2.7441 0.25333 0.87983 0.615 1.6633 1.0879 2.3496 0.48978 0.66867 1.1065 1.2066 1.8496 1.6113 0.74311 0.38713 1.6044 0.58008 2.584 0.58008 0.86133 0 1.6311-0.15787 2.3066-0.47461 0.69244-0.33434 1.2497-0.87227 1.6719-1.6113h0.05078v1.7422h3.4199v-18.846zm12.875 4.8301c-1.0302 0-1.9596 0.17541-2.7871 0.52734-0.82756 0.33434-1.5358 0.81965-2.127 1.4531-0.59111 0.61588-1.0483 1.3721-1.3691 2.2695-0.32089 0.87983-0.48047 1.866-0.48047 2.957s0.15958 2.0752 0.48047 2.9551c0.32089 0.87983 0.77803 1.6361 1.3691 2.2695 0.59111 0.61588 1.2994 1.0914 2.127 1.4258 0.82756 0.33434 1.7569 0.50195 2.7871 0.50195 1.0302 0 1.9596-0.16762 2.7871-0.50195 0.84444-0.33434 1.5612-0.8099 2.1523-1.4258 0.59111-0.63348 1.0483-1.3897 1.3691-2.2695 0.32089-0.87983 0.48047-1.8641 0.48047-2.9551s-0.15958-2.0772-0.48047-2.957c-0.32089-0.89743-0.77803-1.6536-1.3691-2.2695-0.59111-0.63348-1.3079-1.1188-2.1523-1.4531-0.82756-0.35193-1.7569-0.52734-2.7871-0.52734zm41.715 0c-0.912 0-1.7223 0.18516-2.4316 0.55469-0.69244 0.36953-1.2752 0.87043-1.748 1.5039-0.47289 0.61588-0.83651 1.337-1.0898 2.1641-0.23644 0.80944-0.35352 1.6553-0.35352 2.5352 0 0.93262 0.10007 1.8214 0.30273 2.666 0.21956 0.82704 0.55767 1.556 1.0137 2.1895 0.456 0.61588 1.0387 1.109 1.748 1.4785 0.70933 0.35193 1.5536 0.5293 2.5332 0.5293 0.79378 0 1.5446-0.16762 2.2539-0.50195 0.72622-0.35193 1.2834-0.88986 1.6719-1.6113h0.05078v1.7949c0.01689 0.96782-0.21071 1.7689-0.68359 2.4023-0.456 0.63348-1.1898 0.95117-2.2031 0.95117-0.64178 0-1.2075-0.14228-1.6973-0.42383-0.48978-0.26395-0.81939-0.74731-0.98828-1.4512h-3.5723c0.05067 0.77425 0.25276 1.435 0.60742 1.9805 0.37156 0.56309 0.8287 1.0192 1.3691 1.3711 0.55733 0.35193 1.1656 0.60726 1.8242 0.76562 0.67556 0.17597 1.3328 0.26562 1.9746 0.26562 1.5031 0 2.7025-0.21245 3.5977-0.63477 0.89511-0.42232 1.5798-0.94076 2.0527-1.5566 0.47289-0.59829 0.777-1.2493 0.91211-1.9531 0.152-0.70386 0.22656-1.3295 0.22656-1.875v-12.775h-3.4199v1.8223h-0.05078c-0.43911-0.79185-0.98782-1.3551-1.6465-1.6895-0.64178-0.33434-1.3926-0.50195-2.2539-0.50195zm16.523 0c-0.99644 0-1.9088 0.18516-2.7363 0.55469-0.81067 0.36953-1.5124 0.88017-2.1035 1.5312-0.59111 0.63348-1.0463 1.3897-1.3672 2.2695s-0.48047 1.831-0.48047 2.8516c0 1.0558 0.15108 2.0225 0.45508 2.9023 0.32089 0.87983 0.76758 1.6361 1.3418 2.2695 0.57422 0.63348 1.276 1.1266 2.1035 1.4785 0.82756 0.33434 1.7569 0.50195 2.7871 0.50195 1.4862 0 2.7517-0.35278 3.7988-1.0566 1.0471-0.70386 1.8254-1.8733 2.332-3.5098h-3.168c-0.11822 0.42232-0.43934 0.82772-0.96289 1.2148-0.52355 0.36953-1.1468 0.55274-1.873 0.55273-1.0133 0-1.7916-0.27286-2.332-0.81836-0.54044-0.5455-0.83605-1.4245-0.88672-2.6387h9.4492c0.06756-1.0558-0.01551-2.0673-0.25195-3.0352-0.23644-0.96782-0.62557-1.8293-1.166-2.5859-0.52356-0.75666-1.1998-1.355-2.0273-1.7949-0.82756-0.45751-1.7974-0.6875-2.9121-0.6875zm16.189 0c-0.76 0-1.5023 0.18516-2.2285 0.55469-0.72622 0.35193-1.3174 0.923-1.7734 1.7148h-0.07617v-1.9004h-3.4199v13.646h3.5977v-7.1523c0-1.3901 0.21909-2.3841 0.6582-2.9824 0.43911-0.61588 1.1494-0.92383 2.1289-0.92383 0.86133 0 1.461 0.28066 1.7988 0.84375 0.33778 0.5455 0.50586 1.3816 0.50586 2.5078v7.707h3.5977v-8.3926c0-0.84464-0.0765-1.6106-0.22852-2.2969-0.13511-0.70387-0.3797-1.2925-0.73437-1.7676-0.35466-0.49271-0.84386-0.87277-1.4688-1.1367-0.608-0.28155-1.3948-0.42188-2.3574-0.42188zm-66.062 0.36914 4.3066 6.4668-4.7129 7.1797h4.0293l2.7363-4.3027 2.7344 4.3027h4.1055l-4.8398-7.2578 4.3066-6.3887h-3.9766l-2.2793 3.5645-2.3066-3.5645zm13.275 0 4.584 12.803c0.10133 0.26395 0.15234 0.54461 0.15234 0.84375 0 0.40472-0.11707 0.77504-0.35352 1.1094-0.21956 0.33434-0.56617 0.52729-1.0391 0.58008-0.35467 0.0176-0.70979 0.0098-1.0645-0.02539-0.35467-0.03519-0.70128-0.07027-1.0391-0.10547v3.0879c0.37156 0.03519 0.73518 0.06052 1.0898 0.07813 0.37156 0.03519 0.74368 0.05273 1.1152 0.05273 1.2329 0 2.1943-0.23778 2.8867-0.71289 0.69244-0.47511 1.2326-1.2664 1.6211-2.375l5.4727-15.336h-3.7246l-2.8613 9.3437h-0.05078l-2.9648-9.3437zm-37.48 2.4551c0.59111 0 1.0823 0.12279 1.4707 0.36914s0.6991 0.57184 0.93555 0.97656c0.25333 0.38713 0.43187 0.84515 0.5332 1.373 0.10133 0.5103 0.15234 1.0482 0.15234 1.6113 0 0.56309-0.05101 1.1069-0.15234 1.6348-0.10133 0.5279-0.27137 1.0035-0.50781 1.4258-0.23644 0.40472-0.5556 0.73021-0.96094 0.97656-0.38844 0.24635-0.87959 0.36914-1.4707 0.36914-0.55733 0-1.038-0.12279-1.4434-0.36914-0.38844-0.26395-0.71806-0.59723-0.98828-1.002-0.25333-0.42232-0.43842-0.89788-0.55664-1.4258s-0.17773-1.0561-0.17773-1.584c-1e-7 -0.56309 0.05101-1.0991 0.15234-1.6094 0.11822-0.5279 0.29481-0.99567 0.53125-1.4004 0.25333-0.40472 0.58295-0.73021 0.98828-0.97656 0.40533-0.24635 0.90303-0.36914 1.4941-0.36914zm15.84 0c0.608 0 1.1142 0.13254 1.5195 0.39648 0.42222 0.24635 0.75184 0.57184 0.98828 0.97656 0.25333 0.40472 0.42992 0.87054 0.53125 1.3984 0.10133 0.5279 0.15234 1.0658 0.15234 1.6113 0 0.5455-0.05101 1.0815-0.15234 1.6094-0.10133 0.5103-0.27792 0.97612-0.53125 1.3984-0.23644 0.40472-0.56606 0.73021-0.98828 0.97656-0.40533 0.24635-0.91153 0.36914-1.5195 0.36914-0.608 0-1.1142-0.12279-1.5195-0.36914s-0.73495-0.57184-0.98828-0.97656c-0.23644-0.42232-0.40648-0.88813-0.50781-1.3984-0.10133-0.5279-0.15234-1.0639-0.15234-1.6094 0-0.5455 0.05101-1.0834 0.15234-1.6113 0.10133-0.5279 0.27137-0.99371 0.50781-1.3984 0.25333-0.40472 0.58295-0.73021 0.98828-0.97656 0.40533-0.26395 0.91153-0.39648 1.5195-0.39648zm42.602 0c0.59111 0 1.0803 0.11499 1.4688 0.34375 0.38844 0.22876 0.70106 0.5367 0.9375 0.92383 0.23644 0.38713 0.40648 0.8354 0.50781 1.3457 0.10133 0.49271 0.15039 1.0209 0.15039 1.584 0 0.49271-0.06606 0.96827-0.20117 1.4258-0.11822 0.43992-0.30526 0.83557-0.55859 1.1875-0.25333 0.35193-0.57445 0.63259-0.96289 0.84375-0.38844 0.21116-0.83513 0.31836-1.3418 0.31836-0.55733 0-1.021-0.12474-1.3926-0.37109-0.37156-0.24635-0.67566-0.56209-0.91211-0.94922-0.21956-0.38713-0.38109-0.81786-0.48242-1.293-0.08444-0.49271-0.12695-0.98581-0.12695-1.4785 0-0.5103 0.05101-0.99366 0.15234-1.4512 0.11822-0.47511 0.29676-0.89026 0.5332-1.2422 0.25333-0.36953 0.55744-0.65993 0.91211-0.87109 0.37156-0.21116 0.80974-0.31641 1.3164-0.31641zm15.535 0c0.87822 0 1.529 0.24753 1.9512 0.74024 0.43911 0.49271 0.74322 1.2138 0.91211 2.1641h-5.8535c0.01689-0.26395 0.0679-0.5641 0.15234-0.89844 0.10133-0.33434 0.26287-0.65008 0.48242-0.94922 0.23644-0.29914 0.54055-0.54667 0.91211-0.74023 0.38845-0.21116 0.86914-0.31641 1.4434-0.31641z" fill="url(#e)" stroke="#4665A2" stroke-width=".7"/>
<path d="m52.988 27.291c0.99602-1.0359 1.3944-1.8725 1.7928-3.1076l3.8247-0.03984c0.3113 1.6096 0.82413 2.5137 1.6335 3.1474z" fill="url(#b)" stroke="#000" stroke-width=".5"/>
<path d="m73.89 24.04 28.885-0.2011-0.12476 3.3879-31.033 0.16229c1.2621-1.0234 1.9665-2.2859 2.2724-3.3491z" fill="url(#c)" stroke="#000" stroke-width=".41788"/>
</g>
</svg>
/*
@licstart The following is the entire license notice for the JavaScript code in this file.
The MIT License (MIT)
Copyright (C) 1997-2020 by Dimitri van Heesch
Permission is hereby granted, free of charge, to any person obtaining a copy of this software
and associated documentation files (the "Software"), to deal in the Software without restriction,
including without limitation the rights to use, copy, modify, merge, publish, distribute,
sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or
substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@licend The above is the entire license notice for the JavaScript code in this file
*/
function toggleVisibility(linkObj)
{
var base = $(linkObj).attr('id');
var summary = $('#'+base+'-summary');
var content = $('#'+base+'-content');
var trigger = $('#'+base+'-trigger');
var src=$(trigger).attr('src');
if (content.is(':visible')===true) {
content.hide();
summary.show();
$(linkObj).addClass('closed').removeClass('opened');
$(trigger).attr('src',src.substring(0,src.length-8)+'closed.png');
} else {
content.show();
summary.hide();
$(linkObj).removeClass('closed').addClass('opened');
$(trigger).attr('src',src.substring(0,src.length-10)+'open.png');
}
return false;
}
function updateStripes()
{
$('table.directory tr').
removeClass('even').filter(':visible:even').addClass('even');
}
function toggleLevel(level)
{
$('table.directory tr').each(function() {
var l = this.id.split('_').length-1;
var i = $('#img'+this.id.substring(3));
var a = $('#arr'+this.id.substring(3));
if (l<level+1) {
i.removeClass('iconfopen iconfclosed').addClass('iconfopen');
a.html('&#9660;');
$(this).show();
} else if (l==level+1) {
i.removeClass('iconfclosed iconfopen').addClass('iconfclosed');
a.html('&#9658;');
$(this).show();
} else {
$(this).hide();
}
});
updateStripes();
}
function toggleFolder(id)
{
// the clicked row
var currentRow = $('#row_'+id);
// all rows after the clicked row
var rows = currentRow.nextAll("tr");
var re = new RegExp('^row_'+id+'\\d+_$', "i"); //only one sub
// only match elements AFTER this one (can't hide elements before)
var childRows = rows.filter(function() { return this.id.match(re); });
// first row is visible we are HIDING
if (childRows.filter(':first').is(':visible')===true) {
// replace down arrow by right arrow for current row
var currentRowSpans = currentRow.find("span");
currentRowSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed");
currentRowSpans.filter(".arrow").html('&#9658;');
rows.filter("[id^=row_"+id+"]").hide(); // hide all children
} else { // we are SHOWING
// replace right arrow by down arrow for current row
var currentRowSpans = currentRow.find("span");
currentRowSpans.filter(".iconfclosed").removeClass("iconfclosed").addClass("iconfopen");
currentRowSpans.filter(".arrow").html('&#9660;');
// replace down arrows by right arrows for child rows
var childRowsSpans = childRows.find("span");
childRowsSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed");
childRowsSpans.filter(".arrow").html('&#9658;');
childRows.show(); //show all children
}
updateStripes();
}
function toggleInherit(id)
{
var rows = $('tr.inherit.'+id);
var img = $('tr.inherit_header.'+id+' img');
var src = $(img).attr('src');
if (rows.filter(':first').is(':visible')===true) {
rows.css('display','none');
$(img).attr('src',src.substring(0,src.length-8)+'closed.png');
} else {
rows.css('display','table-row'); // using show() causes jump in firefox
$(img).attr('src',src.substring(0,src.length-10)+'open.png');
}
}
/* @license-end */
This source diff could not be displayed because it is too large. You can view the blob instead.
/*
@licstart The following is the entire license notice for the JavaScript code in this file.
The MIT License (MIT)
Copyright (C) 1997-2020 by Dimitri van Heesch
Permission is hereby granted, free of charge, to any person obtaining a copy of this software
and associated documentation files (the "Software"), to deal in the Software without restriction,
including without limitation the rights to use, copy, modify, merge, publish, distribute,
sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or
substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@licend The above is the entire license notice for the JavaScript code in this file
*/
function initMenu(relPath,searchEnabled,serverSide,searchPage,search) {
function makeTree(data,relPath) {
var result='';
if ('children' in data) {
result+='<ul>';
for (var i in data.children) {
result+='<li><a href="'+relPath+data.children[i].url+'">'+
data.children[i].text+'</a>'+
makeTree(data.children[i],relPath)+'</li>';
}
result+='</ul>';
}
return result;
}
$('#main-nav').append(makeTree(menudata,relPath));
$('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu');
if (searchEnabled) {
if (serverSide) {
$('#main-menu').append('<li style="float:right"><div id="MSearchBox" class="MSearchBoxInactive"><div class="left"><form id="FSearchBox" action="'+relPath+searchPage+'" method="get"><img id="MSearchSelect" src="'+relPath+'search/mag.svg" alt=""/><input type="text" id="MSearchField" name="query" value="'+search+'" size="20" accesskey="S" onfocus="searchBox.OnSearchFieldFocus(true)" onblur="searchBox.OnSearchFieldFocus(false)"></form></div><div class="right"></div></div></li>');
} else {
$('#main-menu').append('<li style="float:right"><div id="MSearchBox" class="MSearchBoxInactive"><span class="left"><img id="MSearchSelect" src="'+relPath+'search/mag_sel.svg" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" alt=""/><input type="text" id="MSearchField" value="'+search+'" accesskey="S" onfocus="searchBox.OnSearchFieldFocus(true)" onblur="searchBox.OnSearchFieldFocus(false)" onkeyup="searchBox.OnSearchFieldChange(event)"/></span><span class="right"><a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="'+relPath+'search/close.svg" alt=""/></a></span></div></li>');
}
}
$('#main-menu').smartmenus();
}
/* @license-end */
/*
@licstart The following is the entire license notice for the JavaScript code in this file.
The MIT License (MIT)
Copyright (C) 1997-2020 by Dimitri van Heesch
Permission is hereby granted, free of charge, to any person obtaining a copy of this software
and associated documentation files (the "Software"), to deal in the Software without restriction,
including without limitation the rights to use, copy, modify, merge, publish, distribute,
sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or
substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@licend The above is the entire license notice for the JavaScript code in this file
*/
var menudata={children:[
{text:"Main Page",url:"index.html"}]}
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 11 11"
height="11"
width="11"
id="svg2"
version="1.1">
<metadata
id="metadata8">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6" />
<path
id="path12"
d="M 5.5 0.5 A 5 5 0 0 0 0.5 5.5 A 5 5 0 0 0 5.5 10.5 A 5 5 0 0 0 10.5 5.5 A 5 5 0 0 0 5.5 0.5 z M 3.5820312 3 A 0.58291923 0.58291923 0 0 1 4 3.1757812 L 5.5 4.6757812 L 7 3.1757812 A 0.58291923 0.58291923 0 0 1 7.4003906 3 A 0.58291923 0.58291923 0 0 1 7.8242188 4 L 6.3242188 5.5 L 7.8242188 7 A 0.58291923 0.58291923 0 1 1 7 7.8242188 L 5.5 6.3242188 L 4 7.8242188 A 0.58291923 0.58291923 0 1 1 3.1757812 7 L 4.6757812 5.5 L 3.1757812 4 A 0.58291923 0.58291923 0 0 1 3.5820312 3 z "
style="stroke-width:1.09870648;fill:#bababa;fill-opacity:1" />
</svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg2"
width="20"
height="19"
viewBox="0 0 20 19"
sodipodi:docname="mag_sel.svg"
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)">
<metadata
id="metadata8">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="2096"
id="namedview4"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:zoom="32"
inkscape:cx="5.9792688"
inkscape:cy="1.1436277"
inkscape:window-x="1920"
inkscape:window-y="27"
inkscape:window-maximized="0"
inkscape:current-layer="svg2" />
<circle
style="fill:#000000;fill-opacity:0;stroke:#656565;stroke-width:1.4;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
id="path4611"
cx="5.5"
cy="8.5"
r="3.5" />
<path
style="fill:#656565;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 11,7 13.5,10 16,7 Z"
id="path4609"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccc" />
<path
style="fill:none;stroke:#656565;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 8.1085854,11.109059 2.7823556,2.782356"
id="path4630"
inkscape:connector-curvature="0" />
</svg>
/*---------------- Search Box */
#MSearchBox {
white-space : nowrap;
background: white;
border-radius: 0.65em;
box-shadow: inset 0.5px 0.5px 3px 0px #555;
z-index: 102;
}
#MSearchBox .left {
display: inline-block;
vertical-align: middle;
height: 1.4em;
}
#MSearchSelect {
display: inline-block;
vertical-align: middle;
height: 1.4em;
padding: 0 0 0 0.3em;
margin: 0;
}
#MSearchField {
display: inline-block;
vertical-align: middle;
width: 7.5em;
height: 1.1em;
margin: 0 0.15em;
padding: 0;
line-height: 1em;
border:none;
color: #909090;
outline: none;
font-family: Arial, Verdana, sans-serif;
-webkit-border-radius: 0px;
border-radius: 0px;
background: none;
}
#MSearchBox .right {
display: inline-block;
vertical-align: middle;
width: 1.4em;
height: 1.4em;
}
#MSearchClose {
display: none;
font-size: inherit;
background : none;
border: none;
margin: 0;
padding: 0;
outline: none;
}
#MSearchCloseImg {
height: 1.4em;
padding: 0.3em;
margin: 0;
}
.MSearchBoxActive #MSearchField {
color: #000000;
}
#main-menu > li:last-child {
/* This <li> object is the parent of the search bar */
display: flex;
justify-content: center;
align-items: center;
height: 36px;
margin-right: 1em;
}
/*---------------- Search filter selection */
#MSearchSelectWindow {
display: none;
position: absolute;
left: 0; top: 0;
border: 1px solid #90A5CE;
background-color: #F9FAFC;
z-index: 10001;
padding-top: 4px;
padding-bottom: 4px;
-moz-border-radius: 4px;
-webkit-border-top-left-radius: 4px;
-webkit-border-top-right-radius: 4px;
-webkit-border-bottom-left-radius: 4px;
-webkit-border-bottom-right-radius: 4px;
-webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
}
.SelectItem {
font: 8pt Arial, Verdana, sans-serif;
padding-left: 2px;
padding-right: 12px;
border: 0px;
}
span.SelectionMark {
margin-right: 4px;
font-family: monospace;
outline-style: none;
text-decoration: none;
}
a.SelectItem {
display: block;
outline-style: none;
color: #000000;
text-decoration: none;
padding-left: 6px;
padding-right: 12px;
}
a.SelectItem:focus,
a.SelectItem:active {
color: #000000;
outline-style: none;
text-decoration: none;
}
a.SelectItem:hover {
color: #FFFFFF;
background-color: #3D578C;
outline-style: none;
text-decoration: none;
cursor: pointer;
display: block;
}
/*---------------- Search results window */
iframe#MSearchResults {
width: 60ex;
height: 15em;
}
#MSearchResultsWindow {
display: none;
position: absolute;
left: 0; top: 0;
border: 1px solid #000;
background-color: #EEF1F7;
z-index:10000;
}
/* ----------------------------------- */
#SRIndex {
clear:both;
padding-bottom: 15px;
}
.SREntry {
font-size: 10pt;
padding-left: 1ex;
}
.SRPage .SREntry {
font-size: 8pt;
padding: 1px 5px;
}
body.SRPage {
margin: 5px 2px;
}
.SRChildren {
padding-left: 3ex; padding-bottom: .5em
}
.SRPage .SRChildren {
display: none;
}
.SRSymbol {
font-weight: bold;
color: #425E97;
font-family: Arial, Verdana, sans-serif;
text-decoration: none;
outline: none;
}
a.SRScope {
display: block;
color: #425E97;
font-family: Arial, Verdana, sans-serif;
text-decoration: none;
outline: none;
}
a.SRSymbol:focus, a.SRSymbol:active,
a.SRScope:focus, a.SRScope:active {
text-decoration: underline;
}
span.SRScope {
padding-left: 4px;
}
.SRPage .SRStatus {
padding: 2px 5px;
font-size: 8pt;
font-style: italic;
}
.SRResult {
display: none;
}
DIV.searchresults {
margin-left: 10px;
margin-right: 10px;
}
/*---------------- External search page results */
.searchresult {
background-color: #F0F3F8;
}
.pages b {
color: white;
padding: 5px 5px 3px 5px;
background-image: url("../tab_a.png");
background-repeat: repeat-x;
text-shadow: 0 1px 1px #000000;
}
.pages {
line-height: 17px;
margin-left: 4px;
text-decoration: none;
}
.hl {
font-weight: bold;
}
#searchresults {
margin-bottom: 20px;
}
.searchpages {
margin-top: 10px;
}
/*
@licstart The following is the entire license notice for the JavaScript code in this file.
The MIT License (MIT)
Copyright (C) 1997-2020 by Dimitri van Heesch
Permission is hereby granted, free of charge, to any person obtaining a copy of this software
and associated documentation files (the "Software"), to deal in the Software without restriction,
including without limitation the rights to use, copy, modify, merge, publish, distribute,
sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or
substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@licend The above is the entire license notice for the JavaScript code in this file
*/
function convertToId(search)
{
var result = '';
for (i=0;i<search.length;i++)
{
var c = search.charAt(i);
var cn = c.charCodeAt(0);
if (c.match(/[a-z0-9\u0080-\uFFFF]/))
{
result+=c;
}
else if (cn<16)
{
result+="_0"+cn.toString(16);
}
else
{
result+="_"+cn.toString(16);
}
}
return result;
}
function getXPos(item)
{
var x = 0;
if (item.offsetWidth)
{
while (item && item!=document.body)
{
x += item.offsetLeft;
item = item.offsetParent;
}
}
return x;
}
function getYPos(item)
{
var y = 0;
if (item.offsetWidth)
{
while (item && item!=document.body)
{
y += item.offsetTop;
item = item.offsetParent;
}
}
return y;
}
/* A class handling everything associated with the search panel.
Parameters:
name - The name of the global variable that will be
storing this instance. Is needed to be able to set timeouts.
resultPath - path to use for external files
*/
function SearchBox(name, resultsPath, inFrame, label, extension)
{
if (!name || !resultsPath) { alert("Missing parameters to SearchBox."); }
if (!extension || extension == "") { extension = ".html"; }
// ---------- Instance variables
this.name = name;
this.resultsPath = resultsPath;
this.keyTimeout = 0;
this.keyTimeoutLength = 500;
this.closeSelectionTimeout = 300;
this.lastSearchValue = "";
this.lastResultsPage = "";
this.hideTimeout = 0;
this.searchIndex = 0;
this.searchActive = false;
this.insideFrame = inFrame;
this.searchLabel = label;
this.extension = extension;
// ----------- DOM Elements
this.DOMSearchField = function()
{ return document.getElementById("MSearchField"); }
this.DOMSearchSelect = function()
{ return document.getElementById("MSearchSelect"); }
this.DOMSearchSelectWindow = function()
{ return document.getElementById("MSearchSelectWindow"); }
this.DOMPopupSearchResults = function()
{ return document.getElementById("MSearchResults"); }
this.DOMPopupSearchResultsWindow = function()
{ return document.getElementById("MSearchResultsWindow"); }
this.DOMSearchClose = function()
{ return document.getElementById("MSearchClose"); }
this.DOMSearchBox = function()
{ return document.getElementById("MSearchBox"); }
// ------------ Event Handlers
// Called when focus is added or removed from the search field.
this.OnSearchFieldFocus = function(isActive)
{
this.Activate(isActive);
}
this.OnSearchSelectShow = function()
{
var searchSelectWindow = this.DOMSearchSelectWindow();
var searchField = this.DOMSearchSelect();
if (this.insideFrame)
{
var left = getXPos(searchField);
var top = getYPos(searchField);
left += searchField.offsetWidth + 6;
top += searchField.offsetHeight;
// show search selection popup
searchSelectWindow.style.display='block';
left -= searchSelectWindow.offsetWidth;
searchSelectWindow.style.left = left + 'px';
searchSelectWindow.style.top = top + 'px';
}
else
{
var left = getXPos(searchField);
var top = getYPos(searchField);
top += searchField.offsetHeight;
// show search selection popup
searchSelectWindow.style.display='block';
searchSelectWindow.style.left = left + 'px';
searchSelectWindow.style.top = top + 'px';
}
// stop selection hide timer
if (this.hideTimeout)
{
clearTimeout(this.hideTimeout);
this.hideTimeout=0;
}
return false; // to avoid "image drag" default event
}
this.OnSearchSelectHide = function()
{
this.hideTimeout = setTimeout(this.name +".CloseSelectionWindow()",
this.closeSelectionTimeout);
}
// Called when the content of the search field is changed.
this.OnSearchFieldChange = function(evt)
{
if (this.keyTimeout) // kill running timer
{
clearTimeout(this.keyTimeout);
this.keyTimeout = 0;
}
var e = (evt) ? evt : window.event; // for IE
if (e.keyCode==40 || e.keyCode==13)
{
if (e.shiftKey==1)
{
this.OnSearchSelectShow();
var win=this.DOMSearchSelectWindow();
for (i=0;i<win.childNodes.length;i++)
{
var child = win.childNodes[i]; // get span within a
if (child.className=='SelectItem')
{
child.focus();
return;
}
}
return;
}
else
{
window.frames.MSearchResults.postMessage("take_focus", "*");
}
}
else if (e.keyCode==27) // Escape out of the search field
{
this.DOMSearchField().blur();
this.DOMPopupSearchResultsWindow().style.display = 'none';
this.DOMSearchClose().style.display = 'none';
this.lastSearchValue = '';
this.Activate(false);
return;
}
// strip whitespaces
var searchValue = this.DOMSearchField().value.replace(/ +/g, "");
if (searchValue != this.lastSearchValue) // search value has changed
{
if (searchValue != "") // non-empty search
{
// set timer for search update
this.keyTimeout = setTimeout(this.name + '.Search()',
this.keyTimeoutLength);
}
else // empty search field
{
this.DOMPopupSearchResultsWindow().style.display = 'none';
this.DOMSearchClose().style.display = 'none';
this.lastSearchValue = '';
}
}
}
this.SelectItemCount = function(id)
{
var count=0;
var win=this.DOMSearchSelectWindow();
for (i=0;i<win.childNodes.length;i++)
{
var child = win.childNodes[i]; // get span within a
if (child.className=='SelectItem')
{
count++;
}
}
return count;
}
this.SelectItemSet = function(id)
{
var i,j=0;
var win=this.DOMSearchSelectWindow();
for (i=0;i<win.childNodes.length;i++)
{
var child = win.childNodes[i]; // get span within a
if (child.className=='SelectItem')
{
var node = child.firstChild;
if (j==id)
{
node.innerHTML='&#8226;';
}
else
{
node.innerHTML='&#160;';
}
j++;
}
}
}
// Called when an search filter selection is made.
// set item with index id as the active item
this.OnSelectItem = function(id)
{
this.searchIndex = id;
this.SelectItemSet(id);
var searchValue = this.DOMSearchField().value.replace(/ +/g, "");
if (searchValue!="" && this.searchActive) // something was found -> do a search
{
this.Search();
}
}
this.OnSearchSelectKey = function(evt)
{
var e = (evt) ? evt : window.event; // for IE
if (e.keyCode==40 && this.searchIndex<this.SelectItemCount()) // Down
{
this.searchIndex++;
this.OnSelectItem(this.searchIndex);
}
else if (e.keyCode==38 && this.searchIndex>0) // Up
{
this.searchIndex--;
this.OnSelectItem(this.searchIndex);
}
else if (e.keyCode==13 || e.keyCode==27)
{
this.OnSelectItem(this.searchIndex);
this.CloseSelectionWindow();
this.DOMSearchField().focus();
}
return false;
}
// --------- Actions
// Closes the results window.
this.CloseResultsWindow = function()
{
this.DOMPopupSearchResultsWindow().style.display = 'none';
this.DOMSearchClose().style.display = 'none';
this.Activate(false);
}
this.CloseSelectionWindow = function()
{
this.DOMSearchSelectWindow().style.display = 'none';
}
// Performs a search.
this.Search = function()
{
this.keyTimeout = 0;
// strip leading whitespace
var searchValue = this.DOMSearchField().value.replace(/^ +/, "");
var code = searchValue.toLowerCase().charCodeAt(0);
var idxChar = searchValue.substr(0, 1).toLowerCase();
if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair
{
idxChar = searchValue.substr(0, 2);
}
var resultsPage;
var resultsPageWithSearch;
var hasResultsPage;
var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar);
if (idx!=-1)
{
var hexCode=idx.toString(16);
resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + this.extension;
resultsPageWithSearch = resultsPage+'?'+escape(searchValue);
hasResultsPage = true;
}
else // nothing available for this search term
{
resultsPage = this.resultsPath + '/nomatches' + this.extension;
resultsPageWithSearch = resultsPage;
hasResultsPage = false;
}
window.frames.MSearchResults.location = resultsPageWithSearch;
var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow();
if (domPopupSearchResultsWindow.style.display!='block')
{
var domSearchBox = this.DOMSearchBox();
this.DOMSearchClose().style.display = 'inline-block';
if (this.insideFrame)
{
var domPopupSearchResults = this.DOMPopupSearchResults();
domPopupSearchResultsWindow.style.position = 'relative';
domPopupSearchResultsWindow.style.display = 'block';
var width = document.body.clientWidth - 8; // the -8 is for IE :-(
domPopupSearchResultsWindow.style.width = width + 'px';
domPopupSearchResults.style.width = width + 'px';
}
else
{
var domPopupSearchResults = this.DOMPopupSearchResults();
var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth;
var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1;
domPopupSearchResultsWindow.style.display = 'block';
left -= domPopupSearchResults.offsetWidth;
domPopupSearchResultsWindow.style.top = top + 'px';
domPopupSearchResultsWindow.style.left = left + 'px';
}
}
this.lastSearchValue = searchValue;
this.lastResultsPage = resultsPage;
}
// -------- Activation Functions
// Activates or deactivates the search panel, resetting things to
// their default values if necessary.
this.Activate = function(isActive)
{
if (isActive || // open it
this.DOMPopupSearchResultsWindow().style.display == 'block'
)
{
this.DOMSearchBox().className = 'MSearchBoxActive';
var searchField = this.DOMSearchField();
if (searchField.value == this.searchLabel) // clear "Search" term upon entry
{
searchField.value = '';
this.searchActive = true;
}
}
else if (!isActive) // directly remove the panel
{
this.DOMSearchBox().className = 'MSearchBoxInactive';
this.DOMSearchField().value = this.searchLabel;
this.searchActive = false;
this.lastSearchValue = ''
this.lastResultsPage = '';
}
}
}
// -----------------------------------------------------------------------
// The class that handles everything on the search results page.
function SearchResults(name)
{
// The number of matches from the last run of <Search()>.
this.lastMatchCount = 0;
this.lastKey = 0;
this.repeatOn = false;
// Toggles the visibility of the passed element ID.
this.FindChildElement = function(id)
{
var parentElement = document.getElementById(id);
var element = parentElement.firstChild;
while (element && element!=parentElement)
{
if (element.nodeName == 'DIV' && element.className == 'SRChildren')
{
return element;
}
if (element.nodeName == 'DIV' && element.hasChildNodes())
{
element = element.firstChild;
}
else if (element.nextSibling)
{
element = element.nextSibling;
}
else
{
do
{
element = element.parentNode;
}
while (element && element!=parentElement && !element.nextSibling);
if (element && element!=parentElement)
{
element = element.nextSibling;
}
}
}
}
this.Toggle = function(id)
{
var element = this.FindChildElement(id);
if (element)
{
if (element.style.display == 'block')
{
element.style.display = 'none';
}
else
{
element.style.display = 'block';
}
}
}
// Searches for the passed string. If there is no parameter,
// it takes it from the URL query.
//
// Always returns true, since other documents may try to call it
// and that may or may not be possible.
this.Search = function(search)
{
if (!search) // get search word from URL
{
search = window.location.search;
search = search.substring(1); // Remove the leading '?'
search = unescape(search);
}
search = search.replace(/^ +/, ""); // strip leading spaces
search = search.replace(/ +$/, ""); // strip trailing spaces
search = search.toLowerCase();
search = convertToId(search);
var resultRows = document.getElementsByTagName("div");
var matches = 0;
var i = 0;
while (i < resultRows.length)
{
var row = resultRows.item(i);
if (row.className == "SRResult")
{
var rowMatchName = row.id.toLowerCase();
rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_'
if (search.length<=rowMatchName.length &&
rowMatchName.substr(0, search.length)==search)
{
row.style.display = 'block';
matches++;
}
else
{
row.style.display = 'none';
}
}
i++;
}
document.getElementById("Searching").style.display='none';
if (matches == 0) // no results
{
document.getElementById("NoMatches").style.display='block';
}
else // at least one result
{
document.getElementById("NoMatches").style.display='none';
}
this.lastMatchCount = matches;
return true;
}
// return the first item with index index or higher that is visible
this.NavNext = function(index)
{
var focusItem;
while (1)
{
var focusName = 'Item'+index;
focusItem = document.getElementById(focusName);
if (focusItem && focusItem.parentNode.parentNode.style.display=='block')
{
break;
}
else if (!focusItem) // last element
{
break;
}
focusItem=null;
index++;
}
return focusItem;
}
this.NavPrev = function(index)
{
var focusItem;
while (1)
{
var focusName = 'Item'+index;
focusItem = document.getElementById(focusName);
if (focusItem && focusItem.parentNode.parentNode.style.display=='block')
{
break;
}
else if (!focusItem) // last element
{
break;
}
focusItem=null;
index--;
}
return focusItem;
}
this.ProcessKeys = function(e)
{
if (e.type == "keydown")
{
this.repeatOn = false;
this.lastKey = e.keyCode;
}
else if (e.type == "keypress")
{
if (!this.repeatOn)
{
if (this.lastKey) this.repeatOn = true;
return false; // ignore first keypress after keydown
}
}
else if (e.type == "keyup")
{
this.lastKey = 0;
this.repeatOn = false;
}
return this.lastKey!=0;
}
this.Nav = function(evt,itemIndex)
{
var e = (evt) ? evt : window.event; // for IE
if (e.keyCode==13) return true;
if (!this.ProcessKeys(e)) return false;
if (this.lastKey==38) // Up
{
var newIndex = itemIndex-1;
var focusItem = this.NavPrev(newIndex);
if (focusItem)
{
var child = this.FindChildElement(focusItem.parentNode.parentNode.id);
if (child && child.style.display == 'block') // children visible
{
var n=0;
var tmpElem;
while (1) // search for last child
{
tmpElem = document.getElementById('Item'+newIndex+'_c'+n);
if (tmpElem)
{
focusItem = tmpElem;
}
else // found it!
{
break;
}
n++;
}
}
}
if (focusItem)
{
focusItem.focus();
}
else // return focus to search field
{
parent.document.getElementById("MSearchField").focus();
}
}
else if (this.lastKey==40) // Down
{
var newIndex = itemIndex+1;
var focusItem;
var item = document.getElementById('Item'+itemIndex);
var elem = this.FindChildElement(item.parentNode.parentNode.id);
if (elem && elem.style.display == 'block') // children visible
{
focusItem = document.getElementById('Item'+itemIndex+'_c0');
}
if (!focusItem) focusItem = this.NavNext(newIndex);
if (focusItem) focusItem.focus();
}
else if (this.lastKey==39) // Right
{
var item = document.getElementById('Item'+itemIndex);
var elem = this.FindChildElement(item.parentNode.parentNode.id);
if (elem) elem.style.display = 'block';
}
else if (this.lastKey==37) // Left
{
var item = document.getElementById('Item'+itemIndex);
var elem = this.FindChildElement(item.parentNode.parentNode.id);
if (elem) elem.style.display = 'none';
}
else if (this.lastKey==27) // Escape
{
parent.searchBox.CloseResultsWindow();
parent.document.getElementById("MSearchField").focus();
}
else if (this.lastKey==13) // Enter
{
return true;
}
return false;
}
this.NavChild = function(evt,itemIndex,childIndex)
{
var e = (evt) ? evt : window.event; // for IE
if (e.keyCode==13) return true;
if (!this.ProcessKeys(e)) return false;
if (this.lastKey==38) // Up
{
if (childIndex>0)
{
var newIndex = childIndex-1;
document.getElementById('Item'+itemIndex+'_c'+newIndex).focus();
}
else // already at first child, jump to parent
{
document.getElementById('Item'+itemIndex).focus();
}
}
else if (this.lastKey==40) // Down
{
var newIndex = childIndex+1;
var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex);
if (!elem) // last child, jump to parent next parent
{
elem = this.NavNext(itemIndex+1);
}
if (elem)
{
elem.focus();
}
}
else if (this.lastKey==27) // Escape
{
parent.searchBox.CloseResultsWindow();
parent.document.getElementById("MSearchField").focus();
}
else if (this.lastKey==13) // Enter
{
return true;
}
return false;
}
}
function setKeyActions(elem,action)
{
elem.setAttribute('onkeydown',action);
elem.setAttribute('onkeypress',action);
elem.setAttribute('onkeyup',action);
}
function setClassAttr(elem,attr)
{
elem.setAttribute('class',attr);
elem.setAttribute('className',attr);
}
function createResults()
{
var results = document.getElementById("SRResults");
for (var e=0; e<searchData.length; e++)
{
var id = searchData[e][0];
var srResult = document.createElement('div');
srResult.setAttribute('id','SR_'+id);
setClassAttr(srResult,'SRResult');
var srEntry = document.createElement('div');
setClassAttr(srEntry,'SREntry');
var srLink = document.createElement('a');
srLink.setAttribute('id','Item'+e);
setKeyActions(srLink,'return searchResults.Nav(event,'+e+')');
setClassAttr(srLink,'SRSymbol');
srLink.innerHTML = searchData[e][1][0];
srEntry.appendChild(srLink);
if (searchData[e][1].length==2) // single result
{
srLink.setAttribute('href',searchData[e][1][1][0]);
if (searchData[e][1][1][1])
{
srLink.setAttribute('target','_parent');
}
var srScope = document.createElement('span');
setClassAttr(srScope,'SRScope');
srScope.innerHTML = searchData[e][1][1][2];
srEntry.appendChild(srScope);
}
else // multiple results
{
srLink.setAttribute('href','javascript:searchResults.Toggle("SR_'+id+'")');
var srChildren = document.createElement('div');
setClassAttr(srChildren,'SRChildren');
for (var c=0; c<searchData[e][1].length-1; c++)
{
var srChild = document.createElement('a');
srChild.setAttribute('id','Item'+e+'_c'+c);
setKeyActions(srChild,'return searchResults.NavChild(event,'+e+','+c+')');
setClassAttr(srChild,'SRScope');
srChild.setAttribute('href',searchData[e][1][c+1][0]);
if (searchData[e][1][c+1][1])
{
srChild.setAttribute('target','_parent');
}
srChild.innerHTML = searchData[e][1][c+1][2];
srChildren.appendChild(srChild);
}
srEntry.appendChild(srChildren);
}
srResult.appendChild(srEntry);
results.appendChild(srResult);
}
}
function init_search()
{
var results = document.getElementById("MSearchSelectWindow");
for (var key in indexSectionLabels)
{
var link = document.createElement('a');
link.setAttribute('class','SelectItem');
link.setAttribute('onclick','searchBox.OnSelectItem('+key+')');
link.href='javascript:void(0)';
link.innerHTML='<span class="SelectionMark">&#160;</span>'+indexSectionLabels[key];
results.appendChild(link);
}
searchBox.OnSelectItem(0);
}
/* @license-end */
var indexSectionsWithContent =
{
};
var indexSectionNames =
{
};
var indexSectionLabels =
{
};
.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0 1px 1px rgba(255,255,255,0.9);color:#283a5d;outline:0}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace!important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283a5d transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;-moz-border-radius:0!important;-webkit-border-radius:0;border-radius:0!important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;-moz-border-radius:5px!important;-webkit-border-radius:5px;border-radius:5px!important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0!important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px!important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}}
\ No newline at end of file
LATEX_CMD=pdflatex
all: refman.pdf
pdf: refman.pdf
refman.pdf: clean refman.tex
$(LATEX_CMD) refman
makeindex refman.idx
$(LATEX_CMD) refman
latex_count=8 ; \
while egrep -s 'Rerun (LaTeX|to get cross-references right)' refman.log && [ $$latex_count -gt 0 ] ;\
do \
echo "Rerunning latex...." ;\
$(LATEX_CMD) refman ;\
latex_count=`expr $$latex_count - 1` ;\
done
makeindex refman.idx
$(LATEX_CMD) refman
clean:
rm -f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.out *.brf *.blg *.bbl refman.pdf
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{doxygen}
% Packages used by this style file
\RequirePackage{alltt}
%%\RequirePackage{array} %% moved to refman.tex due to workaround for LaTex 2019 version and unmaintained tabu package
\RequirePackage{calc}
\RequirePackage{float}
%%\RequirePackage{ifthen} %% moved to refman.tex due to workaround for LaTex 2019 version and unmaintained tabu package
\RequirePackage{verbatim}
\RequirePackage[table]{xcolor}
\RequirePackage{longtable_doxygen}
\RequirePackage{tabu_doxygen}
\RequirePackage{fancyvrb}
\RequirePackage{tabularx}
\RequirePackage{multicol}
\RequirePackage{multirow}
\RequirePackage{hanging}
\RequirePackage{ifpdf}
\RequirePackage{adjustbox}
\RequirePackage{amssymb}
\RequirePackage{stackengine}
\RequirePackage[normalem]{ulem} % for strikeout, but don't modify emphasis
%---------- Internal commands used in this style file ----------------
\newcommand{\ensurespace}[1]{%
\begingroup%
\setlength{\dimen@}{#1}%
\vskip\z@\@plus\dimen@%
\penalty -100\vskip\z@\@plus -\dimen@%
\vskip\dimen@%
\penalty 9999%
\vskip -\dimen@%
\vskip\z@skip% hide the previous |\vskip| from |\addvspace|
\endgroup%
}
\newcommand{\DoxyHorRuler}[1]{%
\setlength{\parskip}{0ex plus 0ex minus 0ex}%
\ifthenelse{#1=0}%
{%
\hrule%
}%
{%
\hrulefilll%
}%
}
\newcommand{\DoxyLabelFont}{}
\newcommand{\entrylabel}[1]{%
{%
\parbox[b]{\labelwidth-4pt}{%
\makebox[0pt][l]{\DoxyLabelFont#1}%
\vspace{1.5\baselineskip}%
}%
}%
}
\newenvironment{DoxyDesc}[1]{%
\ensurespace{4\baselineskip}%
\begin{list}{}{%
\settowidth{\labelwidth}{20pt}%
%\setlength{\parsep}{0pt}%
\setlength{\itemsep}{0pt}%
\setlength{\leftmargin}{\labelwidth+\labelsep}%
\renewcommand{\makelabel}{\entrylabel}%
}%
\item[#1]%
}{%
\end{list}%
}
\newsavebox{\xrefbox}
\newlength{\xreflength}
\newcommand{\xreflabel}[1]{%
\sbox{\xrefbox}{#1}%
\setlength{\xreflength}{\wd\xrefbox}%
\ifthenelse{\xreflength>\labelwidth}{%
\begin{minipage}{\textwidth}%
\setlength{\parindent}{0pt}%
\hangindent=15pt\bfseries #1\vspace{1.2\itemsep}%
\end{minipage}%
}{%
\parbox[b]{\labelwidth}{\makebox[0pt][l]{\textbf{#1}}}%
}%
}
%---------- Commands used by doxygen LaTeX output generator ----------
% Used by <pre> ... </pre>
\newenvironment{DoxyPre}{%
\small%
\begin{alltt}%
}{%
\end{alltt}%
\normalsize%
}
% Necessary for redefining not defined characters, i.e. "Replacement Character" in tex output.
\newlength{\CodeWidthChar}
\newlength{\CodeHeightChar}
\settowidth{\CodeWidthChar}{?}
\settoheight{\CodeHeightChar}{?}
% Necessary for hanging indent
\newlength{\DoxyCodeWidth}
\newcommand\DoxyCodeLine[1]{\hangpara{\DoxyCodeWidth}{1}{#1}\par}
\newcommand\NiceSpace{%
\discretionary{}{\kern\fontdimen2\font}{\kern\fontdimen2\font}%
}
% Used by @code ... @endcode
\newenvironment{DoxyCode}[1]{%
\par%
\scriptsize%
\normalfont\ttfamily%
\rightskip0pt plus 1fil%
\settowidth{\DoxyCodeWidth}{000000}%
\settowidth{\CodeWidthChar}{?}%
\settoheight{\CodeHeightChar}{?}%
\setlength{\parskip}{0ex plus 0ex minus 0ex}%
\ifthenelse{\equal{#1}{0}}
{
{\lccode`~32 \lowercase{\global\let~}\NiceSpace}\obeyspaces%
}
{
{\lccode`~32 \lowercase{\global\let~}}\obeyspaces%
}
}{%
\normalfont%
\normalsize%
\settowidth{\CodeWidthChar}{?}%
\settoheight{\CodeHeightChar}{?}%
}
% Redefining not defined characters, i.e. "Replacement Character" in tex output.
\def\ucr{\adjustbox{width=\CodeWidthChar,height=\CodeHeightChar}{\stackinset{c}{}{c}{-.2pt}{%
\textcolor{white}{\sffamily\bfseries\small ?}}{%
\rotatebox{45}{$\blacksquare$}}}}
% Used by @example, @include, @includelineno and @dontinclude
\newenvironment{DoxyCodeInclude}[1]{%
\DoxyCode{#1}%
}{%
\endDoxyCode%
}
% Used by @verbatim ... @endverbatim
\newenvironment{DoxyVerb}{%
\footnotesize%
\verbatim%
}{%
\endverbatim%
\normalsize%
}
% Used by @verbinclude
\newenvironment{DoxyVerbInclude}{%
\DoxyVerb%
}{%
\endDoxyVerb%
}
% Used by numbered lists (using '-#' or <ol> ... </ol>)
\newenvironment{DoxyEnumerate}{%
\enumerate%
}{%
\endenumerate%
}
% Used by bullet lists (using '-', @li, @arg, or <ul> ... </ul>)
\newenvironment{DoxyItemize}{%
\itemize%
}{%
\enditemize%
}
% Used by description lists (using <dl> ... </dl>)
\newenvironment{DoxyDescription}{%
\description%
}{%
\enddescription%
}
% Used by @image, @dotfile, @dot ... @enddot, and @msc ... @endmsc
% (only if caption is specified)
\newenvironment{DoxyImage}{%
\begin{figure}[H]%
\centering%
}{%
\end{figure}%
}
% Used by @image, @dotfile, @dot ... @enddot, and @msc ... @endmsc
% (only if no caption is specified)
\newenvironment{DoxyImageNoCaption}{%
\begin{center}%
}{%
\end{center}%
}
% Used by @image
% (only if inline is specified)
\newenvironment{DoxyInlineImage}{%
}{%
}
% Used by @attention
\newenvironment{DoxyAttention}[1]{%
\begin{DoxyDesc}{#1}%
}{%
\end{DoxyDesc}%
}
% Used by @author and @authors
\newenvironment{DoxyAuthor}[1]{%
\begin{DoxyDesc}{#1}%
}{%
\end{DoxyDesc}%
}
% Used by @date
\newenvironment{DoxyDate}[1]{%
\begin{DoxyDesc}{#1}%
}{%
\end{DoxyDesc}%
}
% Used by @invariant
\newenvironment{DoxyInvariant}[1]{%
\begin{DoxyDesc}{#1}%
}{%
\end{DoxyDesc}%
}
% Used by @note
\newenvironment{DoxyNote}[1]{%
\begin{DoxyDesc}{#1}%
}{%
\end{DoxyDesc}%
}
% Used by @post
\newenvironment{DoxyPostcond}[1]{%
\begin{DoxyDesc}{#1}%
}{%
\end{DoxyDesc}%
}
% Used by @pre
\newenvironment{DoxyPrecond}[1]{%
\begin{DoxyDesc}{#1}%
}{%
\end{DoxyDesc}%
}
% Used by @copyright
\newenvironment{DoxyCopyright}[1]{%
\begin{DoxyDesc}{#1}%
}{%
\end{DoxyDesc}%
}
% Used by @remark
\newenvironment{DoxyRemark}[1]{%
\begin{DoxyDesc}{#1}%
}{%
\end{DoxyDesc}%
}
% Used by @return and @returns
\newenvironment{DoxyReturn}[1]{%
\begin{DoxyDesc}{#1}%
}{%
\end{DoxyDesc}%
}
% Used by @since
\newenvironment{DoxySince}[1]{%
\begin{DoxyDesc}{#1}%
}{%
\end{DoxyDesc}%
}
% Used by @see
\newenvironment{DoxySeeAlso}[1]{%
\begin{DoxyDesc}{#1}%
}{%
\end{DoxyDesc}%
}
% Used by @version
\newenvironment{DoxyVersion}[1]{%
\begin{DoxyDesc}{#1}%
}{%
\end{DoxyDesc}%
}
% Used by @warning
\newenvironment{DoxyWarning}[1]{%
\begin{DoxyDesc}{#1}%
}{%
\end{DoxyDesc}%
}
% Used by @internal
\newenvironment{DoxyInternal}[1]{%
\paragraph*{#1}%
}{%
}
% Used by @par and @paragraph
\newenvironment{DoxyParagraph}[1]{%
\begin{DoxyDesc}{#1}%
}{%
\end{DoxyDesc}%
}
% Used by parameter lists
\newenvironment{DoxyParams}[2][]{%
\tabulinesep=1mm%
\par%
\ifthenelse{\equal{#1}{}}%
{\begin{longtabu*}spread 0pt [l]{|X[-1,l]|X[-1,l]|}}% name + description
{\ifthenelse{\equal{#1}{1}}%
{\begin{longtabu*}spread 0pt [l]{|X[-1,l]|X[-1,l]|X[-1,l]|}}% in/out + name + desc
{\begin{longtabu*}spread 0pt [l]{|X[-1,l]|X[-1,l]|X[-1,l]|X[-1,l]|}}% in/out + type + name + desc
}
\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]%
\hline%
\endfirsthead%
\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]%
\hline%
\endhead%
}{%
\end{longtabu*}%
\vspace{6pt}%
}
% Used for fields of simple structs
\newenvironment{DoxyFields}[1]{%
\tabulinesep=1mm%
\par%
\begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|X[-1,l]|}%
\multicolumn{3}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
\hline%
\endfirsthead%
\multicolumn{3}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
\hline%
\endhead%
}{%
\end{longtabu*}%
\vspace{6pt}%
}
% Used for fields simple class style enums
\newenvironment{DoxyEnumFields}[1]{%
\tabulinesep=1mm%
\par%
\begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|}%
\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
\hline%
\endfirsthead%
\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
\hline%
\endhead%
}{%
\end{longtabu*}%
\vspace{6pt}%
}
% Used for parameters within a detailed function description
\newenvironment{DoxyParamCaption}{%
\renewcommand{\item}[2][]{\\ \hspace*{2.0cm} ##1 {\em ##2}}%
}{%
}
% Used by return value lists
\newenvironment{DoxyRetVals}[1]{%
\tabulinesep=1mm%
\par%
\begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|}%
\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
\hline%
\endfirsthead%
\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
\hline%
\endhead%
}{%
\end{longtabu*}%
\vspace{6pt}%
}
% Used by exception lists
\newenvironment{DoxyExceptions}[1]{%
\tabulinesep=1mm%
\par%
\begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|}%
\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
\hline%
\endfirsthead%
\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
\hline%
\endhead%
}{%
\end{longtabu*}%
\vspace{6pt}%
}
% Used by template parameter lists
\newenvironment{DoxyTemplParams}[1]{%
\tabulinesep=1mm%
\par%
\begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|}%
\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
\hline%
\endfirsthead%
\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
\hline%
\endhead%
}{%
\end{longtabu*}%
\vspace{6pt}%
}
% Used for member lists
\newenvironment{DoxyCompactItemize}{%
\begin{itemize}%
\setlength{\itemsep}{-3pt}%
\setlength{\parsep}{0pt}%
\setlength{\topsep}{0pt}%
\setlength{\partopsep}{0pt}%
}{%
\end{itemize}%
}
% Used for member descriptions
\newenvironment{DoxyCompactList}{%
\begin{list}{}{%
\setlength{\leftmargin}{0.5cm}%
\setlength{\itemsep}{0pt}%
\setlength{\parsep}{0pt}%
\setlength{\topsep}{0pt}%
\renewcommand{\makelabel}{\hfill}%
}%
}{%
\end{list}%
}
% Used for reference lists (@bug, @deprecated, @todo, etc.)
\newenvironment{DoxyRefList}{%
\begin{list}{}{%
\setlength{\labelwidth}{10pt}%
\setlength{\leftmargin}{\labelwidth}%
\addtolength{\leftmargin}{\labelsep}%
\renewcommand{\makelabel}{\xreflabel}%
}%
}{%
\end{list}%
}
% Used by @bug, @deprecated, @todo, etc.
\newenvironment{DoxyRefDesc}[1]{%
\begin{list}{}{%
\renewcommand\makelabel[1]{\textbf{##1}}%
\settowidth\labelwidth{\makelabel{#1}}%
\setlength\leftmargin{\labelwidth+\labelsep}%
}%
}{%
\end{list}%
}
% Used by parameter lists and simple sections
\newenvironment{Desc}
{\begin{list}{}{%
\settowidth{\labelwidth}{20pt}%
\setlength{\parsep}{0pt}%
\setlength{\itemsep}{0pt}%
\setlength{\leftmargin}{\labelwidth+\labelsep}%
\renewcommand{\makelabel}{\entrylabel}%
}
}{%
\end{list}%
}
% Used by tables
\newcommand{\PBS}[1]{\let\temp=\\#1\let\\=\temp}%
\newenvironment{TabularC}[1]%
{\tabulinesep=1mm
\begin{longtabu*}spread 0pt [c]{*#1{|X[-1]}|}}%
{\end{longtabu*}\par}%
\newenvironment{TabularNC}[1]%
{\begin{tabu}spread 0pt [l]{*#1{|X[-1]}|}}%
{\end{tabu}\par}%
% Used for member group headers
\newenvironment{Indent}{%
\begin{list}{}{%
\setlength{\leftmargin}{0.5cm}%
}%
\item[]\ignorespaces%
}{%
\unskip%
\end{list}%
}
% Used when hyperlinks are turned off
\newcommand{\doxyref}[3]{%
\textbf{#1} (\textnormal{#2}\,\pageref{#3})%
}
% Used to link to a table when hyperlinks are turned on
\newcommand{\doxytablelink}[2]{%
\ref{#1}%
}
% Used to link to a table when hyperlinks are turned off
\newcommand{\doxytableref}[3]{%
\ref{#3}%
}
% Used by @addindex
\newcommand{\lcurly}{\{}
\newcommand{\rcurly}{\}}
% Colors used for syntax highlighting
\definecolor{comment}{rgb}{0.5,0.0,0.0}
\definecolor{keyword}{rgb}{0.0,0.5,0.0}
\definecolor{keywordtype}{rgb}{0.38,0.25,0.125}
\definecolor{keywordflow}{rgb}{0.88,0.5,0.0}
\definecolor{preprocessor}{rgb}{0.5,0.38,0.125}
\definecolor{stringliteral}{rgb}{0.0,0.125,0.25}
\definecolor{charliteral}{rgb}{0.0,0.5,0.5}
\definecolor{vhdldigit}{rgb}{1.0,0.0,1.0}
\definecolor{vhdlkeyword}{rgb}{0.43,0.0,0.43}
\definecolor{vhdllogic}{rgb}{1.0,0.0,0.0}
\definecolor{vhdlchar}{rgb}{0.0,0.0,0.0}
% Color used for table heading
\newcommand{\tableheadbgcolor}{lightgray}%
% Version of hypertarget with correct landing location
\newcommand{\Hypertarget}[1]{\Hy@raisedlink{\hypertarget{#1}{}}}
% possibility to have sections etc. be within the margins
% unfortunately had to copy part of book.cls and add \raggedright
\makeatletter
\newcommand\doxysection{\@startsection {section}{1}{\z@}%
{-3.5ex \@plus -1ex \@minus -.2ex}%
{2.3ex \@plus.2ex}%
{\raggedright\normalfont\Large\bfseries}}
\newcommand\doxysubsection{\@startsection{subsection}{2}{\z@}%
{-3.25ex\@plus -1ex \@minus -.2ex}%
{1.5ex \@plus .2ex}%
{\raggedright\normalfont\large\bfseries}}
\newcommand\doxysubsubsection{\@startsection{subsubsection}{3}{\z@}%
{-3.25ex\@plus -1ex \@minus -.2ex}%
{1.5ex \@plus .2ex}%
{\raggedright\normalfont\normalsize\bfseries}}
\newcommand\doxyparagraph{\@startsection{paragraph}{4}{\z@}%
{3.25ex \@plus1ex \@minus.2ex}%
{-1em}%
{\raggedright\normalfont\normalsize\bfseries}}
\newcommand\doxysubparagraph{\@startsection{subparagraph}{5}{\parindent}%
{3.25ex \@plus1ex \@minus .2ex}%
{-1em}%
{\raggedright\normalfont\normalsize\bfseries}}
\makeatother
% Define caption that is also suitable in a table
\makeatletter
\def\doxyfigcaption{%
\H@refstepcounter{figure}%
\@dblarg{\@caption{figure}}}
\makeatother
%%
%% This is file `longtable.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% longtable.dtx (with options: `package')
%%
%% This is a generated file.
%%
%% The source is maintained by the LaTeX Project team and bug
%% reports for it can be opened at http://latex-project.org/bugs.html
%% (but please observe conditions on bug reports sent to that address!)
%%
%% Copyright 1993-2016
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
%% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'.
%% --------------------------------------------------------------------------
%%
%% It may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
%% of this license or (at your option) any later version.
%% The latest version of this license is in
%% http://www.latex-project.org/lppl.txt
%% and version 1.3c or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
%%
%% This file may only be distributed together with a copy of the LaTeX
%% `Tools Bundle'. You may however distribute the LaTeX `Tools Bundle'
%% without such generated files.
%%
%% The list of all files belonging to the LaTeX `Tools Bundle' is
%% given in the file `manifest.txt'.
%%
%% File: longtable.dtx Copyright (C) 1990-2001 David Carlisle
\NeedsTeXFormat{LaTeX2e}[1995/06/01]
\ProvidesPackage{longtable_doxygen}
[2014/10/28 v4.11 Multi-page Table package (DPC) - frozen version for doxygen]
\def\LT@err{\PackageError{longtable}}
\def\LT@warn{\PackageWarning{longtable}}
\def\LT@final@warn{%
\AtEndDocument{%
\LT@warn{Table \@width s have changed. Rerun LaTeX.\@gobbletwo}}%
\global\let\LT@final@warn\relax}
\DeclareOption{errorshow}{%
\def\LT@warn{\PackageInfo{longtable}}}
\DeclareOption{pausing}{%
\def\LT@warn#1{%
\LT@err{#1}{This is not really an error}}}
\DeclareOption{set}{}
\DeclareOption{final}{}
\ProcessOptions
\newskip\LTleft \LTleft=\fill
\newskip\LTright \LTright=\fill
\newskip\LTpre \LTpre=\bigskipamount
\newskip\LTpost \LTpost=\bigskipamount
\newcount\LTchunksize \LTchunksize=20
\let\c@LTchunksize\LTchunksize
\newdimen\LTcapwidth \LTcapwidth=4in
\newbox\LT@head
\newbox\LT@firsthead
\newbox\LT@foot
\newbox\LT@lastfoot
\newcount\LT@cols
\newcount\LT@rows
\newcounter{LT@tables}
\newcounter{LT@chunks}[LT@tables]
\ifx\c@table\undefined
\newcounter{table}
\def\fnum@table{\tablename~\thetable}
\fi
\ifx\tablename\undefined
\def\tablename{Table}
\fi
\newtoks\LT@p@ftn
\mathchardef\LT@end@pen=30000
\def\longtable{%
\par
\ifx\multicols\@undefined
\else
\ifnum\col@number>\@ne
\@twocolumntrue
\fi
\fi
\if@twocolumn
\LT@err{longtable not in 1-column mode}\@ehc
\fi
\begingroup
\@ifnextchar[\LT@array{\LT@array[x]}}
\def\LT@array[#1]#2{%
\refstepcounter{table}\stepcounter{LT@tables}%
\if l#1%
\LTleft\z@ \LTright\fill
\else\if r#1%
\LTleft\fill \LTright\z@
\else\if c#1%
\LTleft\fill \LTright\fill
\fi\fi\fi
\let\LT@mcol\multicolumn
\let\LT@@tabarray\@tabarray
\let\LT@@hl\hline
\def\@tabarray{%
\let\hline\LT@@hl
\LT@@tabarray}%
\let\\\LT@tabularcr\let\tabularnewline\\%
\def\newpage{\noalign{\break}}%
\def\pagebreak{\noalign{\ifnum`}=0\fi\@testopt{\LT@no@pgbk-}4}%
\def\nopagebreak{\noalign{\ifnum`}=0\fi\@testopt\LT@no@pgbk4}%
\let\hline\LT@hline \let\kill\LT@kill\let\caption\LT@caption
\@tempdima\ht\strutbox
\let\@endpbox\LT@endpbox
\ifx\extrarowheight\@undefined
\let\@acol\@tabacol
\let\@classz\@tabclassz \let\@classiv\@tabclassiv
\def\@startpbox{\vtop\LT@startpbox}%
\let\@@startpbox\@startpbox
\let\@@endpbox\@endpbox
\let\LT@LL@FM@cr\@tabularcr
\else
\advance\@tempdima\extrarowheight
\col@sep\tabcolsep
\let\@startpbox\LT@startpbox\let\LT@LL@FM@cr\@arraycr
\fi
\setbox\@arstrutbox\hbox{\vrule
\@height \arraystretch \@tempdima
\@depth \arraystretch \dp \strutbox
\@width \z@}%
\let\@sharp##\let\protect\relax
\begingroup
\@mkpream{#2}%
\xdef\LT@bchunk{%
\global\advance\c@LT@chunks\@ne
\global\LT@rows\z@\setbox\z@\vbox\bgroup
\LT@setprevdepth
\tabskip\LTleft \noexpand\halign to\hsize\bgroup
\tabskip\z@ \@arstrut \@preamble \tabskip\LTright \cr}%
\endgroup
\expandafter\LT@nofcols\LT@bchunk&\LT@nofcols
\LT@make@row
\m@th\let\par\@empty
\everycr{}\lineskip\z@\baselineskip\z@
\LT@bchunk}
\def\LT@no@pgbk#1[#2]{\penalty #1\@getpen{#2}\ifnum`{=0\fi}}
\def\LT@start{%
\let\LT@start\endgraf
\endgraf\penalty\z@\vskip\LTpre
\dimen@\pagetotal
\advance\dimen@ \ht\ifvoid\LT@firsthead\LT@head\else\LT@firsthead\fi
\advance\dimen@ \dp\ifvoid\LT@firsthead\LT@head\else\LT@firsthead\fi
\advance\dimen@ \ht\LT@foot
\dimen@ii\vfuzz
\vfuzz\maxdimen
\setbox\tw@\copy\z@
\setbox\tw@\vsplit\tw@ to \ht\@arstrutbox
\setbox\tw@\vbox{\unvbox\tw@}%
\vfuzz\dimen@ii
\advance\dimen@ \ht
\ifdim\ht\@arstrutbox>\ht\tw@\@arstrutbox\else\tw@\fi
\advance\dimen@\dp
\ifdim\dp\@arstrutbox>\dp\tw@\@arstrutbox\else\tw@\fi
\advance\dimen@ -\pagegoal
\ifdim \dimen@>\z@\vfil\break\fi
\global\@colroom\@colht
\ifvoid\LT@foot\else
\advance\vsize-\ht\LT@foot
\global\advance\@colroom-\ht\LT@foot
\dimen@\pagegoal\advance\dimen@-\ht\LT@foot\pagegoal\dimen@
\maxdepth\z@
\fi
\ifvoid\LT@firsthead\copy\LT@head\else\box\LT@firsthead\fi\nobreak
\output{\LT@output}}
\def\endlongtable{%
\crcr
\noalign{%
\let\LT@entry\LT@entry@chop
\xdef\LT@save@row{\LT@save@row}}%
\LT@echunk
\LT@start
\unvbox\z@
\LT@get@widths
\if@filesw
{\let\LT@entry\LT@entry@write\immediate\write\@auxout{%
\gdef\expandafter\noexpand
\csname LT@\romannumeral\c@LT@tables\endcsname
{\LT@save@row}}}%
\fi
\ifx\LT@save@row\LT@@save@row
\else
\LT@warn{Column \@width s have changed\MessageBreak
in table \thetable}%
\LT@final@warn
\fi
\endgraf\penalty -\LT@end@pen
\endgroup
\global\@mparbottom\z@
\pagegoal\vsize
\endgraf\penalty\z@\addvspace\LTpost
\ifvoid\footins\else\insert\footins{}\fi}
\def\LT@nofcols#1&{%
\futurelet\@let@token\LT@n@fcols}
\def\LT@n@fcols{%
\advance\LT@cols\@ne
\ifx\@let@token\LT@nofcols
\expandafter\@gobble
\else
\expandafter\LT@nofcols
\fi}
\def\LT@tabularcr{%
\relax\iffalse{\fi\ifnum0=`}\fi
\@ifstar
{\def\crcr{\LT@crcr\noalign{\nobreak}}\let\cr\crcr
\LT@t@bularcr}%
{\LT@t@bularcr}}
\let\LT@crcr\crcr
\let\LT@setprevdepth\relax
\def\LT@t@bularcr{%
\global\advance\LT@rows\@ne
\ifnum\LT@rows=\LTchunksize
\gdef\LT@setprevdepth{%
\prevdepth\z@\global
\global\let\LT@setprevdepth\relax}%
\expandafter\LT@xtabularcr
\else
\ifnum0=`{}\fi
\expandafter\LT@LL@FM@cr
\fi}
\def\LT@xtabularcr{%
\@ifnextchar[\LT@argtabularcr\LT@ntabularcr}
\def\LT@ntabularcr{%
\ifnum0=`{}\fi
\LT@echunk
\LT@start
\unvbox\z@
\LT@get@widths
\LT@bchunk}
\def\LT@argtabularcr[#1]{%
\ifnum0=`{}\fi
\ifdim #1>\z@
\unskip\@xargarraycr{#1}%
\else
\@yargarraycr{#1}%
\fi
\LT@echunk
\LT@start
\unvbox\z@
\LT@get@widths
\LT@bchunk}
\def\LT@echunk{%
\crcr\LT@save@row\cr\egroup
\global\setbox\@ne\lastbox
\unskip
\egroup}
\def\LT@entry#1#2{%
\ifhmode\@firstofone{&}\fi\omit
\ifnum#1=\c@LT@chunks
\else
\kern#2\relax
\fi}
\def\LT@entry@chop#1#2{%
\noexpand\LT@entry
{\ifnum#1>\c@LT@chunks
1}{0pt%
\else
#1}{#2%
\fi}}
\def\LT@entry@write{%
\noexpand\LT@entry^^J%
\@spaces}
\def\LT@kill{%
\LT@echunk
\LT@get@widths
\expandafter\LT@rebox\LT@bchunk}
\def\LT@rebox#1\bgroup{%
#1\bgroup
\unvbox\z@
\unskip
\setbox\z@\lastbox}
\def\LT@blank@row{%
\xdef\LT@save@row{\expandafter\LT@build@blank
\romannumeral\number\LT@cols 001 }}
\def\LT@build@blank#1{%
\if#1m%
\noexpand\LT@entry{1}{0pt}%
\expandafter\LT@build@blank
\fi}
\def\LT@make@row{%
\global\expandafter\let\expandafter\LT@save@row
\csname LT@\romannumeral\c@LT@tables\endcsname
\ifx\LT@save@row\relax
\LT@blank@row
\else
{\let\LT@entry\or
\if!%
\ifcase\expandafter\expandafter\expandafter\LT@cols
\expandafter\@gobble\LT@save@row
\or
\else
\relax
\fi
!%
\else
\aftergroup\LT@blank@row
\fi}%
\fi}
\let\setlongtables\relax
\def\LT@get@widths{%
\setbox\tw@\hbox{%
\unhbox\@ne
\let\LT@old@row\LT@save@row
\global\let\LT@save@row\@empty
\count@\LT@cols
\loop
\unskip
\setbox\tw@\lastbox
\ifhbox\tw@
\LT@def@row
\advance\count@\m@ne
\repeat}%
\ifx\LT@@save@row\@undefined
\let\LT@@save@row\LT@save@row
\fi}
\def\LT@def@row{%
\let\LT@entry\or
\edef\@tempa{%
\ifcase\expandafter\count@\LT@old@row
\else
{1}{0pt}%
\fi}%
\let\LT@entry\relax
\xdef\LT@save@row{%
\LT@entry
\expandafter\LT@max@sel\@tempa
\LT@save@row}}
\def\LT@max@sel#1#2{%
{\ifdim#2=\wd\tw@
#1%
\else
\number\c@LT@chunks
\fi}%
{\the\wd\tw@}}
\def\LT@hline{%
\noalign{\ifnum0=`}\fi
\penalty\@M
\futurelet\@let@token\LT@@hline}
\def\LT@@hline{%
\ifx\@let@token\hline
\global\let\@gtempa\@gobble
\gdef\LT@sep{\penalty-\@medpenalty\vskip\doublerulesep}%
\else
\global\let\@gtempa\@empty
\gdef\LT@sep{\penalty-\@lowpenalty\vskip-\arrayrulewidth}%
\fi
\ifnum0=`{\fi}%
\multispan\LT@cols
\unskip\leaders\hrule\@height\arrayrulewidth\hfill\cr
\noalign{\LT@sep}%
\multispan\LT@cols
\unskip\leaders\hrule\@height\arrayrulewidth\hfill\cr
\noalign{\penalty\@M}%
\@gtempa}
\def\LT@caption{%
\noalign\bgroup
\@ifnextchar[{\egroup\LT@c@ption\@firstofone}\LT@capti@n}
\def\LT@c@ption#1[#2]#3{%
\LT@makecaption#1\fnum@table{#3}%
\def\@tempa{#2}%
\ifx\@tempa\@empty\else
{\let\\\space
\addcontentsline{lot}{table}{\protect\numberline{\thetable}{#2}}}%
\fi}
\def\LT@capti@n{%
\@ifstar
{\egroup\LT@c@ption\@gobble[]}%
{\egroup\@xdblarg{\LT@c@ption\@firstofone}}}
\def\LT@makecaption#1#2#3{%
\LT@mcol\LT@cols c{\hbox to\z@{\hss\parbox[t]\LTcapwidth{%
\sbox\@tempboxa{#1{#2: }#3}%
\ifdim\wd\@tempboxa>\hsize
#1{#2: }#3%
\else
\hbox to\hsize{\hfil\box\@tempboxa\hfil}%
\fi
\endgraf\vskip\baselineskip}%
\hss}}}
\def\LT@output{%
\ifnum\outputpenalty <-\@Mi
\ifnum\outputpenalty > -\LT@end@pen
\LT@err{floats and marginpars not allowed in a longtable}\@ehc
\else
\setbox\z@\vbox{\unvbox\@cclv}%
\ifdim \ht\LT@lastfoot>\ht\LT@foot
\dimen@\pagegoal
\advance\dimen@-\ht\LT@lastfoot
\ifdim\dimen@<\ht\z@
\setbox\@cclv\vbox{\unvbox\z@\copy\LT@foot\vss}%
\@makecol
\@outputpage
\setbox\z@\vbox{\box\LT@head}%
\fi
\fi
\global\@colroom\@colht
\global\vsize\@colht
\vbox
{\unvbox\z@\box\ifvoid\LT@lastfoot\LT@foot\else\LT@lastfoot\fi}%
\fi
\else
\setbox\@cclv\vbox{\unvbox\@cclv\copy\LT@foot\vss}%
\@makecol
\@outputpage
\global\vsize\@colroom
\copy\LT@head\nobreak
\fi}
\def\LT@end@hd@ft#1{%
\LT@echunk
\ifx\LT@start\endgraf
\LT@err
{Longtable head or foot not at start of table}%
{Increase LTchunksize}%
\fi
\setbox#1\box\z@
\LT@get@widths
\LT@bchunk}
\def\endfirsthead{\LT@end@hd@ft\LT@firsthead}
\def\endhead{\LT@end@hd@ft\LT@head}
\def\endfoot{\LT@end@hd@ft\LT@foot}
\def\endlastfoot{\LT@end@hd@ft\LT@lastfoot}
\def\LT@startpbox#1{%
\bgroup
\let\@footnotetext\LT@p@ftntext
\setlength\hsize{#1}%
\@arrayparboxrestore
\vrule \@height \ht\@arstrutbox \@width \z@}
\def\LT@endpbox{%
\@finalstrut\@arstrutbox
\egroup
\the\LT@p@ftn
\global\LT@p@ftn{}%
\hfil}
\def\LT@p@ftntext#1{%
\edef\@tempa{\the\LT@p@ftn\noexpand\footnotetext[\the\c@footnote]}%
\global\LT@p@ftn\expandafter{\@tempa{#1}}}%
\@namedef{ver@longtable.sty}{2014/10/28 v4.11 Multi-page Table package (DPC) - frozen version for doxygen}
\endinput
%%
%% End of file `longtable.sty'.
\let\mypdfximage\pdfximage\def\pdfximage{\immediate\mypdfximage}\documentclass[twoside]{book}
%% moved from doxygen.sty due to workaround for LaTex 2019 version and unmaintained tabu package
\usepackage{ifthen}
\ifx\requestedLaTeXdate\undefined
\usepackage{array}
\else
\usepackage{array}[=2016-10-06]
\fi
%%
% Packages required by doxygen
\usepackage{fixltx2e}
\usepackage{doxygen}
\usepackage{graphicx}
\usepackage[utf8]{inputenc}
\usepackage{makeidx}
\PassOptionsToPackage{warn}{textcomp}
\usepackage{textcomp}
\usepackage[nointegrals]{wasysym}
\usepackage{ifxetex}
% Font selection
\usepackage[T1]{fontenc}
\usepackage[scaled=.90]{helvet}
\usepackage{courier}
\renewcommand{\familydefault}{\sfdefault}
\usepackage{sectsty}
\allsectionsfont{%
\fontseries{bc}\selectfont%
\color{darkgray}%
}
\renewcommand{\DoxyLabelFont}{%
\fontseries{bc}\selectfont%
\color{darkgray}%
}
\newcommand{\+}{\discretionary{\mbox{\scriptsize$\hookleftarrow$}}{}{}}
% Arguments of doxygenemoji:
% 1) ':<text>:' form of the emoji, already "LaTeX"-escaped
% 2) file with the name of the emoji without the .png extension
% in case image exist use this otherwise use the ':<text>:' form
\newcommand{\doxygenemoji}[2]{%
\IfFileExists{./#2.png}{\raisebox{-0.1em}{\includegraphics[height=0.9em]{./#2.png}}}{#1}%
}
% Page & text layout
\usepackage{geometry}
\geometry{%
a4paper,%
top=2.5cm,%
bottom=2.5cm,%
left=2.5cm,%
right=2.5cm%
}
\tolerance=750
\hfuzz=15pt
\hbadness=750
\setlength{\emergencystretch}{15pt}
\setlength{\parindent}{0cm}
\newcommand{\doxynormalparskip}{\setlength{\parskip}{3ex plus 2ex minus 2ex}}
\newcommand{\doxytocparskip}{\setlength{\parskip}{1ex plus 0ex minus 0ex}}
\doxynormalparskip
\makeatletter
\renewcommand{\paragraph}{%
\@startsection{paragraph}{4}{0ex}{-1.0ex}{1.0ex}{%
\normalfont\normalsize\bfseries\SS@parafont%
}%
}
\renewcommand{\subparagraph}{%
\@startsection{subparagraph}{5}{0ex}{-1.0ex}{1.0ex}{%
\normalfont\normalsize\bfseries\SS@subparafont%
}%
}
\makeatother
\makeatletter
\newcommand\hrulefilll{\leavevmode\leaders\hrule\hskip 0pt plus 1filll\kern\z@}
\makeatother
% Headers & footers
\usepackage{fancyhdr}
\pagestyle{fancyplain}
\renewcommand{\footrulewidth}{0.4pt}
%
\fancypagestyle{fancyplain}{
\fancyhf{}
\fancyhead[LE, RO]{\bfseries\thepage}
\fancyhead[LO]{\bfseries\rightmark}
\fancyhead[RE]{\bfseries\leftmark}
\fancyfoot[LO, RE]{\bfseries\scriptsize Generated by Doxygen }
}
%
\fancypagestyle{plain}{
\fancyhf{}
\fancyfoot[LO, RE]{\bfseries\scriptsize Generated by Doxygen }
\renewcommand{\headrulewidth}{0pt}}
%
\pagestyle{fancyplain}
%
\renewcommand{\chaptermark}[1]{%
\markboth{#1}{}%
}
\renewcommand{\sectionmark}[1]{%
\markright{\thesection\ #1}%
}
% Indices & bibliography
\usepackage{natbib}
\usepackage[titles]{tocloft}
\setcounter{tocdepth}{3}
\setcounter{secnumdepth}{5}
\makeindex
\usepackage{newunicodechar}
\newunicodechar{}{${}^{-}$}% Superscript minus
\newunicodechar{²}{${}^{2}$}% Superscript two
\newunicodechar{³}{${}^{3}$}% Superscript three
% Hyperlinks (required, but should be loaded last)
\ifpdf
\usepackage[pdftex,pagebackref=true]{hyperref}
\else
\ifxetex
\usepackage[pagebackref=true]{hyperref}
\else
\usepackage[ps2pdf,pagebackref=true]{hyperref}
\fi
\fi
\hypersetup{%
colorlinks=true,%
linkcolor=blue,%
citecolor=blue,%
unicode%
}
% Custom commands
\newcommand{\clearemptydoublepage}{%
\newpage{\pagestyle{empty}\cleardoublepage}%
}
\usepackage{caption}
\captionsetup{labelsep=space,justification=centering,font={bf},singlelinecheck=off,skip=4pt,position=top}
\usepackage{etoc}
\etocsettocstyle{\doxytocparskip}{\doxynormalparskip}
\renewcommand{\numberline}[1]{#1~}
%===== C O N T E N T S =====
\begin{document}
\raggedbottom
% Titlepage & ToC
\hypersetup{pageanchor=false,
bookmarksnumbered=true,
pdfencoding=unicode
}
\pagenumbering{alph}
\begin{titlepage}
\vspace*{7cm}
\begin{center}%
{\Large sfcode }\\
\vspace*{1cm}
{\large Generated by Doxygen 1.9.0}\\
\end{center}
\end{titlepage}
\clearemptydoublepage
\pagenumbering{roman}
\tableofcontents
\clearemptydoublepage
\pagenumbering{arabic}
\hypersetup{pageanchor=true}
%--- Begin generated contents ---
%--- End generated contents ---
% Index
\backmatter
\newpage
\phantomsection
\clearemptydoublepage
\addcontentsline{toc}{chapter}{\indexname}
\printindex
\end{document}
This source diff could not be displayed because it is too large. You can view the blob instead.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>sfcode: /opt/lampp/htdocs/sfcode/backend/questions/check_output.php File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">sfcode
</div>
<div id="projectbrief">An Online Competing and Development Environment</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_8c739bbef76d64b22d6b0911c526dd76.html">backend</a></li><li class="navelem"><a class="el" href="dir_bd46ce877abc65888d3ac8c7f1e44826.html">questions</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#var-members">Variables</a> </div>
<div class="headertitle">
<div class="title">check_output.php File Reference</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:ab1d99e9211e0764ab2dcf25497fa40e4"><td class="memItemLeft" align="right" valign="top"><a id="ab1d99e9211e0764ab2dcf25497fa40e4"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>$postData</b> = file_get_contents(&quot;php://input&quot;)</td></tr>
<tr class="separator:ab1d99e9211e0764ab2dcf25497fa40e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>This script compares the output generated by users's code and the correct output, for the specified testcase. This script also ensures that the change in rating is handled based on if the testcase is correct. For this the script communicates with the MySQL server. Thus SQL injection has been handled. </p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
</small></address>
</body>
</html>
......@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>sfcode: sfcode/backend/database.php File Reference</title>
<title>sfcode: /opt/lampp/htdocs/sfcode/backend/database.php File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
......@@ -62,7 +62,7 @@ $(function() {
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_c7d2d9efb36c5f0c69f2c16a7a8cf764.html">sfcode</a></li><li class="navelem"><a class="el" href="dir_e11c243fa6565b385f7fc941ce24c288.html">backend</a></li> </ul>
<li class="navelem"><a class="el" href="dir_8c739bbef76d64b22d6b0911c526dd76.html">backend</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
......@@ -75,89 +75,25 @@ $(function() {
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:a127f40bba7579be61826b0ebd636b5b1"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="database_8php.html#a127f40bba7579be61826b0ebd636b5b1">$db_host</a> = 'localhost'</td></tr>
<tr class="memitem:a127f40bba7579be61826b0ebd636b5b1"><td class="memItemLeft" align="right" valign="top"><a id="a127f40bba7579be61826b0ebd636b5b1"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>$db_host</b> = 'localhost'</td></tr>
<tr class="separator:a127f40bba7579be61826b0ebd636b5b1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a820e0b38cf4374967d8018835e9b755d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="database_8php.html#a820e0b38cf4374967d8018835e9b755d">$db_username</a> = 'root'</td></tr>
<tr class="memitem:a820e0b38cf4374967d8018835e9b755d"><td class="memItemLeft" align="right" valign="top"><a id="a820e0b38cf4374967d8018835e9b755d"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>$db_username</b> = 'root'</td></tr>
<tr class="separator:a820e0b38cf4374967d8018835e9b755d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2962c2bda65ca19dd4dd12d7160f1bf8"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="database_8php.html#a2962c2bda65ca19dd4dd12d7160f1bf8">$db_password</a> = ''</td></tr>
<tr class="memitem:a2962c2bda65ca19dd4dd12d7160f1bf8"><td class="memItemLeft" align="right" valign="top"><a id="a2962c2bda65ca19dd4dd12d7160f1bf8"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>$db_password</b> = ''</td></tr>
<tr class="separator:a2962c2bda65ca19dd4dd12d7160f1bf8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a26dcb19f4431598ddd5f58147f131bee"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="database_8php.html#a26dcb19f4431598ddd5f58147f131bee">$db_name</a> = 'ssl_database'</td></tr>
<tr class="memitem:a26dcb19f4431598ddd5f58147f131bee"><td class="memItemLeft" align="right" valign="top"><a id="a26dcb19f4431598ddd5f58147f131bee"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>$db_name</b> = 'ssl_database'</td></tr>
<tr class="separator:a26dcb19f4431598ddd5f58147f131bee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a580989e8e3521433691a0351287f6315"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="database_8php.html#a580989e8e3521433691a0351287f6315">$mysqli</a> = new mysqli($db_host, $db_username, $db_password,$db_name)</td></tr>
<tr class="memitem:a580989e8e3521433691a0351287f6315"><td class="memItemLeft" align="right" valign="top"><a id="a580989e8e3521433691a0351287f6315"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>$mysqli</b> = new mysqli($db_host, $db_username, $db_password,$db_name)</td></tr>
<tr class="separator:a580989e8e3521433691a0351287f6315"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Variable Documentation</h2>
<a id="a127f40bba7579be61826b0ebd636b5b1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a127f40bba7579be61826b0ebd636b5b1">&#9670;&nbsp;</a></span>$db_host</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">$db_host = 'localhost'</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a26dcb19f4431598ddd5f58147f131bee"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a26dcb19f4431598ddd5f58147f131bee">&#9670;&nbsp;</a></span>$db_name</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">$db_name = 'ssl_database'</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a2962c2bda65ca19dd4dd12d7160f1bf8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2962c2bda65ca19dd4dd12d7160f1bf8">&#9670;&nbsp;</a></span>$db_password</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">$db_password = ''</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a820e0b38cf4374967d8018835e9b755d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a820e0b38cf4374967d8018835e9b755d">&#9670;&nbsp;</a></span>$db_username</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">$db_username = 'root'</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a580989e8e3521433691a0351287f6315"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a580989e8e3521433691a0351287f6315">&#9670;&nbsp;</a></span>$mysqli</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">$mysqli = new mysqli($db_host, $db_username, $db_password,$db_name)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>This is the default script to connect with the MySQL server in the backend. </p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
......
......@@ -76,10 +76,26 @@ Directories</h2></td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
Files</h2></td></tr>
<tr class="memitem:database_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="database_8php.html">database.php</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:dir__tree_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir__tree_8php.html">dir_tree.php</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:execute_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="execute_8php.html">execute.php</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:filedelete_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="filedelete_8php.html">filedelete.php</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:filesave_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="filesave_8php.html">filesave.php</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:get__file_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="get__file_8php.html">get_file.php</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:login_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="login_8php.html">login.php</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:newdir_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="newdir_8php.html">newdir.php</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:register_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="register_8php.html">register.php</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:update__correct_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="update__correct_8php.html">update_correct.php</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
<!-- start footer part -->
......
......@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>sfcode: sfcode/backend/dir_tree.php File Reference</title>
<title>sfcode: /opt/lampp/htdocs/sfcode/backend/dir_tree.php File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
......@@ -62,7 +62,7 @@ $(function() {
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_c7d2d9efb36c5f0c69f2c16a7a8cf764.html">sfcode</a></li><li class="navelem"><a class="el" href="dir_e11c243fa6565b385f7fc941ce24c288.html">backend</a></li> </ul>
<li class="navelem"><a class="el" href="dir_8c739bbef76d64b22d6b0911c526dd76.html">backend</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
......@@ -76,81 +76,25 @@ $(function() {
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a202e5414a83f8a465d58061268174166"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir__tree_8php.html#a202e5414a83f8a465d58061268174166">dirToArray</a> ($dir)</td></tr>
<tr class="memitem:a202e5414a83f8a465d58061268174166"><td class="memItemLeft" align="right" valign="top"><a id="a202e5414a83f8a465d58061268174166"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>dirToArray</b> ($dir)</td></tr>
<tr class="separator:a202e5414a83f8a465d58061268174166"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:ab1d99e9211e0764ab2dcf25497fa40e4"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir__tree_8php.html#ab1d99e9211e0764ab2dcf25497fa40e4">$postData</a> = file_get_contents(&quot;php://input&quot;)</td></tr>
<tr class="memitem:ab1d99e9211e0764ab2dcf25497fa40e4"><td class="memItemLeft" align="right" valign="top"><a id="ab1d99e9211e0764ab2dcf25497fa40e4"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>$postData</b> = file_get_contents(&quot;php://input&quot;)</td></tr>
<tr class="separator:ab1d99e9211e0764ab2dcf25497fa40e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a227a9443cabbe5e23cfc10c4371e09d1"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir__tree_8php.html#a227a9443cabbe5e23cfc10c4371e09d1">$uname</a> = $postData['username']</td></tr>
<tr class="memitem:a227a9443cabbe5e23cfc10c4371e09d1"><td class="memItemLeft" align="right" valign="top"><a id="a227a9443cabbe5e23cfc10c4371e09d1"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>$uname</b> = $postData['username']</td></tr>
<tr class="separator:a227a9443cabbe5e23cfc10c4371e09d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad86bfd361a21d3818b7dcaf19fb6a4bb"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir__tree_8php.html#ad86bfd361a21d3818b7dcaf19fb6a4bb">$Dir</a> = &quot;../users/&quot; . $uname</td></tr>
<tr class="memitem:ad86bfd361a21d3818b7dcaf19fb6a4bb"><td class="memItemLeft" align="right" valign="top"><a id="ad86bfd361a21d3818b7dcaf19fb6a4bb"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>$Dir</b> = &quot;../users/&quot; . $uname</td></tr>
<tr class="separator:ad86bfd361a21d3818b7dcaf19fb6a4bb"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
<a id="a202e5414a83f8a465d58061268174166"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a202e5414a83f8a465d58061268174166">&#9670;&nbsp;</a></span>dirToArray()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">dirToArray </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>$dir</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Variable Documentation</h2>
<a id="ad86bfd361a21d3818b7dcaf19fb6a4bb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad86bfd361a21d3818b7dcaf19fb6a4bb">&#9670;&nbsp;</a></span>$Dir</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">$Dir = &quot;../users/&quot; . $uname</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ab1d99e9211e0764ab2dcf25497fa40e4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab1d99e9211e0764ab2dcf25497fa40e4">&#9670;&nbsp;</a></span>$postData</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">$postData = file_get_contents(&quot;php://input&quot;)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a227a9443cabbe5e23cfc10c4371e09d1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a227a9443cabbe5e23cfc10c4371e09d1">&#9670;&nbsp;</a></span>$uname</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">$uname = $postData['username']</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>This script returns the directory tree of a user's workspace, given the username. It returns a nested array in JSON form, after using the recursive function called dirToArray(). </p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
......
......@@ -70,6 +70,16 @@ $(function() {
<div class="title">questions Directory Reference</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
Files</h2></td></tr>
<tr class="memitem:check__output_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="check__output_8php.html">check_output.php</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:get__questions_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="get__questions_8php.html">get_questions.php</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:question__save_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="question__save_8php.html">question_save.php</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
......
......@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>sfcode: sfcode/backend/execute.php File Reference</title>
<title>sfcode: /opt/lampp/htdocs/sfcode/backend/execute.php File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
......@@ -62,7 +62,7 @@ $(function() {
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_c7d2d9efb36c5f0c69f2c16a7a8cf764.html">sfcode</a></li><li class="navelem"><a class="el" href="dir_e11c243fa6565b385f7fc941ce24c288.html">backend</a></li> </ul>
<li class="navelem"><a class="el" href="dir_8c739bbef76d64b22d6b0911c526dd76.html">backend</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
......@@ -75,170 +75,45 @@ $(function() {
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:ab1d99e9211e0764ab2dcf25497fa40e4"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="execute_8php.html#ab1d99e9211e0764ab2dcf25497fa40e4">$postData</a> = file_get_contents(&quot;php://input&quot;)</td></tr>
<tr class="memitem:ab1d99e9211e0764ab2dcf25497fa40e4"><td class="memItemLeft" align="right" valign="top"><a id="ab1d99e9211e0764ab2dcf25497fa40e4"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>$postData</b> = file_get_contents(&quot;php://input&quot;)</td></tr>
<tr class="separator:ab1d99e9211e0764ab2dcf25497fa40e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a227a9443cabbe5e23cfc10c4371e09d1"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="execute_8php.html#a227a9443cabbe5e23cfc10c4371e09d1">$uname</a> = $postData['file']['username']</td></tr>
<tr class="memitem:a227a9443cabbe5e23cfc10c4371e09d1"><td class="memItemLeft" align="right" valign="top"><a id="a227a9443cabbe5e23cfc10c4371e09d1"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>$uname</b> = $postData['file']['username']</td></tr>
<tr class="separator:a227a9443cabbe5e23cfc10c4371e09d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0722441477f957078ee2437054556cbc"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="execute_8php.html#a0722441477f957078ee2437054556cbc">$filename</a> = $postData['file']['filename']</td></tr>
<tr class="memitem:a0722441477f957078ee2437054556cbc"><td class="memItemLeft" align="right" valign="top"><a id="a0722441477f957078ee2437054556cbc"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>$filename</b> = $postData['file']['filename']</td></tr>
<tr class="separator:a0722441477f957078ee2437054556cbc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a83170d318260a5a2e2a79dccdd371b10"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="execute_8php.html#a83170d318260a5a2e2a79dccdd371b10">$language</a> = $postData['file']['language']</td></tr>
<tr class="memitem:a3f910b7833f09507df883bf8b04d3bdb"><td class="memItemLeft" align="right" valign="top"><a id="a3f910b7833f09507df883bf8b04d3bdb"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>$f_path</b> = $postData['file']['path']</td></tr>
<tr class="separator:a3f910b7833f09507df883bf8b04d3bdb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a83170d318260a5a2e2a79dccdd371b10"><td class="memItemLeft" align="right" valign="top"><a id="a83170d318260a5a2e2a79dccdd371b10"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>$language</b> = $postData['file']['language']</td></tr>
<tr class="separator:a83170d318260a5a2e2a79dccdd371b10"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6533a3606e58291459e9dfec2ad7da21"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="execute_8php.html#a6533a3606e58291459e9dfec2ad7da21">$input_data</a> = $postData['input_data']</td></tr>
<tr class="memitem:a6533a3606e58291459e9dfec2ad7da21"><td class="memItemLeft" align="right" valign="top"><a id="a6533a3606e58291459e9dfec2ad7da21"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>$input_data</b> = $postData['input_data']</td></tr>
<tr class="separator:a6533a3606e58291459e9dfec2ad7da21"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8a081d1b9ae6e0379850a3996564bb3f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="execute_8php.html#a8a081d1b9ae6e0379850a3996564bb3f">$ret_stat</a> = 0</td></tr>
<tr class="memitem:a8a081d1b9ae6e0379850a3996564bb3f"><td class="memItemLeft" align="right" valign="top"><a id="a8a081d1b9ae6e0379850a3996564bb3f"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>$ret_stat</b> = 0</td></tr>
<tr class="separator:a8a081d1b9ae6e0379850a3996564bb3f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa3e9534005fd516d941f6a5569896e01"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="execute_8php.html#aa3e9534005fd516d941f6a5569896e01">$template</a> = strval(rand(1, 1000000))</td></tr>
<tr class="memitem:aa3e9534005fd516d941f6a5569896e01"><td class="memItemLeft" align="right" valign="top"><a id="aa3e9534005fd516d941f6a5569896e01"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>$template</b> = strval(rand(1, 1000000))</td></tr>
<tr class="separator:aa3e9534005fd516d941f6a5569896e01"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8b91f75933847c37e369bf9ffb5d4959"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="execute_8php.html#a8b91f75933847c37e369bf9ffb5d4959">$in_fname</a> = &quot;../users/&quot; . $uname . &quot;/&quot; . &quot;temp_in&quot; . $template</td></tr>
<tr class="memitem:a8b91f75933847c37e369bf9ffb5d4959"><td class="memItemLeft" align="right" valign="top"><a id="a8b91f75933847c37e369bf9ffb5d4959"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>$in_fname</b> = &quot;../user_execs/&quot; . $uname . &quot;//temp_sfcode_139213617964/temp_in&quot; . $template</td></tr>
<tr class="separator:a8b91f75933847c37e369bf9ffb5d4959"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa1bfbd27060176201b271918dff57e8f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="execute_8php.html#aa1bfbd27060176201b271918dff57e8f">$file</a> = fopen($in_fname, 'w')</td></tr>
<tr class="memitem:aa1bfbd27060176201b271918dff57e8f"><td class="memItemLeft" align="right" valign="top"><a id="aa1bfbd27060176201b271918dff57e8f"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>$file</b> = fopen($in_fname, 'w')</td></tr>
<tr class="separator:aa1bfbd27060176201b271918dff57e8f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4605dfe484d22f02e4ed7c9ad88262de"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="execute_8php.html#a4605dfe484d22f02e4ed7c9ad88262de">$out_fname</a> = &quot;../users/&quot; . $uname . &quot;/&quot; . &quot;temp_out&quot; . $template</td></tr>
<tr class="memitem:a4605dfe484d22f02e4ed7c9ad88262de"><td class="memItemLeft" align="right" valign="top"><a id="a4605dfe484d22f02e4ed7c9ad88262de"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>$out_fname</b> = &quot;../user_execs/&quot; . $uname . &quot;//temp_sfcode_139213617964/temp_out&quot; . $template</td></tr>
<tr class="separator:a4605dfe484d22f02e4ed7c9ad88262de"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a215383748692ec568ed9ac6a2155f079"><td class="memItemLeft" align="right" valign="top"><a class="el" href="compile_8php.html#a247cbbb16ae0aa6b9c0376f9e758f6fb">if</a>(strcmp($language, &quot;.cpp&quot;)==0) else <a class="el" href="compile_8php.html#a247cbbb16ae0aa6b9c0376f9e758f6fb">if</a>(strcmp($language, &quot;.java&quot;)==0) else <a class="el" href="compile_8php.html#a247cbbb16ae0aa6b9c0376f9e758f6fb">if</a>(strcmp($language, &quot;.py&quot;)==0) if($ret_stat !=0)&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="execute_8php.html#a215383748692ec568ed9ac6a2155f079">else</a></td></tr>
<tr class="memitem:a215383748692ec568ed9ac6a2155f079"><td class="memItemLeft" align="right" valign="top">if(strcmp($language, &quot;.cpp&quot;)==0) else if(strcmp($language, &quot;.java&quot;)==0) else if(strcmp($language, &quot;.py&quot;)==0) if($ret_stat !=0)&#160;</td><td class="memItemRight" valign="bottom"><b>else</b></td></tr>
<tr class="separator:a215383748692ec568ed9ac6a2155f079"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Variable Documentation</h2>
<a id="aa1bfbd27060176201b271918dff57e8f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa1bfbd27060176201b271918dff57e8f">&#9670;&nbsp;</a></span>$file</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">$file = fopen($in_fname, 'w')</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a0722441477f957078ee2437054556cbc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0722441477f957078ee2437054556cbc">&#9670;&nbsp;</a></span>$filename</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">$filename = $postData['file']['filename']</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a8b91f75933847c37e369bf9ffb5d4959"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8b91f75933847c37e369bf9ffb5d4959">&#9670;&nbsp;</a></span>$in_fname</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">$in_fname = &quot;../users/&quot; . $uname . &quot;/&quot; . &quot;temp_in&quot; . $template</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a6533a3606e58291459e9dfec2ad7da21"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6533a3606e58291459e9dfec2ad7da21">&#9670;&nbsp;</a></span>$input_data</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">$input_data = $postData['input_data']</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a83170d318260a5a2e2a79dccdd371b10"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a83170d318260a5a2e2a79dccdd371b10">&#9670;&nbsp;</a></span>$language</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">$language = $postData['file']['language']</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a4605dfe484d22f02e4ed7c9ad88262de"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4605dfe484d22f02e4ed7c9ad88262de">&#9670;&nbsp;</a></span>$out_fname</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">$out_fname = &quot;../users/&quot; . $uname . &quot;/&quot; . &quot;temp_out&quot; . $template</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ab1d99e9211e0764ab2dcf25497fa40e4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab1d99e9211e0764ab2dcf25497fa40e4">&#9670;&nbsp;</a></span>$postData</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">$postData = file_get_contents(&quot;php://input&quot;)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a8a081d1b9ae6e0379850a3996564bb3f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8a081d1b9ae6e0379850a3996564bb3f">&#9670;&nbsp;</a></span>$ret_stat</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">$ret_stat = 0</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aa3e9534005fd516d941f6a5569896e01"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa3e9534005fd516d941f6a5569896e01">&#9670;&nbsp;</a></span>$template</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">$template = strval(rand(1, 1000000))</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a227a9443cabbe5e23cfc10c4371e09d1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a227a9443cabbe5e23cfc10c4371e09d1">&#9670;&nbsp;</a></span>$uname</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">$uname = $postData['file']['username']</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>This script uses the username, name of the code file, language of the code file and the input data (test case) and executes the code, (given that it has already been compiled) using system() function, and returns the output. If the file hasn't been compiled or a runtime error occurs, then the script raises an exception. </p>
</div><h2 class="groupheader">Variable Documentation</h2>
<a id="a215383748692ec568ed9ac6a2155f079"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a215383748692ec568ed9ac6a2155f079">&#9670;&nbsp;</a></span>else</h2>
......@@ -246,14 +121,12 @@ Variables</h2></td></tr>
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="compile_8php.html#a247cbbb16ae0aa6b9c0376f9e758f6fb">if</a> (filesize( $out_fname)==0) else</td>
<td class="memname">if (filesize( $out_fname)==0) else</td>
</tr>
</table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line">{</div>
<div class="line"> <a class="code" href="execute_8php.html#aa1bfbd27060176201b271918dff57e8f">$file</a> = fopen(<a class="code" href="execute_8php.html#a4605dfe484d22f02e4ed7c9ad88262de">$out_fname</a>, <span class="charliteral">&#39;r&#39;</span>)</div>
<div class="ttc" id="aexecute_8php_html_a4605dfe484d22f02e4ed7c9ad88262de"><div class="ttname"><a href="execute_8php.html#a4605dfe484d22f02e4ed7c9ad88262de">$out_fname</a></div><div class="ttdeci">$out_fname</div><div class="ttdef"><b>Definition:</b> execute.php:26</div></div>
<div class="ttc" id="aexecute_8php_html_aa1bfbd27060176201b271918dff57e8f"><div class="ttname"><a href="execute_8php.html#aa1bfbd27060176201b271918dff57e8f">$file</a></div><div class="ttdeci">$file</div><div class="ttdef"><b>Definition:</b> execute.php:22</div></div>
<div class="line"> $file = fopen($out_fname, <span class="charliteral">&#39;r&#39;</span>)</div>
</div><!-- fragment -->
</div>
</div>
......
......@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>sfcode: sfcode/backend/filedelete.php File Reference</title>
<title>sfcode: /opt/lampp/htdocs/sfcode/backend/filedelete.php File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
......@@ -62,7 +62,7 @@ $(function() {
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_c7d2d9efb36c5f0c69f2c16a7a8cf764.html">sfcode</a></li><li class="navelem"><a class="el" href="dir_e11c243fa6565b385f7fc941ce24c288.html">backend</a></li> </ul>
<li class="navelem"><a class="el" href="dir_8c739bbef76d64b22d6b0911c526dd76.html">backend</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
......@@ -75,25 +75,13 @@ $(function() {
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:ab1d99e9211e0764ab2dcf25497fa40e4"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="filedelete_8php.html#ab1d99e9211e0764ab2dcf25497fa40e4">$postData</a> = file_get_contents(&quot;php://input&quot;)</td></tr>
<tr class="memitem:ab1d99e9211e0764ab2dcf25497fa40e4"><td class="memItemLeft" align="right" valign="top"><a id="ab1d99e9211e0764ab2dcf25497fa40e4"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>$postData</b> = file_get_contents(&quot;php://input&quot;)</td></tr>
<tr class="separator:ab1d99e9211e0764ab2dcf25497fa40e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Variable Documentation</h2>
<a id="ab1d99e9211e0764ab2dcf25497fa40e4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab1d99e9211e0764ab2dcf25497fa40e4">&#9670;&nbsp;</a></span>$postData</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">$postData = file_get_contents(&quot;php://input&quot;)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>This script deletes a given code file, or a directory in the user's workspace, given its path. This file also communicates with the MySQL Server to update n_files(file count) of the user, to enforce the maximum limit of 10 files. Hence SQL Injection is taken care of. Deleting a directory deletes all contained files. </p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
......
......@@ -67,10 +67,22 @@ $(function() {
</div><!--header-->
<div class="contents">
<div class="textblock">Here is a list of all documented files with brief descriptions:</div><div class="directory">
<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span>]</div><table class="directory">
<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span><span onclick="javascript:toggleLevel(3);">3</span>]</div><table class="directory">
<tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_0_" class="arrow" onclick="toggleFolder('0_')">&#9660;</span><span id="img_0_" class="iconfopen" onclick="toggleFolder('0_')">&#160;</span><a class="el" href="dir_8c739bbef76d64b22d6b0911c526dd76.html" target="_self">backend</a></td><td class="desc"></td></tr>
<tr id="row_0_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="login_8php.html" target="_self">login.php</a></td><td class="desc"></td></tr>
<tr id="row_0_1_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="register_8php.html" target="_self">register.php</a></td><td class="desc"></td></tr>
<tr id="row_0_0_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_0_" class="arrow" onclick="toggleFolder('0_0_')">&#9660;</span><span id="img_0_0_" class="iconfopen" onclick="toggleFolder('0_0_')">&#160;</span><a class="el" href="dir_bd46ce877abc65888d3ac8c7f1e44826.html" target="_self">questions</a></td><td class="desc"></td></tr>
<tr id="row_0_0_0_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="check__output_8php.html" target="_self">check_output.php</a></td><td class="desc"></td></tr>
<tr id="row_0_0_1_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="get__questions_8php.html" target="_self">get_questions.php</a></td><td class="desc"></td></tr>
<tr id="row_0_0_2_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="question__save_8php.html" target="_self">question_save.php</a></td><td class="desc"></td></tr>
<tr id="row_0_1_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="database_8php.html" target="_self">database.php</a></td><td class="desc"></td></tr>
<tr id="row_0_2_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="dir__tree_8php.html" target="_self">dir_tree.php</a></td><td class="desc"></td></tr>
<tr id="row_0_3_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="execute_8php.html" target="_self">execute.php</a></td><td class="desc"></td></tr>
<tr id="row_0_4_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="filedelete_8php.html" target="_self">filedelete.php</a></td><td class="desc"></td></tr>
<tr id="row_0_5_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="filesave_8php.html" target="_self">filesave.php</a></td><td class="desc"></td></tr>
<tr id="row_0_6_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="get__file_8php.html" target="_self">get_file.php</a></td><td class="desc"></td></tr>
<tr id="row_0_7_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="login_8php.html" target="_self">login.php</a></td><td class="desc"></td></tr>
<tr id="row_0_8_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="newdir_8php.html" target="_self">newdir.php</a></td><td class="desc"></td></tr>
<tr id="row_0_9_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="register_8php.html" target="_self">register.php</a></td><td class="desc"></td></tr>
<tr id="row_0_10_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="update__correct_8php.html" target="_self">update_correct.php</a></td><td class="desc"></td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->
......
......@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>sfcode: sfcode/backend/filesave.php File Reference</title>
<title>sfcode: /opt/lampp/htdocs/sfcode/backend/filesave.php File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
......@@ -62,7 +62,7 @@ $(function() {
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_c7d2d9efb36c5f0c69f2c16a7a8cf764.html">sfcode</a></li><li class="navelem"><a class="el" href="dir_e11c243fa6565b385f7fc941ce24c288.html">backend</a></li> </ul>
<li class="navelem"><a class="el" href="dir_8c739bbef76d64b22d6b0911c526dd76.html">backend</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
......@@ -75,25 +75,13 @@ $(function() {
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:ab1d99e9211e0764ab2dcf25497fa40e4"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="filesave_8php.html#ab1d99e9211e0764ab2dcf25497fa40e4">$postData</a> = file_get_contents(&quot;php://input&quot;)</td></tr>
<tr class="memitem:ab1d99e9211e0764ab2dcf25497fa40e4"><td class="memItemLeft" align="right" valign="top"><a id="ab1d99e9211e0764ab2dcf25497fa40e4"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>$postData</b> = file_get_contents(&quot;php://input&quot;)</td></tr>
<tr class="separator:ab1d99e9211e0764ab2dcf25497fa40e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Variable Documentation</h2>
<a id="ab1d99e9211e0764ab2dcf25497fa40e4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab1d99e9211e0764ab2dcf25497fa40e4">&#9670;&nbsp;</a></span>$postData</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">$postData = file_get_contents(&quot;php://input&quot;)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>This script saves a given code file for a user, given it's path. If the file is an Attempt to a question, it is saved in the separate questions directory(part of the workspace). This file also communicates with the MySQL Server to update n_files(file count) of the user, to enforce the maximum limit of 10 files. Hence SQL injection is taken care of. </p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
......
......@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>sfcode: sfcode/backend/get_file.php File Reference</title>
<title>sfcode: /opt/lampp/htdocs/sfcode/backend/get_file.php File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
......@@ -62,7 +62,7 @@ $(function() {
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_c7d2d9efb36c5f0c69f2c16a7a8cf764.html">sfcode</a></li><li class="navelem"><a class="el" href="dir_e11c243fa6565b385f7fc941ce24c288.html">backend</a></li> </ul>
<li class="navelem"><a class="el" href="dir_8c739bbef76d64b22d6b0911c526dd76.html">backend</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
......@@ -75,74 +75,24 @@ $(function() {
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:ab1d99e9211e0764ab2dcf25497fa40e4"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="get__file_8php.html#ab1d99e9211e0764ab2dcf25497fa40e4">$postData</a> = file_get_contents(&quot;php://input&quot;)</td></tr>
<tr class="memitem:ab1d99e9211e0764ab2dcf25497fa40e4"><td class="memItemLeft" align="right" valign="top"><a id="ab1d99e9211e0764ab2dcf25497fa40e4"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>$postData</b> = file_get_contents(&quot;php://input&quot;)</td></tr>
<tr class="separator:ab1d99e9211e0764ab2dcf25497fa40e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a227a9443cabbe5e23cfc10c4371e09d1"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="get__file_8php.html#a227a9443cabbe5e23cfc10c4371e09d1">$uname</a> = $postData['username']</td></tr>
<tr class="memitem:a227a9443cabbe5e23cfc10c4371e09d1"><td class="memItemLeft" align="right" valign="top"><a id="a227a9443cabbe5e23cfc10c4371e09d1"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>$uname</b> = $postData['username']</td></tr>
<tr class="separator:a227a9443cabbe5e23cfc10c4371e09d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3f910b7833f09507df883bf8b04d3bdb"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="get__file_8php.html#a3f910b7833f09507df883bf8b04d3bdb">$f_path</a> = $postData['file_path']</td></tr>
<tr class="memitem:a3f910b7833f09507df883bf8b04d3bdb"><td class="memItemLeft" align="right" valign="top"><a id="a3f910b7833f09507df883bf8b04d3bdb"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>$f_path</b> = $postData['file_path']</td></tr>
<tr class="separator:a3f910b7833f09507df883bf8b04d3bdb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0a4baf0b22973c07685c3981f0d17fc4"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="get__file_8php.html#a0a4baf0b22973c07685c3981f0d17fc4">$path</a> = &quot;../users/&quot; . $uname . &quot;/&quot; . $f_path</td></tr>
<tr class="memitem:a0a4baf0b22973c07685c3981f0d17fc4"><td class="memItemLeft" align="right" valign="top"><a id="a0a4baf0b22973c07685c3981f0d17fc4"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>$path</b> = &quot;../users/&quot; . $uname . &quot;/&quot; . $f_path</td></tr>
<tr class="separator:a0a4baf0b22973c07685c3981f0d17fc4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aba62ef45f8e65bde63a30f4b93459af6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="compile_8php.html#a247cbbb16ae0aa6b9c0376f9e758f6fb">if</a>(file_exists($path))&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="get__file_8php.html#aba62ef45f8e65bde63a30f4b93459af6">else</a></td></tr>
<tr class="memitem:aba62ef45f8e65bde63a30f4b93459af6"><td class="memItemLeft" align="right" valign="top">if(file_exists($path))&#160;</td><td class="memItemRight" valign="bottom"><b>else</b></td></tr>
<tr class="separator:aba62ef45f8e65bde63a30f4b93459af6"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Variable Documentation</h2>
<a id="a3f910b7833f09507df883bf8b04d3bdb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3f910b7833f09507df883bf8b04d3bdb">&#9670;&nbsp;</a></span>$f_path</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">$f_path = $postData['file_path']</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a0a4baf0b22973c07685c3981f0d17fc4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0a4baf0b22973c07685c3981f0d17fc4">&#9670;&nbsp;</a></span>$path</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">$path = &quot;../users/&quot; . $uname . &quot;/&quot; . $f_path</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ab1d99e9211e0764ab2dcf25497fa40e4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab1d99e9211e0764ab2dcf25497fa40e4">&#9670;&nbsp;</a></span>$postData</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">$postData = file_get_contents(&quot;php://input&quot;)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a227a9443cabbe5e23cfc10c4371e09d1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a227a9443cabbe5e23cfc10c4371e09d1">&#9670;&nbsp;</a></span>$uname</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">$uname = $postData['username']</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>This script uses the username and file path in the user's workspace to return the contents in the requested file (code file). If the file path is not found on the server, a 404 HTTP error is raised. </p>
</div><h2 class="groupheader">Variable Documentation</h2>
<a id="aba62ef45f8e65bde63a30f4b93459af6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aba62ef45f8e65bde63a30f4b93459af6">&#9670;&nbsp;</a></span>else</h2>
......@@ -150,7 +100,7 @@ Variables</h2></td></tr>
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="compile_8php.html#a247cbbb16ae0aa6b9c0376f9e758f6fb">if</a> (file_exists( $path)) else</td>
<td class="memname">if (file_exists( $path)) else</td>
</tr>
</table>
</div><div class="memdoc">
......
......@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>sfcode: sfcode/backend/questions/get_questions.php File Reference</title>
<title>sfcode: /opt/lampp/htdocs/sfcode/backend/questions/get_questions.php File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
......@@ -62,14 +62,47 @@ $(function() {
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_c7d2d9efb36c5f0c69f2c16a7a8cf764.html">sfcode</a></li><li class="navelem"><a class="el" href="dir_e11c243fa6565b385f7fc941ce24c288.html">backend</a></li><li class="navelem"><a class="el" href="dir_ed46f92be6aa1b3f4f5e8ce6156cf9f6.html">questions</a></li> </ul>
<li class="navelem"><a class="el" href="dir_8c739bbef76d64b22d6b0911c526dd76.html">backend</a></li><li class="navelem"><a class="el" href="dir_bd46ce877abc65888d3ac8c7f1e44826.html">questions</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#var-members">Variables</a> </div>
<div class="headertitle">
<div class="title">get_questions.php File Reference</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:a1ad0ffe3fa0755e56a1a6bb40c232b8a"><td class="memItemLeft" align="right" valign="top"><a id="a1ad0ffe3fa0755e56a1a6bb40c232b8a"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>$sql2</b> = &quot;SELECT * FROM questions&quot;</td></tr>
<tr class="separator:a1ad0ffe3fa0755e56a1a6bb40c232b8a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6efc15b5a2314dd4b5aaa556a375c6d6"><td class="memItemLeft" align="right" valign="top"><a id="a6efc15b5a2314dd4b5aaa556a375c6d6"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>$data</b> = array()</td></tr>
<tr class="separator:a6efc15b5a2314dd4b5aaa556a375c6d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a23e84a9d8c8378a55b6a1079882cbb35"><td class="memItemLeft" align="right" valign="top">if($result=$mysqli-&gt;query($sql2))&#160;</td><td class="memItemRight" valign="bottom"><b>else</b></td></tr>
<tr class="separator:a23e84a9d8c8378a55b6a1079882cbb35"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>This script checks the questions present in the MySQL database, and sends the question info (title, problem statement, start and end time, and the author's username) to the frontend. For this the script communicates with the MySQL server. Thus SQL injection has been handled. </p>
</div><h2 class="groupheader">Variable Documentation</h2>
<a id="a23e84a9d8c8378a55b6a1079882cbb35"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a23e84a9d8c8378a55b6a1079882cbb35">&#9670;&nbsp;</a></span>else</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">if ( $result=$mysqli-&gt;query( $sql2)) else</td>
</tr>
</table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line">{</div>
<div class="line"> http_response_code(404)</div>
</div><!-- fragment -->
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
......
......@@ -80,7 +80,7 @@ Variables</h2></td></tr>
<tr class="separator:ab1d99e9211e0764ab2dcf25497fa40e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>This script is for user login using username and password. Here, we authenticate user credentials with MySQL server. </p>
<div class="textblock"><p>This script is for user login using username and password. Here, we authenticate user credentials with MySQL server. Returns a 404 error if username/password is incorrect. </p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
......
......@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>sfcode: sfcode/backend/newdir.php File Reference</title>
<title>sfcode: /opt/lampp/htdocs/sfcode/backend/newdir.php File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
......@@ -62,7 +62,7 @@ $(function() {
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_c7d2d9efb36c5f0c69f2c16a7a8cf764.html">sfcode</a></li><li class="navelem"><a class="el" href="dir_e11c243fa6565b385f7fc941ce24c288.html">backend</a></li> </ul>
<li class="navelem"><a class="el" href="dir_8c739bbef76d64b22d6b0911c526dd76.html">backend</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
......@@ -75,25 +75,13 @@ $(function() {
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:ab1d99e9211e0764ab2dcf25497fa40e4"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="newdir_8php.html#ab1d99e9211e0764ab2dcf25497fa40e4">$postData</a> = file_get_contents(&quot;php://input&quot;)</td></tr>
<tr class="memitem:ab1d99e9211e0764ab2dcf25497fa40e4"><td class="memItemLeft" align="right" valign="top"><a id="ab1d99e9211e0764ab2dcf25497fa40e4"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>$postData</b> = file_get_contents(&quot;php://input&quot;)</td></tr>
<tr class="separator:ab1d99e9211e0764ab2dcf25497fa40e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Variable Documentation</h2>
<a id="ab1d99e9211e0764ab2dcf25497fa40e4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab1d99e9211e0764ab2dcf25497fa40e4">&#9670;&nbsp;</a></span>$postData</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">$postData = file_get_contents(&quot;php://input&quot;)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>This script creates a new directory as and where, the user wants it to be made. Returns 0 in case a directory with the same name and path already exists. Returns 1 in case of a succesful operation. </p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
......
......@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>sfcode: sfcode/backend/questions/question_save.php File Reference</title>
<title>sfcode: /opt/lampp/htdocs/sfcode/backend/questions/question_save.php File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
......@@ -62,7 +62,7 @@ $(function() {
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_c7d2d9efb36c5f0c69f2c16a7a8cf764.html">sfcode</a></li><li class="navelem"><a class="el" href="dir_e11c243fa6565b385f7fc941ce24c288.html">backend</a></li><li class="navelem"><a class="el" href="dir_ed46f92be6aa1b3f4f5e8ce6156cf9f6.html">questions</a></li> </ul>
<li class="navelem"><a class="el" href="dir_8c739bbef76d64b22d6b0911c526dd76.html">backend</a></li><li class="navelem"><a class="el" href="dir_bd46ce877abc65888d3ac8c7f1e44826.html">questions</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
......@@ -75,25 +75,13 @@ $(function() {
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:ab1d99e9211e0764ab2dcf25497fa40e4"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="question__save_8php.html#ab1d99e9211e0764ab2dcf25497fa40e4">$postData</a> = file_get_contents(&quot;php://input&quot;)</td></tr>
<tr class="memitem:ab1d99e9211e0764ab2dcf25497fa40e4"><td class="memItemLeft" align="right" valign="top"><a id="ab1d99e9211e0764ab2dcf25497fa40e4"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>$postData</b> = file_get_contents(&quot;php://input&quot;)</td></tr>
<tr class="separator:ab1d99e9211e0764ab2dcf25497fa40e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Variable Documentation</h2>
<a id="ab1d99e9211e0764ab2dcf25497fa40e4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab1d99e9211e0764ab2dcf25497fa40e4">&#9670;&nbsp;</a></span>$postData</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">$postData = file_get_contents(&quot;php://input&quot;)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>This script saves a question in the MySQL database after a user creates it. It uses parameters like, author's username, problem statement, testcases, start and end time, etc. </p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
......
......@@ -66,12 +66,25 @@ $(function() {
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#var-members">Variables</a> </div>
<div class="headertitle">
<div class="title">register.php File Reference</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:ab1d99e9211e0764ab2dcf25497fa40e4"><td class="memItemLeft" align="right" valign="top"><a id="ab1d99e9211e0764ab2dcf25497fa40e4"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>$postData</b> = file_get_contents(&quot;php://input&quot;)</td></tr>
<tr class="separator:ab1d99e9211e0764ab2dcf25497fa40e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>This script registers a user using a username, password, name, and email (provided through POST). This script communicates with the MySQL server to save user data. </p>
<div class="textblock"><p>This script registers a user using a username, password, name, and email. This script communicates with the MySQL server to save user data. Passowrd is hashed, and SQL injection is taken care of. The process of registering involves -</p><ol type="1">
<li>An insert operation into the users table, in the database.</li>
<li>Creation of directories, required to store files, executables and question attempts made by the user.</li>
</ol>
<p>Returns a 404 error if username already exists. </p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
......
var searchData=
[
['login_2ephp_0',['login.php',['../login_8php.html',1,'']]]
['check_5foutput_2ephp_0',['check_output.php',['../check__output_8php.html',1,'']]]
];
var searchData=
[
['register_2ephp_1',['register.php',['../register_8php.html',1,'']]]
['database_2ephp_1',['database.php',['../database_8php.html',1,'']]],
['dir_5ftree_2ephp_2',['dir_tree.php',['../dir__tree_8php.html',1,'']]]
];
var searchData=
[
['temp_2',['Temp',['../md__opt_lampp_htdocs_sfcode_README.html',1,'']]]
['execute_2ephp_3',['execute.php',['../execute_8php.html',1,'']]]
];
var searchData=
[
['login_2ephp_3',['login.php',['../login_8php.html',1,'']]]
['filedelete_2ephp_4',['filedelete.php',['../filedelete_8php.html',1,'']]],
['filesave_2ephp_5',['filesave.php',['../filesave_8php.html',1,'']]]
];
var searchData=
[
['register_2ephp_4',['register.php',['../register_8php.html',1,'']]]
['get_5ffile_2ephp_6',['get_file.php',['../get__file_8php.html',1,'']]],
['get_5fquestions_2ephp_7',['get_questions.php',['../get__questions_8php.html',1,'']]]
];
var searchData=
[
['temp_5',['Temp',['../md__opt_lampp_htdocs_sfcode_README.html',1,'']]]
['login_2ephp_8',['login.php',['../login_8php.html',1,'']]]
];
var searchData=
[
['get_5ffile_2ephp_34',['get_file.php',['../get__file_8php.html',1,'']]],
['get_5fquestions_2ephp_35',['get_questions.php',['../get__questions_8php.html',1,'']]]
['newdir_2ephp_9',['newdir.php',['../newdir_8php.html',1,'']]]
];
var searchData=
[
['how_20to_20contribute_36',['How to contribute',['../md_sfcode_src_assets_codemirror_codemirror_5_58_2_CONTRIBUTING.html',1,'']]]
['question_5fsave_2ephp_10',['question_save.php',['../question__save_8php.html',1,'']]]
];
var searchData=
[
['if_37',['if',['../compile_8php.html#a247cbbb16ae0aa6b9c0376f9e758f6fb',1,'compile.php']]]
['register_2ephp_11',['register.php',['../register_8php.html',1,'']]]
];
var searchData=
[
['list_5ffiles_2ephp_38',['list_files.php',['../list__files_8php.html',1,'']]],
['login_2ephp_39',['login.php',['../login_8php.html',1,'']]]
['temp_12',['Temp',['../md__opt_lampp_htdocs_sfcode_README.html',1,'']]]
];
var searchData=
[
['newdir_2ephp_40',['newdir.php',['../newdir_8php.html',1,'']]]
['update_5fcorrect_2ephp_13',['update_correct.php',['../update__correct_8php.html',1,'']]]
];
var searchData=
[
['login_2ephp_3',['login.php',['../login_8php.html',1,'']]]
['check_5foutput_2ephp_14',['check_output.php',['../check__output_8php.html',1,'']]]
];
var searchData=
[
['register_2ephp_4',['register.php',['../register_8php.html',1,'']]]
['database_2ephp_15',['database.php',['../database_8php.html',1,'']]],
['dir_5ftree_2ephp_16',['dir_tree.php',['../dir__tree_8php.html',1,'']]]
];
var searchData=
[
['execute_2ephp_50',['execute.php',['../execute_8php.html',1,'']]]
['execute_2ephp_17',['execute.php',['../execute_8php.html',1,'']]]
];
var searchData=
[
['filedelete_2ephp_51',['filedelete.php',['../filedelete_8php.html',1,'']]],
['filesave_2ephp_52',['filesave.php',['../filesave_8php.html',1,'']]]
['filedelete_2ephp_18',['filedelete.php',['../filedelete_8php.html',1,'']]],
['filesave_2ephp_19',['filesave.php',['../filesave_8php.html',1,'']]]
];
var searchData=
[
['get_5ffile_2ephp_53',['get_file.php',['../get__file_8php.html',1,'']]],
['get_5fquestions_2ephp_54',['get_questions.php',['../get__questions_8php.html',1,'']]]
['get_5ffile_2ephp_20',['get_file.php',['../get__file_8php.html',1,'']]],
['get_5fquestions_2ephp_21',['get_questions.php',['../get__questions_8php.html',1,'']]]
];
var searchData=
[
['list_5ffiles_2ephp_55',['list_files.php',['../list__files_8php.html',1,'']]],
['login_2ephp_56',['login.php',['../login_8php.html',1,'']]]
['login_2ephp_22',['login.php',['../login_8php.html',1,'']]]
];
var searchData=
[
['newdir_2ephp_57',['newdir.php',['../newdir_8php.html',1,'']]]
['newdir_2ephp_23',['newdir.php',['../newdir_8php.html',1,'']]]
];
var searchData=
[
['question_5fsave_2ephp_58',['question_save.php',['../question__save_8php.html',1,'']]]
['question_5fsave_2ephp_24',['question_save.php',['../question__save_8php.html',1,'']]]
];
var searchData=
[
['readme_2emd_59',['README.md',['../sfcode_2README_8md.html',1,'(Global Namespace)'],['../sfcode_2src_2assets_2codemirror_2codemirror-5_858_82_2README_8md.html',1,'(Global Namespace)']]],
['register_2ephp_60',['register.php',['../register_8php.html',1,'']]]
['register_2ephp_25',['register.php',['../register_8php.html',1,'']]]
];
......@@ -2,12 +2,36 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="files_9.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
createResults();
/* @license-end */
</script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
window.addEventListener("message", function(event) {
if (event.data == "take_focus") {
var elem = searchResults.NavNext(0);
if (elem) elem.focus();
}
});
/* @license-end */
</script>
</div>
</body>
</html>
var searchData=
[
['update_5fcorrect_2ephp_26',['update_correct.php',['../update__correct_8php.html',1,'']]]
];
var searchData=
[
['temp_5',['Temp',['../md__opt_lampp_htdocs_sfcode_README.html',1,'']]]
['temp_27',['Temp',['../md__opt_lampp_htdocs_sfcode_README.html',1,'']]]
];
var indexSectionsWithContent =
{
0: "lrt",
1: "lr",
0: "cdefglnqrtu",
1: "cdefglnqru",
2: "t"
};
......
......@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>sfcode: Main Page</title>
<title>sfcode: /opt/lampp/htdocs/sfcode/backend/update_correct.php File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
......@@ -46,7 +46,6 @@ $(function() {
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
......@@ -61,12 +60,28 @@ $(function() {
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_8c739bbef76d64b22d6b0911c526dd76.html">backend</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#var-members">Variables</a> </div>
<div class="headertitle">
<div class="title">sfcode Documentation</div> </div>
<div class="title">update_correct.php File Reference</div> </div>
</div><!--header-->
<div class="contents">
</div><!-- contents -->
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:ab1d99e9211e0764ab2dcf25497fa40e4"><td class="memItemLeft" align="right" valign="top"><a id="ab1d99e9211e0764ab2dcf25497fa40e4"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>$postData</b> = file_get_contents(&quot;php://input&quot;)</td></tr>
<tr class="separator:ab1d99e9211e0764ab2dcf25497fa40e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>This script updates the userdata based on whether the most recent attempt made by the user was successful or unsuccessful. An attempt is successful if and only if all testcases produce correct output. </p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
......
\hypertarget{check__output_8php}{}\doxysection{/opt/lampp/htdocs/sfcode/backend/questions/check\+\_\+output.php File Reference}
\label{check__output_8php}\index{/opt/lampp/htdocs/sfcode/backend/questions/check\_output.php@{/opt/lampp/htdocs/sfcode/backend/questions/check\_output.php}}
\doxysubsection*{Variables}
\begin{DoxyCompactItemize}
\item
\mbox{\Hypertarget{check__output_8php_ab1d99e9211e0764ab2dcf25497fa40e4}\label{check__output_8php_ab1d99e9211e0764ab2dcf25497fa40e4}}
{\bfseries \$post\+Data} = file\+\_\+get\+\_\+contents(\char`\"{}php\+://input\char`\"{})
\end{DoxyCompactItemize}
\doxysubsection{Detailed Description}
This script compares the output generated by users\textquotesingle{}s code and the correct output, for the specified testcase. This script also ensures that the change in rating is handled based on if the testcase is correct. For this the script communicates with the My\+SQL server. Thus SQL injection has been handled.
\ No newline at end of file
\hypertarget{database_8php}{}\doxysection{sfcode/backend/database.php File Reference}
\label{database_8php}\index{sfcode/backend/database.php@{sfcode/backend/database.php}}
\hypertarget{database_8php}{}\doxysection{/opt/lampp/htdocs/sfcode/backend/database.php File Reference}
\label{database_8php}\index{/opt/lampp/htdocs/sfcode/backend/database.php@{/opt/lampp/htdocs/sfcode/backend/database.php}}
\doxysubsection*{Variables}
\begin{DoxyCompactItemize}
\item
\mbox{\hyperlink{database_8php_a127f40bba7579be61826b0ebd636b5b1}{\$db\+\_\+host}} = \textquotesingle{}localhost\textquotesingle{}
\mbox{\Hypertarget{database_8php_a127f40bba7579be61826b0ebd636b5b1}\label{database_8php_a127f40bba7579be61826b0ebd636b5b1}}
{\bfseries \$db\+\_\+host} = \textquotesingle{}localhost\textquotesingle{}
\item
\mbox{\hyperlink{database_8php_a820e0b38cf4374967d8018835e9b755d}{\$db\+\_\+username}} = \textquotesingle{}root\textquotesingle{}
\mbox{\Hypertarget{database_8php_a820e0b38cf4374967d8018835e9b755d}\label{database_8php_a820e0b38cf4374967d8018835e9b755d}}
{\bfseries \$db\+\_\+username} = \textquotesingle{}root\textquotesingle{}
\item
\mbox{\hyperlink{database_8php_a2962c2bda65ca19dd4dd12d7160f1bf8}{\$db\+\_\+password}} = \textquotesingle{}\textquotesingle{}
\mbox{\Hypertarget{database_8php_a2962c2bda65ca19dd4dd12d7160f1bf8}\label{database_8php_a2962c2bda65ca19dd4dd12d7160f1bf8}}
{\bfseries \$db\+\_\+password} = \textquotesingle{}\textquotesingle{}
\item
\mbox{\hyperlink{database_8php_a26dcb19f4431598ddd5f58147f131bee}{\$db\+\_\+name}} = \textquotesingle{}ssl\+\_\+database\textquotesingle{}
\mbox{\Hypertarget{database_8php_a26dcb19f4431598ddd5f58147f131bee}\label{database_8php_a26dcb19f4431598ddd5f58147f131bee}}
{\bfseries \$db\+\_\+name} = \textquotesingle{}ssl\+\_\+database\textquotesingle{}
\item
\mbox{\hyperlink{database_8php_a580989e8e3521433691a0351287f6315}{\$mysqli}} = new mysqli(\$db\+\_\+host, \$db\+\_\+username, \$db\+\_\+password,\$db\+\_\+name)
\mbox{\Hypertarget{database_8php_a580989e8e3521433691a0351287f6315}\label{database_8php_a580989e8e3521433691a0351287f6315}}
{\bfseries \$mysqli} = new mysqli(\$db\+\_\+host, \$db\+\_\+username, \$db\+\_\+password,\$db\+\_\+name)
\end{DoxyCompactItemize}
\doxysubsection{Variable Documentation}
\mbox{\Hypertarget{database_8php_a127f40bba7579be61826b0ebd636b5b1}\label{database_8php_a127f40bba7579be61826b0ebd636b5b1}}
\index{database.php@{database.php}!\$db\_host@{\$db\_host}}
\index{\$db\_host@{\$db\_host}!database.php@{database.php}}
\doxysubsubsection{\texorpdfstring{\$db\_host}{$db\_host}}
{\footnotesize\ttfamily \$db\+\_\+host = \textquotesingle{}localhost\textquotesingle{}}
\mbox{\Hypertarget{database_8php_a26dcb19f4431598ddd5f58147f131bee}\label{database_8php_a26dcb19f4431598ddd5f58147f131bee}}
\index{database.php@{database.php}!\$db\_name@{\$db\_name}}
\index{\$db\_name@{\$db\_name}!database.php@{database.php}}
\doxysubsubsection{\texorpdfstring{\$db\_name}{$db\_name}}
{\footnotesize\ttfamily \$db\+\_\+name = \textquotesingle{}ssl\+\_\+database\textquotesingle{}}
\mbox{\Hypertarget{database_8php_a2962c2bda65ca19dd4dd12d7160f1bf8}\label{database_8php_a2962c2bda65ca19dd4dd12d7160f1bf8}}
\index{database.php@{database.php}!\$db\_password@{\$db\_password}}
\index{\$db\_password@{\$db\_password}!database.php@{database.php}}
\doxysubsubsection{\texorpdfstring{\$db\_password}{$db\_password}}
{\footnotesize\ttfamily \$db\+\_\+password = \textquotesingle{}\textquotesingle{}}
\mbox{\Hypertarget{database_8php_a820e0b38cf4374967d8018835e9b755d}\label{database_8php_a820e0b38cf4374967d8018835e9b755d}}
\index{database.php@{database.php}!\$db\_username@{\$db\_username}}
\index{\$db\_username@{\$db\_username}!database.php@{database.php}}
\doxysubsubsection{\texorpdfstring{\$db\_username}{$db\_username}}
{\footnotesize\ttfamily \$db\+\_\+username = \textquotesingle{}root\textquotesingle{}}
\mbox{\Hypertarget{database_8php_a580989e8e3521433691a0351287f6315}\label{database_8php_a580989e8e3521433691a0351287f6315}}
\index{database.php@{database.php}!\$mysqli@{\$mysqli}}
\index{\$mysqli@{\$mysqli}!database.php@{database.php}}
\doxysubsubsection{\texorpdfstring{\$mysqli}{$mysqli}}
{\footnotesize\ttfamily \$mysqli = new mysqli(\$db\+\_\+host, \$db\+\_\+username, \$db\+\_\+password,\$db\+\_\+name)}
\doxysubsection{Detailed Description}
This is the default script to connect with the My\+SQL server in the backend.
\ No newline at end of file
\hypertarget{dir__tree_8php}{}\doxysection{sfcode/backend/dir\+\_\+tree.php File Reference}
\label{dir__tree_8php}\index{sfcode/backend/dir\_tree.php@{sfcode/backend/dir\_tree.php}}
\hypertarget{dir__tree_8php}{}\doxysection{/opt/lampp/htdocs/sfcode/backend/dir\+\_\+tree.php File Reference}
\label{dir__tree_8php}\index{/opt/lampp/htdocs/sfcode/backend/dir\_tree.php@{/opt/lampp/htdocs/sfcode/backend/dir\_tree.php}}
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item
\mbox{\hyperlink{dir__tree_8php_a202e5414a83f8a465d58061268174166}{dir\+To\+Array}} (\$dir)
\mbox{\Hypertarget{dir__tree_8php_a202e5414a83f8a465d58061268174166}\label{dir__tree_8php_a202e5414a83f8a465d58061268174166}}
{\bfseries dir\+To\+Array} (\$dir)
\end{DoxyCompactItemize}
\doxysubsection*{Variables}
\begin{DoxyCompactItemize}
\item
\mbox{\hyperlink{dir__tree_8php_ab1d99e9211e0764ab2dcf25497fa40e4}{\$post\+Data}} = file\+\_\+get\+\_\+contents(\char`\"{}php\+://input\char`\"{})
\mbox{\Hypertarget{dir__tree_8php_ab1d99e9211e0764ab2dcf25497fa40e4}\label{dir__tree_8php_ab1d99e9211e0764ab2dcf25497fa40e4}}
{\bfseries \$post\+Data} = file\+\_\+get\+\_\+contents(\char`\"{}php\+://input\char`\"{})
\item
\mbox{\hyperlink{dir__tree_8php_a227a9443cabbe5e23cfc10c4371e09d1}{\$uname}} = \$post\+Data\mbox{[}\textquotesingle{}username\textquotesingle{}\mbox{]}
\mbox{\Hypertarget{dir__tree_8php_a227a9443cabbe5e23cfc10c4371e09d1}\label{dir__tree_8php_a227a9443cabbe5e23cfc10c4371e09d1}}
{\bfseries \$uname} = \$post\+Data\mbox{[}\textquotesingle{}username\textquotesingle{}\mbox{]}
\item
\mbox{\hyperlink{dir__tree_8php_ad86bfd361a21d3818b7dcaf19fb6a4bb}{\$\+Dir}} = \char`\"{}../users/\char`\"{} . \$uname
\end{DoxyCompactItemize}
\doxysubsection{Function Documentation}
\mbox{\Hypertarget{dir__tree_8php_a202e5414a83f8a465d58061268174166}\label{dir__tree_8php_a202e5414a83f8a465d58061268174166}}
\index{dir\_tree.php@{dir\_tree.php}!dirToArray@{dirToArray}}
\index{dirToArray@{dirToArray}!dir\_tree.php@{dir\_tree.php}}
\doxysubsubsection{\texorpdfstring{dirToArray()}{dirToArray()}}
{\footnotesize\ttfamily dir\+To\+Array (\begin{DoxyParamCaption}\item[{}]{\$dir }\end{DoxyParamCaption})}
\doxysubsection{Variable Documentation}
\mbox{\Hypertarget{dir__tree_8php_ad86bfd361a21d3818b7dcaf19fb6a4bb}\label{dir__tree_8php_ad86bfd361a21d3818b7dcaf19fb6a4bb}}
\index{dir\_tree.php@{dir\_tree.php}!\$Dir@{\$Dir}}
\index{\$Dir@{\$Dir}!dir\_tree.php@{dir\_tree.php}}
\doxysubsubsection{\texorpdfstring{\$Dir}{$Dir}}
{\footnotesize\ttfamily \$Dir = \char`\"{}../users/\char`\"{} . \$uname}
\mbox{\Hypertarget{dir__tree_8php_ab1d99e9211e0764ab2dcf25497fa40e4}\label{dir__tree_8php_ab1d99e9211e0764ab2dcf25497fa40e4}}
\index{dir\_tree.php@{dir\_tree.php}!\$postData@{\$postData}}
\index{\$postData@{\$postData}!dir\_tree.php@{dir\_tree.php}}
\doxysubsubsection{\texorpdfstring{\$postData}{$postData}}
{\footnotesize\ttfamily \$post\+Data = file\+\_\+get\+\_\+contents(\char`\"{}php\+://input\char`\"{})}
{\bfseries \$\+Dir} = \char`\"{}../users/\char`\"{} . \$uname
\end{DoxyCompactItemize}
\mbox{\Hypertarget{dir__tree_8php_a227a9443cabbe5e23cfc10c4371e09d1}\label{dir__tree_8php_a227a9443cabbe5e23cfc10c4371e09d1}}
\index{dir\_tree.php@{dir\_tree.php}!\$uname@{\$uname}}
\index{\$uname@{\$uname}!dir\_tree.php@{dir\_tree.php}}
\doxysubsubsection{\texorpdfstring{\$uname}{$uname}}
{\footnotesize\ttfamily \$uname = \$post\+Data\mbox{[}\textquotesingle{}username\textquotesingle{}\mbox{]}}
\doxysubsection{Detailed Description}
This script returns the directory tree of a user\textquotesingle{}s workspace, given the username. It returns a nested array in JSON form, after using the recursive function called dir\+To\+Array().
\ No newline at end of file
\hypertarget{execute_8php}{}\doxysection{sfcode/backend/execute.php File Reference}
\label{execute_8php}\index{sfcode/backend/execute.php@{sfcode/backend/execute.php}}
\hypertarget{execute_8php}{}\doxysection{/opt/lampp/htdocs/sfcode/backend/execute.php File Reference}
\label{execute_8php}\index{/opt/lampp/htdocs/sfcode/backend/execute.php@{/opt/lampp/htdocs/sfcode/backend/execute.php}}
\doxysubsection*{Variables}
\begin{DoxyCompactItemize}
\item
\mbox{\hyperlink{execute_8php_ab1d99e9211e0764ab2dcf25497fa40e4}{\$post\+Data}} = file\+\_\+get\+\_\+contents(\char`\"{}php\+://input\char`\"{})
\item
\mbox{\hyperlink{execute_8php_a227a9443cabbe5e23cfc10c4371e09d1}{\$uname}} = \$post\+Data\mbox{[}\textquotesingle{}file\textquotesingle{}\mbox{]}\mbox{[}\textquotesingle{}username\textquotesingle{}\mbox{]}
\mbox{\Hypertarget{execute_8php_ab1d99e9211e0764ab2dcf25497fa40e4}\label{execute_8php_ab1d99e9211e0764ab2dcf25497fa40e4}}
{\bfseries \$post\+Data} = file\+\_\+get\+\_\+contents(\char`\"{}php\+://input\char`\"{})
\item
\mbox{\hyperlink{execute_8php_a0722441477f957078ee2437054556cbc}{\$filename}} = \$post\+Data\mbox{[}\textquotesingle{}file\textquotesingle{}\mbox{]}\mbox{[}\textquotesingle{}filename\textquotesingle{}\mbox{]}
\mbox{\Hypertarget{execute_8php_a227a9443cabbe5e23cfc10c4371e09d1}\label{execute_8php_a227a9443cabbe5e23cfc10c4371e09d1}}
{\bfseries \$uname} = \$post\+Data\mbox{[}\textquotesingle{}file\textquotesingle{}\mbox{]}\mbox{[}\textquotesingle{}username\textquotesingle{}\mbox{]}
\item
\mbox{\hyperlink{execute_8php_a83170d318260a5a2e2a79dccdd371b10}{\$language}} = \$post\+Data\mbox{[}\textquotesingle{}file\textquotesingle{}\mbox{]}\mbox{[}\textquotesingle{}language\textquotesingle{}\mbox{]}
\mbox{\Hypertarget{execute_8php_a0722441477f957078ee2437054556cbc}\label{execute_8php_a0722441477f957078ee2437054556cbc}}
{\bfseries \$filename} = \$post\+Data\mbox{[}\textquotesingle{}file\textquotesingle{}\mbox{]}\mbox{[}\textquotesingle{}filename\textquotesingle{}\mbox{]}
\item
\mbox{\hyperlink{execute_8php_a6533a3606e58291459e9dfec2ad7da21}{\$input\+\_\+data}} = \$post\+Data\mbox{[}\textquotesingle{}input\+\_\+data\textquotesingle{}\mbox{]}
\mbox{\Hypertarget{execute_8php_a3f910b7833f09507df883bf8b04d3bdb}\label{execute_8php_a3f910b7833f09507df883bf8b04d3bdb}}
{\bfseries \$f\+\_\+path} = \$post\+Data\mbox{[}\textquotesingle{}file\textquotesingle{}\mbox{]}\mbox{[}\textquotesingle{}path\textquotesingle{}\mbox{]}
\item
\mbox{\hyperlink{execute_8php_a8a081d1b9ae6e0379850a3996564bb3f}{\$ret\+\_\+stat}} = 0
\mbox{\Hypertarget{execute_8php_a83170d318260a5a2e2a79dccdd371b10}\label{execute_8php_a83170d318260a5a2e2a79dccdd371b10}}
{\bfseries \$language} = \$post\+Data\mbox{[}\textquotesingle{}file\textquotesingle{}\mbox{]}\mbox{[}\textquotesingle{}language\textquotesingle{}\mbox{]}
\item
\mbox{\hyperlink{execute_8php_aa3e9534005fd516d941f6a5569896e01}{\$template}} = strval(rand(1, 1000000))
\mbox{\Hypertarget{execute_8php_a6533a3606e58291459e9dfec2ad7da21}\label{execute_8php_a6533a3606e58291459e9dfec2ad7da21}}
{\bfseries \$input\+\_\+data} = \$post\+Data\mbox{[}\textquotesingle{}input\+\_\+data\textquotesingle{}\mbox{]}
\item
\mbox{\hyperlink{execute_8php_a8b91f75933847c37e369bf9ffb5d4959}{\$in\+\_\+fname}} = \char`\"{}../users/\char`\"{} . \$uname . \char`\"{}/\char`\"{} . \char`\"{}temp\+\_\+in\char`\"{} . \$template
\mbox{\Hypertarget{execute_8php_a8a081d1b9ae6e0379850a3996564bb3f}\label{execute_8php_a8a081d1b9ae6e0379850a3996564bb3f}}
{\bfseries \$ret\+\_\+stat} = 0
\item
\mbox{\hyperlink{execute_8php_aa1bfbd27060176201b271918dff57e8f}{\$file}} = fopen(\$in\+\_\+fname, \textquotesingle{}w\textquotesingle{})
\mbox{\Hypertarget{execute_8php_aa3e9534005fd516d941f6a5569896e01}\label{execute_8php_aa3e9534005fd516d941f6a5569896e01}}
{\bfseries \$template} = strval(rand(1, 1000000))
\item
\mbox{\hyperlink{execute_8php_a4605dfe484d22f02e4ed7c9ad88262de}{\$out\+\_\+fname}} = \char`\"{}../users/\char`\"{} . \$uname . \char`\"{}/\char`\"{} . \char`\"{}temp\+\_\+out\char`\"{} . \$template
\mbox{\Hypertarget{execute_8php_a8b91f75933847c37e369bf9ffb5d4959}\label{execute_8php_a8b91f75933847c37e369bf9ffb5d4959}}
{\bfseries \$in\+\_\+fname} = \char`\"{}../user\+\_\+execs/\char`\"{} . \$uname . \char`\"{}//temp\+\_\+sfcode\+\_\+139213617964/temp\+\_\+in\char`\"{} . \$template
\item
\mbox{\hyperlink{compile_8php_a247cbbb16ae0aa6b9c0376f9e758f6fb}{if}}(strcmp(\$language, \char`\"{}.cpp\char`\"{})==0) else \mbox{\hyperlink{compile_8php_a247cbbb16ae0aa6b9c0376f9e758f6fb}{if}}(strcmp(\$language, \char`\"{}.java\char`\"{})==0) else \mbox{\hyperlink{compile_8php_a247cbbb16ae0aa6b9c0376f9e758f6fb}{if}}(strcmp(\$language, \char`\"{}.py\char`\"{})==0) if(\$ret\+\_\+stat !=0) \mbox{\hyperlink{execute_8php_a215383748692ec568ed9ac6a2155f079}{else}}
\end{DoxyCompactItemize}
\doxysubsection{Variable Documentation}
\mbox{\Hypertarget{execute_8php_aa1bfbd27060176201b271918dff57e8f}\label{execute_8php_aa1bfbd27060176201b271918dff57e8f}}
\index{execute.php@{execute.php}!\$file@{\$file}}
\index{\$file@{\$file}!execute.php@{execute.php}}
\doxysubsubsection{\texorpdfstring{\$file}{$file}}
{\footnotesize\ttfamily \$file = fopen(\$in\+\_\+fname, \textquotesingle{}w\textquotesingle{})}
\mbox{\Hypertarget{execute_8php_a0722441477f957078ee2437054556cbc}\label{execute_8php_a0722441477f957078ee2437054556cbc}}
\index{execute.php@{execute.php}!\$filename@{\$filename}}
\index{\$filename@{\$filename}!execute.php@{execute.php}}
\doxysubsubsection{\texorpdfstring{\$filename}{$filename}}
{\footnotesize\ttfamily \$filename = \$post\+Data\mbox{[}\textquotesingle{}file\textquotesingle{}\mbox{]}\mbox{[}\textquotesingle{}filename\textquotesingle{}\mbox{]}}
\mbox{\Hypertarget{execute_8php_a8b91f75933847c37e369bf9ffb5d4959}\label{execute_8php_a8b91f75933847c37e369bf9ffb5d4959}}
\index{execute.php@{execute.php}!\$in\_fname@{\$in\_fname}}
\index{\$in\_fname@{\$in\_fname}!execute.php@{execute.php}}
\doxysubsubsection{\texorpdfstring{\$in\_fname}{$in\_fname}}
{\footnotesize\ttfamily \$in\+\_\+fname = \char`\"{}../users/\char`\"{} . \$uname . \char`\"{}/\char`\"{} . \char`\"{}temp\+\_\+in\char`\"{} . \$template}
\mbox{\Hypertarget{execute_8php_a6533a3606e58291459e9dfec2ad7da21}\label{execute_8php_a6533a3606e58291459e9dfec2ad7da21}}
\index{execute.php@{execute.php}!\$input\_data@{\$input\_data}}
\index{\$input\_data@{\$input\_data}!execute.php@{execute.php}}
\doxysubsubsection{\texorpdfstring{\$input\_data}{$input\_data}}
{\footnotesize\ttfamily \$input\+\_\+data = \$post\+Data\mbox{[}\textquotesingle{}input\+\_\+data\textquotesingle{}\mbox{]}}
\mbox{\Hypertarget{execute_8php_a83170d318260a5a2e2a79dccdd371b10}\label{execute_8php_a83170d318260a5a2e2a79dccdd371b10}}
\index{execute.php@{execute.php}!\$language@{\$language}}
\index{\$language@{\$language}!execute.php@{execute.php}}
\doxysubsubsection{\texorpdfstring{\$language}{$language}}
{\footnotesize\ttfamily \$language = \$post\+Data\mbox{[}\textquotesingle{}file\textquotesingle{}\mbox{]}\mbox{[}\textquotesingle{}language\textquotesingle{}\mbox{]}}
{\bfseries \$file} = fopen(\$in\+\_\+fname, \textquotesingle{}w\textquotesingle{})
\item
\mbox{\Hypertarget{execute_8php_a4605dfe484d22f02e4ed7c9ad88262de}\label{execute_8php_a4605dfe484d22f02e4ed7c9ad88262de}}
\index{execute.php@{execute.php}!\$out\_fname@{\$out\_fname}}
\index{\$out\_fname@{\$out\_fname}!execute.php@{execute.php}}
\doxysubsubsection{\texorpdfstring{\$out\_fname}{$out\_fname}}
{\footnotesize\ttfamily \$out\+\_\+fname = \char`\"{}../users/\char`\"{} . \$uname . \char`\"{}/\char`\"{} . \char`\"{}temp\+\_\+out\char`\"{} . \$template}
\mbox{\Hypertarget{execute_8php_ab1d99e9211e0764ab2dcf25497fa40e4}\label{execute_8php_ab1d99e9211e0764ab2dcf25497fa40e4}}
\index{execute.php@{execute.php}!\$postData@{\$postData}}
\index{\$postData@{\$postData}!execute.php@{execute.php}}
\doxysubsubsection{\texorpdfstring{\$postData}{$postData}}
{\footnotesize\ttfamily \$post\+Data = file\+\_\+get\+\_\+contents(\char`\"{}php\+://input\char`\"{})}
\mbox{\Hypertarget{execute_8php_a8a081d1b9ae6e0379850a3996564bb3f}\label{execute_8php_a8a081d1b9ae6e0379850a3996564bb3f}}
\index{execute.php@{execute.php}!\$ret\_stat@{\$ret\_stat}}
\index{\$ret\_stat@{\$ret\_stat}!execute.php@{execute.php}}
\doxysubsubsection{\texorpdfstring{\$ret\_stat}{$ret\_stat}}
{\footnotesize\ttfamily \$ret\+\_\+stat = 0}
{\bfseries \$out\+\_\+fname} = \char`\"{}../user\+\_\+execs/\char`\"{} . \$uname . \char`\"{}//temp\+\_\+sfcode\+\_\+139213617964/temp\+\_\+out\char`\"{} . \$template
\item
if(strcmp(\$language, \char`\"{}.cpp\char`\"{})==0) else if(strcmp(\$language, \char`\"{}.java\char`\"{})==0) else if(strcmp(\$language, \char`\"{}.py\char`\"{})==0) if(\$ret\+\_\+stat !=0) {\bfseries else}
\end{DoxyCompactItemize}
\mbox{\Hypertarget{execute_8php_aa3e9534005fd516d941f6a5569896e01}\label{execute_8php_aa3e9534005fd516d941f6a5569896e01}}
\index{execute.php@{execute.php}!\$template@{\$template}}
\index{\$template@{\$template}!execute.php@{execute.php}}
\doxysubsubsection{\texorpdfstring{\$template}{$template}}
{\footnotesize\ttfamily \$template = strval(rand(1, 1000000))}
\mbox{\Hypertarget{execute_8php_a227a9443cabbe5e23cfc10c4371e09d1}\label{execute_8php_a227a9443cabbe5e23cfc10c4371e09d1}}
\index{execute.php@{execute.php}!\$uname@{\$uname}}
\index{\$uname@{\$uname}!execute.php@{execute.php}}
\doxysubsubsection{\texorpdfstring{\$uname}{$uname}}
{\footnotesize\ttfamily \$uname = \$post\+Data\mbox{[}\textquotesingle{}file\textquotesingle{}\mbox{]}\mbox{[}\textquotesingle{}username\textquotesingle{}\mbox{]}}
\doxysubsection{Detailed Description}
This script uses the username, name of the code file, language of the code file and the input data (test case) and executes the code, (given that it has already been compiled) using system() function, and returns the output. If the file hasn\textquotesingle{}t been compiled or a runtime error occurs, then the script raises an exception.
\doxysubsection{Variable Documentation}
\mbox{\Hypertarget{execute_8php_a215383748692ec568ed9ac6a2155f079}\label{execute_8php_a215383748692ec568ed9ac6a2155f079}}
\index{execute.php@{execute.php}!else@{else}}
\index{else@{else}!execute.php@{execute.php}}
\doxysubsubsection{\texorpdfstring{else}{else}}
{\footnotesize\ttfamily \mbox{\hyperlink{compile_8php_a247cbbb16ae0aa6b9c0376f9e758f6fb}{if}} (filesize( \$out\+\_\+fname)==0) else}
{\footnotesize\ttfamily if (filesize( \$out\+\_\+fname)==0) else}
{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{\{}
\DoxyCodeLine{ \mbox{\hyperlink{execute_8php_aa1bfbd27060176201b271918dff57e8f}{\$file}} = fopen(\mbox{\hyperlink{execute_8php_a4605dfe484d22f02e4ed7c9ad88262de}{\$out\_fname}}, \textcolor{charliteral}{'r'})}
\DoxyCodeLine{ \$file = fopen(\$out\_fname, \textcolor{charliteral}{'r'})}
\end{DoxyCode}
\hypertarget{filedelete_8php}{}\doxysection{sfcode/backend/filedelete.php File Reference}
\label{filedelete_8php}\index{sfcode/backend/filedelete.php@{sfcode/backend/filedelete.php}}
\hypertarget{filedelete_8php}{}\doxysection{/opt/lampp/htdocs/sfcode/backend/filedelete.php File Reference}
\label{filedelete_8php}\index{/opt/lampp/htdocs/sfcode/backend/filedelete.php@{/opt/lampp/htdocs/sfcode/backend/filedelete.php}}
\doxysubsection*{Variables}
\begin{DoxyCompactItemize}
\item
\mbox{\hyperlink{filedelete_8php_ab1d99e9211e0764ab2dcf25497fa40e4}{\$post\+Data}} = file\+\_\+get\+\_\+contents(\char`\"{}php\+://input\char`\"{})
\mbox{\Hypertarget{filedelete_8php_ab1d99e9211e0764ab2dcf25497fa40e4}\label{filedelete_8php_ab1d99e9211e0764ab2dcf25497fa40e4}}
{\bfseries \$post\+Data} = file\+\_\+get\+\_\+contents(\char`\"{}php\+://input\char`\"{})
\end{DoxyCompactItemize}
\doxysubsection{Variable Documentation}
\mbox{\Hypertarget{filedelete_8php_ab1d99e9211e0764ab2dcf25497fa40e4}\label{filedelete_8php_ab1d99e9211e0764ab2dcf25497fa40e4}}
\index{filedelete.php@{filedelete.php}!\$postData@{\$postData}}
\index{\$postData@{\$postData}!filedelete.php@{filedelete.php}}
\doxysubsubsection{\texorpdfstring{\$postData}{$postData}}
{\footnotesize\ttfamily \$post\+Data = file\+\_\+get\+\_\+contents(\char`\"{}php\+://input\char`\"{})}
\doxysubsection{Detailed Description}
This script deletes a given code file, or a directory in the user\textquotesingle{}s workspace, given its path. This file also communicates with the My\+SQL Server to update n\+\_\+files(file count) of the user, to enforce the maximum limit of 10 files. Hence SQL Injection is taken care of. Deleting a directory deletes all contained files.
\ No newline at end of file
\doxysection{File List}
Here is a list of all documented files with brief descriptions\+:\begin{DoxyCompactList}
\item\contentsline{section}{/opt/lampp/htdocs/sfcode/backend/\mbox{\hyperlink{database_8php}{database.\+php}} }{\pageref{database_8php}}{}
\item\contentsline{section}{/opt/lampp/htdocs/sfcode/backend/\mbox{\hyperlink{dir__tree_8php}{dir\+\_\+tree.\+php}} }{\pageref{dir__tree_8php}}{}
\item\contentsline{section}{/opt/lampp/htdocs/sfcode/backend/\mbox{\hyperlink{execute_8php}{execute.\+php}} }{\pageref{execute_8php}}{}
\item\contentsline{section}{/opt/lampp/htdocs/sfcode/backend/\mbox{\hyperlink{filedelete_8php}{filedelete.\+php}} }{\pageref{filedelete_8php}}{}
\item\contentsline{section}{/opt/lampp/htdocs/sfcode/backend/\mbox{\hyperlink{filesave_8php}{filesave.\+php}} }{\pageref{filesave_8php}}{}
\item\contentsline{section}{/opt/lampp/htdocs/sfcode/backend/\mbox{\hyperlink{get__file_8php}{get\+\_\+file.\+php}} }{\pageref{get__file_8php}}{}
\item\contentsline{section}{/opt/lampp/htdocs/sfcode/backend/\mbox{\hyperlink{login_8php}{login.\+php}} }{\pageref{login_8php}}{}
\item\contentsline{section}{/opt/lampp/htdocs/sfcode/backend/\mbox{\hyperlink{newdir_8php}{newdir.\+php}} }{\pageref{newdir_8php}}{}
\item\contentsline{section}{/opt/lampp/htdocs/sfcode/backend/\mbox{\hyperlink{register_8php}{register.\+php}} }{\pageref{register_8php}}{}
\item\contentsline{section}{/opt/lampp/htdocs/sfcode/backend/\mbox{\hyperlink{update__correct_8php}{update\+\_\+correct.\+php}} }{\pageref{update__correct_8php}}{}
\item\contentsline{section}{/opt/lampp/htdocs/sfcode/backend/questions/\mbox{\hyperlink{check__output_8php}{check\+\_\+output.\+php}} }{\pageref{check__output_8php}}{}
\item\contentsline{section}{/opt/lampp/htdocs/sfcode/backend/questions/\mbox{\hyperlink{get__questions_8php}{get\+\_\+questions.\+php}} }{\pageref{get__questions_8php}}{}
\item\contentsline{section}{/opt/lampp/htdocs/sfcode/backend/questions/\mbox{\hyperlink{question__save_8php}{question\+\_\+save.\+php}} }{\pageref{question__save_8php}}{}
\end{DoxyCompactList}
\hypertarget{filesave_8php}{}\doxysection{sfcode/backend/filesave.php File Reference}
\label{filesave_8php}\index{sfcode/backend/filesave.php@{sfcode/backend/filesave.php}}
\hypertarget{filesave_8php}{}\doxysection{/opt/lampp/htdocs/sfcode/backend/filesave.php File Reference}
\label{filesave_8php}\index{/opt/lampp/htdocs/sfcode/backend/filesave.php@{/opt/lampp/htdocs/sfcode/backend/filesave.php}}
\doxysubsection*{Variables}
\begin{DoxyCompactItemize}
\item
\mbox{\hyperlink{filesave_8php_ab1d99e9211e0764ab2dcf25497fa40e4}{\$post\+Data}} = file\+\_\+get\+\_\+contents(\char`\"{}php\+://input\char`\"{})
\mbox{\Hypertarget{filesave_8php_ab1d99e9211e0764ab2dcf25497fa40e4}\label{filesave_8php_ab1d99e9211e0764ab2dcf25497fa40e4}}
{\bfseries \$post\+Data} = file\+\_\+get\+\_\+contents(\char`\"{}php\+://input\char`\"{})
\end{DoxyCompactItemize}
\doxysubsection{Variable Documentation}
\mbox{\Hypertarget{filesave_8php_ab1d99e9211e0764ab2dcf25497fa40e4}\label{filesave_8php_ab1d99e9211e0764ab2dcf25497fa40e4}}
\index{filesave.php@{filesave.php}!\$postData@{\$postData}}
\index{\$postData@{\$postData}!filesave.php@{filesave.php}}
\doxysubsubsection{\texorpdfstring{\$postData}{$postData}}
{\footnotesize\ttfamily \$post\+Data = file\+\_\+get\+\_\+contents(\char`\"{}php\+://input\char`\"{})}
\doxysubsection{Detailed Description}
This script saves a given code file for a user, given it\textquotesingle{}s path. If the file is an Attempt to a question, it is saved in the separate questions directory(part of the workspace). This file also communicates with the My\+SQL Server to update n\+\_\+files(file count) of the user, to enforce the maximum limit of 10 files. Hence SQL injection is taken care of.
\ No newline at end of file
\hypertarget{get__file_8php}{}\doxysection{sfcode/backend/get\+\_\+file.php File Reference}
\label{get__file_8php}\index{sfcode/backend/get\_file.php@{sfcode/backend/get\_file.php}}
\hypertarget{get__file_8php}{}\doxysection{/opt/lampp/htdocs/sfcode/backend/get\+\_\+file.php File Reference}
\label{get__file_8php}\index{/opt/lampp/htdocs/sfcode/backend/get\_file.php@{/opt/lampp/htdocs/sfcode/backend/get\_file.php}}
\doxysubsection*{Variables}
\begin{DoxyCompactItemize}
\item
\mbox{\hyperlink{get__file_8php_ab1d99e9211e0764ab2dcf25497fa40e4}{\$post\+Data}} = file\+\_\+get\+\_\+contents(\char`\"{}php\+://input\char`\"{})
\mbox{\Hypertarget{get__file_8php_ab1d99e9211e0764ab2dcf25497fa40e4}\label{get__file_8php_ab1d99e9211e0764ab2dcf25497fa40e4}}
{\bfseries \$post\+Data} = file\+\_\+get\+\_\+contents(\char`\"{}php\+://input\char`\"{})
\item
\mbox{\hyperlink{get__file_8php_a227a9443cabbe5e23cfc10c4371e09d1}{\$uname}} = \$post\+Data\mbox{[}\textquotesingle{}username\textquotesingle{}\mbox{]}
\mbox{\Hypertarget{get__file_8php_a227a9443cabbe5e23cfc10c4371e09d1}\label{get__file_8php_a227a9443cabbe5e23cfc10c4371e09d1}}
{\bfseries \$uname} = \$post\+Data\mbox{[}\textquotesingle{}username\textquotesingle{}\mbox{]}
\item
\mbox{\hyperlink{get__file_8php_a3f910b7833f09507df883bf8b04d3bdb}{\$f\+\_\+path}} = \$post\+Data\mbox{[}\textquotesingle{}file\+\_\+path\textquotesingle{}\mbox{]}
\mbox{\Hypertarget{get__file_8php_a3f910b7833f09507df883bf8b04d3bdb}\label{get__file_8php_a3f910b7833f09507df883bf8b04d3bdb}}
{\bfseries \$f\+\_\+path} = \$post\+Data\mbox{[}\textquotesingle{}file\+\_\+path\textquotesingle{}\mbox{]}
\item
\mbox{\hyperlink{get__file_8php_a0a4baf0b22973c07685c3981f0d17fc4}{\$path}} = \char`\"{}../users/\char`\"{} . \$uname . \char`\"{}/\char`\"{} . \$f\+\_\+path
\mbox{\Hypertarget{get__file_8php_a0a4baf0b22973c07685c3981f0d17fc4}\label{get__file_8php_a0a4baf0b22973c07685c3981f0d17fc4}}
{\bfseries \$path} = \char`\"{}../users/\char`\"{} . \$uname . \char`\"{}/\char`\"{} . \$f\+\_\+path
\item
\mbox{\hyperlink{compile_8php_a247cbbb16ae0aa6b9c0376f9e758f6fb}{if}}(file\+\_\+exists(\$path)) \mbox{\hyperlink{get__file_8php_aba62ef45f8e65bde63a30f4b93459af6}{else}}
if(file\+\_\+exists(\$path)) {\bfseries else}
\end{DoxyCompactItemize}
\doxysubsection{Variable Documentation}
\mbox{\Hypertarget{get__file_8php_a3f910b7833f09507df883bf8b04d3bdb}\label{get__file_8php_a3f910b7833f09507df883bf8b04d3bdb}}
\index{get\_file.php@{get\_file.php}!\$f\_path@{\$f\_path}}
\index{\$f\_path@{\$f\_path}!get\_file.php@{get\_file.php}}
\doxysubsubsection{\texorpdfstring{\$f\_path}{$f\_path}}
{\footnotesize\ttfamily \$f\+\_\+path = \$post\+Data\mbox{[}\textquotesingle{}file\+\_\+path\textquotesingle{}\mbox{]}}
\mbox{\Hypertarget{get__file_8php_a0a4baf0b22973c07685c3981f0d17fc4}\label{get__file_8php_a0a4baf0b22973c07685c3981f0d17fc4}}
\index{get\_file.php@{get\_file.php}!\$path@{\$path}}
\index{\$path@{\$path}!get\_file.php@{get\_file.php}}
\doxysubsubsection{\texorpdfstring{\$path}{$path}}
{\footnotesize\ttfamily \$path = \char`\"{}../users/\char`\"{} . \$uname . \char`\"{}/\char`\"{} . \$f\+\_\+path}
\mbox{\Hypertarget{get__file_8php_ab1d99e9211e0764ab2dcf25497fa40e4}\label{get__file_8php_ab1d99e9211e0764ab2dcf25497fa40e4}}
\index{get\_file.php@{get\_file.php}!\$postData@{\$postData}}
\index{\$postData@{\$postData}!get\_file.php@{get\_file.php}}
\doxysubsubsection{\texorpdfstring{\$postData}{$postData}}
{\footnotesize\ttfamily \$post\+Data = file\+\_\+get\+\_\+contents(\char`\"{}php\+://input\char`\"{})}
\mbox{\Hypertarget{get__file_8php_a227a9443cabbe5e23cfc10c4371e09d1}\label{get__file_8php_a227a9443cabbe5e23cfc10c4371e09d1}}
\index{get\_file.php@{get\_file.php}!\$uname@{\$uname}}
\index{\$uname@{\$uname}!get\_file.php@{get\_file.php}}
\doxysubsubsection{\texorpdfstring{\$uname}{$uname}}
{\footnotesize\ttfamily \$uname = \$post\+Data\mbox{[}\textquotesingle{}username\textquotesingle{}\mbox{]}}
\doxysubsection{Detailed Description}
This script uses the username and file path in the user\textquotesingle{}s workspace to return the contents in the requested file (code file). If the file path is not found on the server, a 404 HTTP error is raised.
\doxysubsection{Variable Documentation}
\mbox{\Hypertarget{get__file_8php_aba62ef45f8e65bde63a30f4b93459af6}\label{get__file_8php_aba62ef45f8e65bde63a30f4b93459af6}}
\index{get\_file.php@{get\_file.php}!else@{else}}
\index{else@{else}!get\_file.php@{get\_file.php}}
\doxysubsubsection{\texorpdfstring{else}{else}}
{\footnotesize\ttfamily \mbox{\hyperlink{compile_8php_a247cbbb16ae0aa6b9c0376f9e758f6fb}{if}} (file\+\_\+exists( \$path)) else}
{\footnotesize\ttfamily if (file\+\_\+exists( \$path)) else}
{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
......
\hypertarget{get__questions_8php}{}\doxysection{sfcode/backend/questions/get\+\_\+questions.php File Reference}
\label{get__questions_8php}\index{sfcode/backend/questions/get\_questions.php@{sfcode/backend/questions/get\_questions.php}}
\hypertarget{get__questions_8php}{}\doxysection{/opt/lampp/htdocs/sfcode/backend/questions/get\+\_\+questions.php File Reference}
\label{get__questions_8php}\index{/opt/lampp/htdocs/sfcode/backend/questions/get\_questions.php@{/opt/lampp/htdocs/sfcode/backend/questions/get\_questions.php}}
\doxysubsection*{Variables}
\begin{DoxyCompactItemize}
\item
\mbox{\Hypertarget{get__questions_8php_a1ad0ffe3fa0755e56a1a6bb40c232b8a}\label{get__questions_8php_a1ad0ffe3fa0755e56a1a6bb40c232b8a}}
{\bfseries \$sql2} = \char`\"{}SELECT $\ast$ FROM questions\char`\"{}
\item
\mbox{\Hypertarget{get__questions_8php_a6efc15b5a2314dd4b5aaa556a375c6d6}\label{get__questions_8php_a6efc15b5a2314dd4b5aaa556a375c6d6}}
{\bfseries \$data} = array()
\item
if(\$result=\$mysqli-\/$>$query(\$sql2)) {\bfseries else}
\end{DoxyCompactItemize}
\doxysubsection{Detailed Description}
This script checks the questions present in the My\+SQL database, and sends the question info (title, problem statement, start and end time, and the author\textquotesingle{}s username) to the frontend. For this the script communicates with the My\+SQL server. Thus SQL injection has been handled.
\doxysubsection{Variable Documentation}
\mbox{\Hypertarget{get__questions_8php_a23e84a9d8c8378a55b6a1079882cbb35}\label{get__questions_8php_a23e84a9d8c8378a55b6a1079882cbb35}}
\index{get\_questions.php@{get\_questions.php}!else@{else}}
\index{else@{else}!get\_questions.php@{get\_questions.php}}
\doxysubsubsection{\texorpdfstring{else}{else}}
{\footnotesize\ttfamily if ( \$result=\$mysqli-\/$>$query( \$sql2)) else}
{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{\{}
\DoxyCodeLine{ http\_response\_code(404)}
\end{DoxyCode}
......@@ -9,4 +9,4 @@
\doxysubsection{Detailed Description}
This script is for user login using username and password. Here, we authenticate user credentials with My\+SQL server.
\ No newline at end of file
This script is for user login using username and password. Here, we authenticate user credentials with My\+SQL server. Returns a 404 error if username/password is incorrect.
\ No newline at end of file
\hypertarget{newdir_8php}{}\doxysection{sfcode/backend/newdir.php File Reference}
\label{newdir_8php}\index{sfcode/backend/newdir.php@{sfcode/backend/newdir.php}}
\hypertarget{newdir_8php}{}\doxysection{/opt/lampp/htdocs/sfcode/backend/newdir.php File Reference}
\label{newdir_8php}\index{/opt/lampp/htdocs/sfcode/backend/newdir.php@{/opt/lampp/htdocs/sfcode/backend/newdir.php}}
\doxysubsection*{Variables}
\begin{DoxyCompactItemize}
\item
\mbox{\hyperlink{newdir_8php_ab1d99e9211e0764ab2dcf25497fa40e4}{\$post\+Data}} = file\+\_\+get\+\_\+contents(\char`\"{}php\+://input\char`\"{})
\mbox{\Hypertarget{newdir_8php_ab1d99e9211e0764ab2dcf25497fa40e4}\label{newdir_8php_ab1d99e9211e0764ab2dcf25497fa40e4}}
{\bfseries \$post\+Data} = file\+\_\+get\+\_\+contents(\char`\"{}php\+://input\char`\"{})
\end{DoxyCompactItemize}
\doxysubsection{Variable Documentation}
\mbox{\Hypertarget{newdir_8php_ab1d99e9211e0764ab2dcf25497fa40e4}\label{newdir_8php_ab1d99e9211e0764ab2dcf25497fa40e4}}
\index{newdir.php@{newdir.php}!\$postData@{\$postData}}
\index{\$postData@{\$postData}!newdir.php@{newdir.php}}
\doxysubsubsection{\texorpdfstring{\$postData}{$postData}}
{\footnotesize\ttfamily \$post\+Data = file\+\_\+get\+\_\+contents(\char`\"{}php\+://input\char`\"{})}
\doxysubsection{Detailed Description}
This script creates a new directory as and where, the user wants it to be made. Returns 0 in case a directory with the same name and path already exists. Returns 1 in case of a succesful operation.
\ No newline at end of file
\hypertarget{question__save_8php}{}\doxysection{sfcode/backend/questions/question\+\_\+save.php File Reference}
\label{question__save_8php}\index{sfcode/backend/questions/question\_save.php@{sfcode/backend/questions/question\_save.php}}
\hypertarget{question__save_8php}{}\doxysection{/opt/lampp/htdocs/sfcode/backend/questions/question\+\_\+save.php File Reference}
\label{question__save_8php}\index{/opt/lampp/htdocs/sfcode/backend/questions/question\_save.php@{/opt/lampp/htdocs/sfcode/backend/questions/question\_save.php}}
\doxysubsection*{Variables}
\begin{DoxyCompactItemize}
\item
\mbox{\hyperlink{question__save_8php_ab1d99e9211e0764ab2dcf25497fa40e4}{\$post\+Data}} = file\+\_\+get\+\_\+contents(\char`\"{}php\+://input\char`\"{})
\mbox{\Hypertarget{question__save_8php_ab1d99e9211e0764ab2dcf25497fa40e4}\label{question__save_8php_ab1d99e9211e0764ab2dcf25497fa40e4}}
{\bfseries \$post\+Data} = file\+\_\+get\+\_\+contents(\char`\"{}php\+://input\char`\"{})
\end{DoxyCompactItemize}
\doxysubsection{Variable Documentation}
\mbox{\Hypertarget{question__save_8php_ab1d99e9211e0764ab2dcf25497fa40e4}\label{question__save_8php_ab1d99e9211e0764ab2dcf25497fa40e4}}
\index{question\_save.php@{question\_save.php}!\$postData@{\$postData}}
\index{\$postData@{\$postData}!question\_save.php@{question\_save.php}}
\doxysubsubsection{\texorpdfstring{\$postData}{$postData}}
{\footnotesize\ttfamily \$post\+Data = file\+\_\+get\+\_\+contents(\char`\"{}php\+://input\char`\"{})}
\doxysubsection{Detailed Description}
This script saves a question in the My\+SQL database after a user creates it. It uses parameters like, author\textquotesingle{}s username, problem statement, testcases, start and end time, etc.
\ No newline at end of file
......@@ -178,8 +178,19 @@
\chapter{File Index}
\input{files}
\chapter{File Documentation}
\input{database_8php}
\input{dir__tree_8php}
\input{execute_8php}
\input{filedelete_8php}
\input{filesave_8php}
\input{get__file_8php}
\input{login_8php}
\input{newdir_8php}
\input{check__output_8php}
\input{get__questions_8php}
\input{question__save_8php}
\input{register_8php}
\input{update__correct_8php}
%--- End generated contents ---
% Index
......
\hypertarget{register_8php}{}\doxysection{/opt/lampp/htdocs/sfcode/backend/register.php File Reference}
\label{register_8php}\index{/opt/lampp/htdocs/sfcode/backend/register.php@{/opt/lampp/htdocs/sfcode/backend/register.php}}
\doxysubsection*{Variables}
\begin{DoxyCompactItemize}
\item
\mbox{\Hypertarget{register_8php_ab1d99e9211e0764ab2dcf25497fa40e4}\label{register_8php_ab1d99e9211e0764ab2dcf25497fa40e4}}
{\bfseries \$post\+Data} = file\+\_\+get\+\_\+contents(\char`\"{}php\+://input\char`\"{})
\end{DoxyCompactItemize}
\doxysubsection{Detailed Description}
This script registers a user using a username, password, name, and email (provided through POST). This script communicates with the My\+SQL server to save user data.
\ No newline at end of file
This script registers a user using a username, password, name, and email. This script communicates with the My\+SQL server to save user data. Passowrd is hashed, and SQL injection is taken care of. The process of registering involves -\/
\begin{DoxyEnumerate}
\item An insert operation into the users table, in the database.
\item Creation of directories, required to store files, executables and question attempts made by the user.
\end{DoxyEnumerate}
Returns a 404 error if username already exists.
\ No newline at end of file
\hypertarget{update__correct_8php}{}\doxysection{/opt/lampp/htdocs/sfcode/backend/update\+\_\+correct.php File Reference}
\label{update__correct_8php}\index{/opt/lampp/htdocs/sfcode/backend/update\_correct.php@{/opt/lampp/htdocs/sfcode/backend/update\_correct.php}}
\doxysubsection*{Variables}
\begin{DoxyCompactItemize}
\item
\mbox{\Hypertarget{update__correct_8php_ab1d99e9211e0764ab2dcf25497fa40e4}\label{update__correct_8php_ab1d99e9211e0764ab2dcf25497fa40e4}}
{\bfseries \$post\+Data} = file\+\_\+get\+\_\+contents(\char`\"{}php\+://input\char`\"{})
\end{DoxyCompactItemize}
\doxysubsection{Detailed Description}
This script updates the userdata based on whether the most recent attempt made by the user was successful or unsuccessful. An attempt is successful if and only if all testcases produce correct output.
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment