Realtime Spring
After watch a few rigging reel using xsi or maya,I think that it would be much easier in animating if the rig has realtime delay effect.
But I was confuse how to do in max until I got a sample scene from zhangy(www.zhangy.com).
After study that scene,I wrote this script.I give a name:realtime spring.But it doesn't have the "shake" effect,I mean when the dynamic object reach the driver object's position it would stop.So it actually make a delay effect.
a demo video shows how to use it: http://www.seageo.com/Product/maxRTSscript/videotour.rar
and 2 video about making loop animation:
http://www.seageo.com/Product/maxRTSscript/makeloop1.avi
http://www.seageo.com/Product/maxRTSscript/makeloop2.avi
A fish swimming scene(max9): http://www.seageo.com/show/UPLOAD/fish(max9).zip
It's preview animation:http://www.seageo.com/show/UPLOAD/fish.rar
My english is bad,so I recode the video in chinese,hope you understand the usage.
I am not good at R&D too,so it has much more space to improve.
Maybe someone would make it better.
ps:script tested in max8 and max9.
Thanks to:
Zhangy(make the basic idea)
Mingyu (for testing ang making fish example scene)
update version 1.1
fixed:error when the scene has biped object.
update version 1.2
fixed:script controller error in max8.
update version 1.3d
*add filter fucntion to manage spring node by comment.
*loop before bake:loop animation few times before baking,get stable action in loop animation
*bake animation speed,when you get good movement with different animation speed,use this funciton to bake it.
*subsample,use "bake with subsample frames" button to do more percise calulation.
update version 1.4
*press esc key to exit when baking
*make it work in max8
My<EMAIL_ADDRESS>Installation/Comments: Just watching the video (find download link in Description)
Script Author: Harrison Yu
Author Homepage: http://www.seageo.com/Harrison/
Version: 1.4
Last Updated: 2007-5-26
Download URL: http://www.seageo.com/Product/maxRTSscript/RealtimeSpring1.4.rar
Version Requirement: max8,max9
Requirements: tested on max8,max9,may not work in lower version
very nice and imressive
very nice and imressive work.
i wish someone just wrote a float spring controller for max as a plugin.
ne ways.. this will a lot as well. specially if you could provide
little document / notes about spring controller parameters you added to
script controller and how they all work
because i was kind of stuck at same level after watching those maya and xsi rigs :)
thanks and regards
lala
Hi!Lala:It was inspire by
Hi!Lala:It was inspire by Zhangy's sample scene,so it took me some time to understand.And here is a small explanation:
if this.enabled then (
--*I add a custom attributes to the script controller,so every time
the script controller execute,current vector speed of the node whould
store in a custom attributes "v".
--"df":damping factor;"-this.v*this.df":faster speed cause more damping effect and it's in nagitvie direction
--"sf":spring factor;"(DrvNode.pos-this.cValue)*this.sf":bigger distance cause bigger spring effect.
this.v=-this.v*this.df+(DrvNode.pos-this.cValue)*this.sf
--the following happened when speed is too faster
if abs(this.cValue.x)>=10000 then
(
this.v=[0,0,0]
this.cValue=[0,0,0]
)
--the following calculate the time duration since last evaluate of this script
--with this the spring node movement would sync to the time
cTime=timestamp()/320 as float
diff=cTime-this.oldTime
this.oldTime=cTime
if diff>0.1 then diff=0.1
if diff<0 then this.cValue
else this.cValue+=this.v*diff
)else(DrvNode.pos)
hey, thanks man!...
hey, thanks man!... description is helpful....
can i use your script / definition and modify this for my use.? actually sometimes i need this functionality to embed in a rig so animator can change only certain controls >> ??
thanks again for helping and support..
regards
lala
Of cause,you can use this
Of cause,you can use this script and modify it for your use.But please keep the author information.
Mind reader, I was just
Mind reader, I was just thinking about something just like this to attach a camera too!
Thanks,
John


- DataType - Enum in org.ngi.enums
-
Enum for assignment of a data type to NodeInputs and NodeOutputs.
- deleteConnection(NodeConnection) - Method in class org.ngi.NodeGraph
-
Delete a NodeInput Connection.
- DeleteConnectionAction - Class in org.ngi.menus.actions
-
Action to call delete connection on a connection object.
- DeleteConnectionAction(NodeGraph) - Constructor for class org.ngi.menus.actions.DeleteConnectionAction
-
- deleteNode(Node) - Method in class org.ngi.NodeGraph
-
Delete a Node.
- deleteNode(Node) - Method in class org.ngi.quadtree.QuadTree
-
Delete a Node from the index - this is called when a node is deleted from the NodeGraph.
- DeleteNodeAction - Class in org.ngi.menus.actions
-
Action to call deleteNode on the NodeGraph.
- DeleteNodeAction(NodeGraph) - Constructor for class org.ngi.menus.actions.DeleteNodeAction
-
- deleteOptionalInput(NodeInput) - Method in class org.ngi.NodeGraph
-
Delete an Optional Input from a node
- DeleteOptionalInputAction - Class in org.ngi.menus.actions
-
Action to call addOptionalInput on NodeGraph.
- DeleteOptionalInputAction(NodeGraph) - Constructor for class org.ngi.menus.actions.DeleteOptionalInputAction
-
- descObjA() - Method in class org.ngi.nodes.modeling.booleans.BaseBoolean
-
Method for Input descriptions so that the messages
can be changed in subclasses to match that class.
- descObjA() - Method in class org.ngi.nodes.modeling.Hull
-
- descObjA() - Method in class org.ngi.nodes.modeling.Minkowski
-
- descObjB() - Method in class org.ngi.nodes.modeling.booleans.BaseBoolean
-
Method for Input descriptions so that the messages
can be changed in subclasses to match that class.
- descObjB() - Method in class org.ngi.nodes.modeling.Hull
-
- descObjB() - Method in class org.ngi.nodes.modeling.Minkowski
-
- descObjOut() - Method in class org.ngi.nodes.modeling.booleans.BaseBoolean
-
Method for Input descriptions so that the messages
can be changed in subclasses to match that class.
- descObjOut() - Method in class org.ngi.nodes.modeling.Hull
-
- descObjOut() - Method in class org.ngi.nodes.modeling.Minkowski
-
- DialogFileFilter - Class in org.ngi
-
Dialog file filter class for use with standard swing dialogs.
- DialogFileFilter(String, String) - Constructor for class org.ngi.DialogFileFilter
-
Construct a dialog file filter .
- Difference - Class in org.ngi.nodes.modeling.booleans
-
Performs a boolean difference operation the geometry.
- Difference() - Constructor for class org.ngi.nodes.modeling.booleans.Difference
-
Constructor
- disconnect() - Method in class org.ngi.NodeConnection
-
Disconnect the Input and Output Nodes.
- Divide - Class in org.ngi.nodes.math.operators
-
Divide Operator (/).
- Divide() - Constructor for class org.ngi.nodes.math.operators.Divide
-
Constructor
- dnaNodeGraph - Variable in class org.ngi.menus.actions.DeleteNodeAction
-
- DragConnectorTool - Class in org.ngi
-
Drag connector tool for handling click and drag connection operations between nodes.
- DragConnectorTool(NodeGraph) - Constructor for class org.ngi.DragConnectorTool
-
Construct the drag connection tool.
- duplicateNode(Node) - Method in class org.ngi.NodeGraph
-
Duplicates a Node and all it's input connections.
- DuplicateNodeAction - Class in org.ngi.menus.actions
-
Action to call duplicateNode on the NodeGraph.
- DuplicateNodeAction(NodeGraph) - Constructor for class org.ngi.menus.actions.DuplicateNodeAction
-


Doc Cat
Search
Category Management
Document Management
Categories
Add
Category
Term
Actions
Delete
Edit
×
Add/Edit Category
Category
Search Term
Lucene Search terms can include the following operators:
'+' specifies AND operation: token1+token2
'|' specifies OR operation: token1|token2
'-' negates a single token: -token0
'"' creates phrases of terms: "term1 term2 ..."
'*' in a term specifies wildcard for multiple characters: te*m
'?' in a term specifies wildcard for single character: ter?m
'~N' at the end of terms specifies
fuzzy
query: term~1
'~N' at the end of phrases specifies near query: "term1 term2"~5
'^N' at the end of phrases boosts the term for the query: "term1^2 term2"
'/[expression]/' enables
regular expressions
: "/[mh]otel]"
'(' and ')' specifies precedence: token1 + (token2 | token3)
More information on search syntax can be found
here
.


Object Oriented Programing (known as OOP for short) is a model of programing by using objects as events in our program other than independent step-by-step actions (known as Procedural Programming). OOP makes your code much more organized and easier to understand, and is also very useful for group projects. In this section I will explain Objects in more detail and show you how to make your own Objects.
Classes are their own structure that contain their own functions (known as methods), and their own variables (known as properties). Objects are things created from a class. For example you can look at a class as a (recipe, blueprint, template), and an object something created with the (recipe, blueprint, template). Like cookies for example, you have a cookie recipe (class) and the cookies (objects). And you could make a variety of cookies from the same recipe: big or small, peanut butter or chocolate chip.
When you create something from a class it's known as an instance (a particular object of the class). Every instance is independent of other instances, changing one will not change others. Here is how to create an object/instance:
var obj = new Object(...); // obj is an instance of the Object class.
Calling a method from an Object:
obj.methodName(...);
Getting a property of an Object:
obj.propertyName;
For example lets look at the our Human Race as a Class, then each human would be an instance of the Human class. Some properties we would have would be: height, gender, and hair color. And some methods might be: run, breath, jump, and dance.
In fact Numbers, Strings, Arrays, etc, are all Objects. And they can be defined as an instance. For example lets look at a instance of the String class and it's methods and properties (shown in Data & Functions section):
var myString = new String("Hello world"); // Create a string as an object. myString.toUpperCase(); // Method to change the string to uppercase. => "HELLO WORLD" myString.indexOf('W'); // Method to get a index in the string. => 6 myString.length; // returns the length Property of the string. => 11
The method that is called when an object is created is called a Constructor. Often the constructor sets the default values of the properties of instance. In this case the String Constructor [ String(string) ] takes a single argument and sets it's string property to the given argument.
The best way to understand objects, classes, instances, and so on is to create them yourself. We can create our very own Objects, here is an outline:
function ClassName( arg* ) // Creates a class called "ClassName" { //This is the Constructor this.property1 = .. ; this.property2 = .. ; //End Constructor this.method1 = function( arg* ) // Makes a method called "method1" { // Code for method1 } this.method2 = function( arg* ) { // Code for method2 } } var myObj = new Class( ... ); // Creates an instance from our Class.
this means for this particular instance. So when we say: this.variable , it means the variable belonging to the current instance. Don't get confused that it says: function ClassName(...), read it as: class ClassName(...). The class keyword is not yet implemented in JavaScript so the function keyword is used.
Lets look at some examples, here is a Ball Class:
function Ball( X, Y, R, Color ) // Creates a class called "Ball" { this.x = X; // Makes a property called: x. this.y = Y; // Makes a property called: y. this.r = R; // Makes a property called: r ( radius ) this.color = Color; // Makes a property called: color. this.moveTo = function(newX, newY) // Makes a method called: moveTo(newX, newY). { this.x = newX; // Change the x to the new position this.y = newY; // Change the y to the new position } } var redBall = new Ball(40,40,25,"Red"); // Creates a red ball from Ball class. var blueBall = new Ball(200,40,35,"Blue"); // Creates a blue ball from Ball class.
If the last example was a bit too complex here is a simpler example:
function Person( name ) // Creates a class called "Person" { // It's ok to use ( this.name = name ) JavaScript can tell the difference. this.name = name; // Makes a property called: name. this.sayHi = function() // alerts it's name { alert("Hello, my name is " + this.name); } } var person1 = new Person("Spencer"); var person2 = new Person("Calvin"); alert( person1.name ); // => "Spencer" person1.sayHi(); // => "Hello, my name is Spencer" person2.sayHi(); // => "Hello, my name is Calvin"
There is more than one way to create a class in JavaScript, the current why I have been showing you is the simplest in my opinion. Another way to create objects which is slightly more efficient is using: prototype. Which is a property to add methods to objects. For example here is the same Person class setup using prototype with a side-by-side comparison:
Prototype
function Person( name ){ this.name = name; } Person.prototype.sayHi = function(){ alert("Hello, my name is " + this.name); }
Without Prototype
function Person( name ){ this.name = name; this.sayHi = function(){ alert("Hello, my name is " + this.name); } }
Sometimes we want to make a class that inherits the methods and properties of another more abstract class, known as Inheritance. For example lets say we have a class called Animal, and we want to make another class called Bird with the same methods and properties, but have a few extra such as fly(). We could also have Mammal and Reptile also be based on Animal. We could set this up in a tree structure known as an: inheritance tree.
Here is an example is a Parent and a Child class implemented in JavaScript:
function Parent( arg* ){ this.P_prop = arg*; this.P_func = function(){ // Code for parent method. } } function Child( arg* ){ // The same arguments as the 'Parent' class. Parent.call(this, arg*); // This creates 'Child' to be based on 'Parent'. this.C_func = function(){ // Code for child method. } }
And here is a implementation on the Parent class Animal, and child class Bird:
function Animal( name ){ this.name = name; this.getName = function(){ alert("It's name is "+this.name); } } function Bird( name ){ Animal.call(this, name); this.fly = function(){ alert(this.name+" flew up in the sky."); } }
So the Animal Class as a property: name; and a method: getName(). While the Bird class inherited the property: name and method: getName(), special to it's class it has another method fly().
var animal = new Animal("Fred"); var bird = new Bird("Jack"); // Both Animal and Bird have getName. animal.getName(); // => Fred bird.getName(); // => Jack //animal.fly(); <-- Animal does not have a fly method bird.fly(); // => "Jack flew up in the sky."
We went over a bunch or large topics. Here are some important points we went over:
Objects
Inheritance


Reports calls to non-static methods of the same object which are not qualified with
this
.
New in 11, Powered by InspectionGadgets


Biology and Genealogy Master Index
2020 Edition, 2020
Biography and Genealogy Master Index(BGMI) provides more than 20 million biographical citations on more than 6 millions presons, living and deceased, fromall fields of activity, covering more than 2,000...
Brands and Their Companies
45th Edition, 2021
Lists manufacturers and distributors from small buisnesses to large corporations,from both the public and private sectors. Provides complete coverage of U.S. consumer brands; manufacturers, importers and ...
Business Rankings Annual
2021 Edition, 2021
Providers "top ten" rankings of companies, Products, services, and buisness-related activities complied from a variety of published sources.
Consultants & Consulting Organizations
46th Edition, 2021
Provides information on firms and individuals from the U.S. Covers 14 general fields of consulting activity rating from agriculture to making, and more...
BROWSE TOPICS BY DISCIPLINE
Explore ove 500 topics broken down by discipline for targeted results on your interests.


This is a header
Hello there, awesome person!
This is a link to Youtube
This is a link to Google
This is a link to OWL


You can automatically insert the response to a previously answered question (during data collection) by specifying its question identifier in double curly brackets in the Text field.
Example: What is {{first_name}}'s Ethnicity?
{{first_name}}'s


State of Hawaii
Office of Elections
Your Information
Training Signup
Personal Information
First Name
Middle Initial
Last Name
AKA
Date of Birth
Last Four Digits of Social Security Number
Primary Phone
Phone Type
Cell
Home
Work
Secondary Phone
Phone Type
Cell
Home
Work
Preferred Contact Method
Email
Phone
Preferred Time To Call
Next
First Name
Middle Name of Initial
Last Name
AKA
Date of Birth
Cell Phone
Home Phone
Address Info
Residence Address
Address 1
Address 2
City
State
ZIP Code
Is your residence address the same as your mailing address?
Mailing Address
Address 1
Address 2
City
State
ZIP Code
Next
Other Info
Second language
Political Party Affiliation
Are you a state employee?
Have you worked in the election before?
Last election worked?
What position were you?
Do you want to donate your stipend?
NPO
Submit


Overview
List current user's filtered Home dashboards.
Summary
This endpoint will return a set of Home dashboards filtered by an expression. The filter can be applied to multiple
fields and have multiple and/or conditions in it. Alternatively, you may use an existing filter by specifying its
id. If both a filter definition and a filter id are passed, the two filters will be joined with an AND
.
Care will need to be taken to make sure that any filters used have appropriate indexes on the server side otherwise
the runtime of the endpoint will be very long.
Notice
The behavior of this endpoint has changed in v11. For a description of behavior in v11, refer to
GET /<module>. If you continue to use v10 of the API,
your REST calls should behave as before. But, it is advisable to upgrade to v11. Slight differences exist in
the GET method of v10 vs v11.
Migrating to v11:
Recommended Replacement:
GET /Dashboards
The Home module is no longer the default dashboard_module
. To get the Home module
dashboard, include the following filter parameter.
v11:
GET /Dashboards?filter[0][dashboard_module]=Home
name, id. etc. are no longer specified as default fields. To retain the default fields, use
v11:
GET /Dashboards?filter[0][dashboard_module]=Home&fields=id,name,view_name
Request Arguments
| Name |
Type |
Description |
Required |
| filter |
String |
See Filter API. |
False |
| filter_id |
String |
Identifier for a preexisting filter. See
the Filter API for details.
|
False |
| max_num |
Integer |
Max number of records that can be returned. Default is 20, unless overruled by your Sugar configuration.
|
False |
| offset |
Integer |
The number of records to skip over before records are returned. Default is 0. |
False |
| fields |
String |
Comma delimited list of fields to return. Each field may be represented either by string, or by map
containing field name and additional field parameters (applicable to link and collection fields).
The fields id and date_modified will always be returned.
For more details on additional field parameters, see
Relate API and
Collection API.
|
False |
| order_by |
String |
See Filter API. |
False |
| deleted |
Boolean |
Boolean to show deleted records in the result set. |
False |
Response Arguments
| Name |
Type |
Description |
| next_offset |
Integer |
Displays the next offset for retrieval of additional results. -1 will be returned when there are no more
records.
|
| records |
Array |
An array of results containing matched records. |
Response
{
"next_offset": -1,
"records": [
{
"id": "c630c772-faca-2051-6a42-56fab2e73e42",
"name": "New Home Dashboard",
"date_modified": "2016-03-29T09:49:06-07:00",
"view_name": "",
"_acl": {
"fields": {}
},
"view": "",
"_module": "Dashboards"
},
{
"id": "15677f2c-f00d-c59a-6fbe-56fab1f33732",
"name": "Home Dashboard2",
"date_modified": "2016-03-29T09:47:25-07:00",
"view_name": "",
"_acl": {
"fields": {}
},
"view": "",
"_module": "Dashboards"
},
{
"id": "d509b3da-29f6-7b23-7cce-56fab1a6335b",
"name": "Accounts Dashboard",
"date_modified": "2016-03-29T09:46:00-07:00",
"view_name": "records",
"_acl": {
"fields": {}
},
"view": "records",
"_module": "Dashboards"
},
{
"id": "cc4982cd-0bdf-bad4-d079-56fab4bdddf1",
"name": "Activity Stream Dashboard",
"date_modified": "2016-03-29T09:57:58-07:00",
"view_name": "activities",
"_acl": {
"fields": {}
},
"view": "activities",
"_module": "Dashboards"
}
]
}
Change Log
| Version |
Change |
| v11 |
Behavior has changed. Please see GET /Dashboards
for the designated replacement.
|
| v10 |
Added /Dashboards GET endpoint. |


Liverpool Football Club
You'll Never Walk Alone
Home
News
Fixtures
Players
Injuries
Transfers
Rivalries
Other News
Jerseys
Gallery
Images
Videos
Store
Liverpool Store
Contact Details
Name
Email
Address
Delivery Type
Delivery
------Select------
Pick Up at Kitchener Location
Pick Up at Waterloo Location
Pick Up at Cambridge Location
Normal Delivery
Fast Delivery
Priority Delivery
Products
Products
Home Kit
Away Kit
Alternate Kit
2005 Special Edition Kit
Delivery Instructions
Instructions
×
Confirm Purchase?
If yes, close this and click submit.


| Package | Description |
|---|---|
| com.googlecode.mobilityrpc.controller.impl |
[private api] Implementation classes for
MobilityController . |
| com.googlecode.mobilityrpc.network |
[public api] Contains
ConnectionManager , a public API for managing
connections. |
| com.googlecode.mobilityrpc.network.impl |
[private api] Implementation classes for
ConnectionManager . |
| com.googlecode.mobilityrpc.network.impl.tcp |
[private api] Implementation classes for TCP implementation of
ConnectionManager . |
| com.googlecode.mobilityrpc.protocol.processors |
[private api] Defines the
DeserializedMessageProcessor API,
implemented by classes which can process particular types of incoming messages. |
| com.googlecode.mobilityrpc.protocol.processors.impl |
[private api] Implementations of
DeserializedMessageProcessor
for processing various types of incoming message. |
| com.googlecode.mobilityrpc.quickstart |
[public api] Contains a simplified API to the library, wrapping the main APIs, tailored for specific use cases and
for getting started with the library quickly.
|
| com.googlecode.mobilityrpc.session |
[public api] Contains
MobilitySession , the gateway through which
the application can send objects to remote machines. |
| com.googlecode.mobilityrpc.session.impl |
[private api] Contains
MobilitySession implementation classes. |
| Modifier and Type | Method and Description |
|---|---|
void |
MobilityControllerImpl.receiveIncomingMessage(ConnectionId connectionId,
byte[] message) |
void |
MobilityControllerImpl.sendOutgoingMessage(ConnectionId identifier,
Object message) |
| Modifier and Type | Method and Description |
|---|---|
ConnectionId |
Connection.getConnectionId() |
| Modifier and Type | Method and Description |
|---|---|
Collection<ConnectionId> |
ConnectionManager.getConnectionIds()
Returns the set of
ConnectionId s for the currently open connections. |
Collection<ConnectionId> |
ConnectionManager.getConnectionListenerIdentifiers()
Returns the set of
ConnectionId s for the currently bound listeners. |
| Modifier and Type | Method and Description |
|---|---|
void |
ConnectionManager.bindConnectionListener(ConnectionId localEndpointIdentifier)
Opens a listener on the local machine to receive inbound connections from other machines to the specified
address and port on the local machine.
|
Connection |
ConnectionManager.getConnection(ConnectionId destinationIdentifier)
Returns a connection to the destination specified.
|
void |
ConnectionManager.unbindConnectionListener(ConnectionId localEndpointIdentifier)
Closes a listener on the local machine which was previously opened via the
ConnectionManager.bindConnectionListener(ConnectionId) method. |
| Modifier and Type | Method and Description |
|---|---|
ConnectionId |
ConnectionListener.getConnectionId() |
| Modifier and Type | Method and Description |
|---|---|
Collection<ConnectionId> |
ConnectionManagerImpl.getConnectionIds() |
Collection<ConnectionId> |
ConnectionManagerImpl.getConnectionListenerIdentifiers() |
| Modifier and Type | Method and Description |
|---|---|
void |
ConnectionManagerImpl.bindConnectionListener(ConnectionId localEndpointIdentifier) |
Connection |
ConnectionManagerImpl.getConnection(ConnectionId identifier) |
boolean |
ConnectionStateListener.isConnectionRegistered(ConnectionId connectionId) |
boolean |
ConnectionManagerImpl.isConnectionRegistered(ConnectionId connectionId) |
void |
IncomingMessageHandler.receiveIncomingMessage(ConnectionId connectionId,
byte[] serializedMessage)
Supplies the message to the handler for it to be processed.
|
void |
OutgoingMessageHandler.sendOutgoingMessage(ConnectionId connectionId,
Object message)
Serializes the supplied message object and submits it to the outgoing message queue of the connection indicated,
such that it will be sent to the machine at the other end of the connection for processing.
|
void |
ConnectionManagerImpl.unbindConnectionListener(ConnectionId localEndpointIdentifier) |
| Modifier and Type | Method and Description |
|---|---|
ConnectionId |
TCPConnectionListener.getConnectionId() |
ConnectionId |
TCPConnection.getConnectionId() |
| Constructor and Description |
|---|
IncomingByteStreamReader(ConnectionId connectionId,
InputStream inputStream,
IncomingMessageHandler incomingMessageHandler,
ConnectionErrorHandler connectionErrorHandler) |
OutgoingByteStreamWriter(ConnectionId connectionId,
OutputStream outputStream,
MessageProvider<byte[]> outgoingMessageProvider,
ConnectionErrorHandler connectionErrorHandler) |
TCPConnection(Socket socket,
ConnectionId connectionId,
IncomingMessageHandler incomingMessageHandler,
ConnectionStateListener connectionStateListener) |
TCPConnectionListener(ConnectionId localEndpointIdentifier,
IncomingMessageHandler incomingMessageHandler,
ConnectionStateListener connectionStateListener) |
| Modifier and Type | Method and Description |
|---|---|
void |
DeserializedMessageProcessor.process(MobilityControllerInternal mobilityController,
ConnectionManager connectionManager,
ConnectionId connectionId,
T deserializedMessage) |
| Modifier and Type | Method and Description |
|---|---|
void |
ExecutionRequestMessageProcessor.process(MobilityControllerInternal mobilityController,
ConnectionManager connectionManager,
ConnectionId connectionId,
ExecutionRequest executionRequest) |
void |
ExecutionResponseMessageProcessor.process(MobilityControllerInternal mobilityController,
ConnectionManager connectionManager,
ConnectionId connectionId,
ExecutionResponse executionResponse) |
void |
PingMessageProcessor.process(MobilityControllerInternal mobilityController,
ConnectionManager connectionManager,
ConnectionId connectionId,
Ping ping) |
void |
PongMessageProcessor.process(MobilityControllerInternal mobilityController,
ConnectionManager connectionManager,
ConnectionId connectionId,
Pong pong) |
void |
ResourceRequestMessageProcessor.process(MobilityControllerInternal mobilityController,
ConnectionManager connectionManager,
ConnectionId connectionId,
ResourceRequest resourceRequest) |
void |
ResourceResponseMessageProcessor.process(MobilityControllerInternal mobilityController,
ConnectionManager connectionManager,
ConnectionId connectionId,
ResourceResponse resourceResponse) |
| Modifier and Type | Method and Description |
|---|---|
static <T> T |
QuickTask.execute(ConnectionId connectionId,
Callable<T> callable)
Transfers the given
Callable object, and any objects it references, to the given remote machine,
and executes it (calls the Callable.call() method) on the remote machine. |
static void |
QuickTask.execute(ConnectionId connectionId,
Runnable runnable)
Transfers the given
Runnable object, and any objects it references, to the given remote machine,
and executes it (calls the Runnable.run() method) on the remote machine. |
| Modifier and Type | Method and Description |
|---|---|
static ConnectionId |
MobilityContext.getCurrentConnectionId()
Returns the
ConnectionId from which the current request was received. |
| Modifier and Type | Method and Description |
|---|---|
<T> T |
MobilitySession.execute(ConnectionId connectionId,
Callable<T> callable)
Transfers the given
Callable object, and any objects it references, to the given remote machine,
and executes it (calls the Callable.call() method) on the remote machine. |
<T> T |
MobilitySession.execute(ConnectionId connectionId,
ExecutionMode executionMode,
Callable<T> callable)
Transfers the given
Callable object, and any objects it references, to the given remote machine,
and executes it (calls the Callable.call() method) on the remote machine. |
void |
MobilitySession.execute(ConnectionId connectionId,
ExecutionMode executionMode,
Runnable runnable)
Transfers the given
Runnable object, and any objects it references, to the given remote machine,
and executes it (calls the Runnable.run() method) on the remote machine. |
void |
MobilitySession.execute(ConnectionId connectionId,
Runnable runnable)
Transfers the given
Runnable object, and any objects it references, to the given remote machine,
and executes it (calls the Runnable.run() method) on the remote machine. |
| Modifier and Type | Method and Description |
|---|---|
protected static ConnectionId |
MobilityContextInternal.getCurrentConnectionId() |
| Modifier and Type | Method and Description |
|---|---|
<T> T |
MobilitySessionImpl.execute(ConnectionId connectionId,
Callable<T> callable) |
<T> T |
MobilitySessionImpl.execute(ConnectionId connectionId,
ExecutionMode executionMode,
Callable<T> callable) |
void |
MobilitySessionImpl.execute(ConnectionId connectionId,
ExecutionMode executionMode,
Runnable runnable) |
void |
MobilitySessionImpl.execute(ConnectionId connectionId,
Runnable runnable) |
void |
MobilitySessionInternal.receiveIncomingExecutionRequest(ConnectionId connectionId,
ExecutionRequest executionRequest)
Called when we receive an incoming
ExecutionRequest object from a remote machine addressed to this
session. |
void |
MobilitySessionImpl.receiveIncomingExecutionRequest(ConnectionId connectionId,
ExecutionRequest executionRequest) |
void |
SessionClassLoader.setThreadLocalConnectionId(ConnectionId connectionId)
Called by threads processing an execution request from a remote machine, to indicate to this class loader that
should those threads require classes to be loaded that the class loader can request those classes from the
remote machine indicated.
|
Copyright © 2012. All Rights Reserved.


kobi video
hi alisa!!!!
Switch Camera
my email is<EMAIL_ADDRESS>Unmuted
Video Enabled
hi from
kobi!
(forket from antongenis. antongenis forket it from dirvann.)


We have a huge Collection of possible Portfolios. Each portfolio contains all relevant insurance products for a specific personal situation. Click here to browse all portfolios.


window.onload=init(); window.onload=init1();
CHEAR
Child Health Exposure Analysis Repository
Yue Liu
Anirudh Prabhu
Zhicheng Liang
John Sheehan
Overview
Main Chear
Data flow Example
Q.What Body Measurements are relevant to physician diagnosed asthma
The Flow


Parking Reservations
At many regattas parking is limited,
and the best way to ensure you can get a spot to park your car is to view the parking prices below before you vist.
The tickets can cost anywhere from $3 to $30 with discounts for the elderly and for adults with children.
View the prices below to buy your ticket form the next scheduled regatta!
Senior Citizens Pricing
With Season Pass
- Early Morning Hours Before 11 A.M. $3
- Afternoon $5
Without Season Pass
- Early Morning Hours Before 11 A.M. $7
- Afternoon $9
Adults with Children
With Season Pass
- Early Morning Hours Before 11 A.M. $7.50
- Afternoon $10
Without Season Pass
- Early Morning Hours Before 11 A.M. $15
- Afternoon $20
Adults without Children
With Season Pass
- Early Morning Hours Before 11 A.M. $12.50
- Afternoon $15
Without Season Pass
- Early Morning Hours Before 11 A.M. $25
- Afternoon $30
Go Back
Go Back Home


Third 'Walking Dead' series reveals official title
by PTIThe third spin-off in "The Walking Dead" franchise has been officially titled "The Walking Dead: World Beyond".
The title was revealed on Sunday in a new teaser on the show's verified Twitter account.
"Get ready for the #TWDUniverse to expand. #TWDWorldBeyond coming this spring" read the caption of the video.
Set to arrive in spring 2020, the new show will feature two young female protagonists and focus on the first generation to come-of-age in the apocalypse, reported ComicBook.com.
"Some will become heroes. Some will become villains. In the end, all of them will be changed forever. Grown-up and cemented in their identities, both good and bad," the synopsis further read.
The already announced cast includes Nico Tortorella, Aliyah Royale, Annet Mahendru, Alexa Mansour, Nicolas Cantu, and Hal Cumpston.
Joining the show's series regulars in recurring guest roles are Natalie Gold, Al Calderon, Scott Adsit, and Ted Sutherland.


This application illustrate one of the machine learning algorithm : BP Artificial Neural Network.
To get start :
- Choose a data file in csv format, or use the default "Wine Quality" fine.
- Configure the model parameters
- After the model is built, you can see the model in the "Illustration" tab.
- Follow the machine learning progress in "Analyse" tab.


---
layout: post
title: topoware topoware is a tableware collection that
date: '2008-02-27T17:13:12+00:00'
tags: []
tumblr_url: http://backlog.robbevan.com/post/27438711/topoware-topoware-is-a-tableware-collection-that
---
Topoware: Topoware is a tableware collection that questions the landscape of dining. Taking inspiration from the recent popularity of geography as a media of communication (with Google maps) and more specifically with topographic maps, which define heights of a landscape two dimensionally, Topoware in turn, “outlines” the dining experience.


| |
Office Neighbor Schedule Resolver
|
|
Week of {0}
|
Hi, {1}!
|
|
Thank you for submitting your Office Neighbor Schedule Resolution Request for the week! Based on your request submission/your nearest office neighbor’s ({2}) request submission, we have identified mutually requested time in the office requiring your continued input in the Office Neighbor Schedule Resolution process for complete resolution of your in-person work schedule for the coming week.
|
|
| |
|
Reconcile with Your Nearest Office Neighbor in the Office Neighbor Schedule Resolution Process
|
|
Based on your Office Neighbor Schedule Resolution Request submission/your nearest office neighbor's Office Neighbor Schedule Resolution Request submission for the upcoming week, we have determined in person office time requested by you as well as by your nearest office neighbor to require continued reconciliation. Please continue on in the Office Neighbor Schedule Resolution process and update your Office Neighbor Schedule Resolution Request for the week on the following days where conflicting with your nearest office neighbor's schedule before re-submitting.
|
|
|
|
|
|
Please Be Mindful of Your Nearest Office Neighbor!
|
|
Please remember that your nearest office neighbor is a real life person and you can most definitely talk to them in real life about the Office Neighbor Schedule Resolution process.
|
|
In the same way, please be prepared for your nearest office neighbor to reach out to you about discussing the matter.
|
|
Once you do enter into dialog with your nearest office neighbor about reconciling your work schedule for the upcoming week, please be mutually respectful and responsive to help you and your nearest office neighbor in reaching a good outcome together.
|
|
Keep Us Informed
|
|
You can always contact us directly as well to help you set up your schedule for the coming week!
|
|
|
|
|
The Six-Foot Office
|
|
Copyright © 2021, All Rights Reserved.
|
|


Digital Identities Interactive Exhibit
An interactive exhibit for Imagine RIT 2019 designed to allow visitors to visualize their individuality through personal expression and image abstraction.
TASK
This semester-long senior capstone project was designed and developed by Alex Kim, Shelby Mason, Caren Flohr, Erika Kallio, Ian Loomis, Matthew Freeberg, Patrick Bell, and myself.
DURATION
January - May 2019
ROLE
UI/UX, Development
Imagine RIT
DO GOOD
We were tasked with creating an interactive exhibit for the Rochester Institute of Technology's 2019 Imagine RIT: Creativity & Innovation Festival, and with a loose prompt of "Do Good", the possibilities for our senior capstone project were endless.
INTERDISCIPLINARY TEAMS
Adam Smith, of the New Media Design program, and Sten McKinzie, of the New Media Interactive Development program, collected short questionnaires from seniors of the two majors and divided them up into eight teams to work together on projects for the annual festival.
Meet the Team
WORKING TOGETHER
Our team consisted of five New Media Design majors, two New Media Interactive Development majors, and one design student on exchange for the semester from Dessau, Germany.
BRAINSTORMING
After coming together to meet a few times to discuss what our project should be about, we made the decision to focus on individuality in the age of social media.
Research
HERD MENTALITY
Research shows that "social influence is a powerful force in nature and society" and that, while useful in certain circumstances such as avoiding dangerous situations for animals or getting the best smartphone on the market, it can lead to "individuals [devaluing] their own personal information in favor of imitating the actions, or opinions, of others."
SELF(IE) IDENTITY
This idea is just as prevalent in social media. One article tells us that "differences between our “real” and online identities can shape not only how others perceive us but our self-perceptions, creating pressure to be more like the often idealized digital versions of ourselves and our peers," and another argues that the "shift in identity, from internally derived to externally driven, can't be good for us as individuals nor for us as a society."
Our Solution
VISUALIZING INDIVIDUALITY
In order to get away from the pressure to conform, we decided to provide visitors an opportunity to visualize their individuality through personal expression and image abstraction.
UNIQUE EXPRESSION
Visitors would answer a few questions about themselves and their personal preferences through an interactive survey and their answers were translated into an abstracted visual representation of what makes them unique.
How do we visualize identity?
PLAYING WITH COLOR
After some initial color tests, we decided to go with a bright and neon type of theme for the project. We wanted people to be loud and proud when it came to their personality so we figured bold colors would help accomplish this.
SYMMETRY
Since our art was going to be generated using personality quiz answers, we had to create a design system that would look cohesive no matter what inputs were used. We played around with symmetry and asymmetry to give our concept art the feeling of generated art.
CREATING DEPTH
In order to create more visual interest in the portraits, we then focused on putting elements in the foreground, middleground and background to create a greater sense of depth.
COMBINING IT ALL TOGETHER
Adding each of these elements together pushed our mockups in a direction that we were all super interested in, and hoped that our excitement would be passed on to our visitors.
Defining a Brand
DEVELOPING OUR BRAND IDENTITY
Now that we had a visual style for the generated art, we started to build up the brand to support the project. Our early logo concepts reflected our early mockups but as the style developed, so did our brand identity.
The Quiz
QUIZ QUESTIONS
In order to create a unique portrait for each and every person, we had to come up with a list of questions that would influence the art in different ways for everyone. We decided that a good starting off point was a person's name and birth month.
PREFERENCE-BASED
The next set of questions were more focused on how a person answers more preference-based questions such as where they would want to live, if they're a morning person or a night owl, if they liked cats or dogs more, or even how they felt about pineapple on pizza.
SELF-REFLECTION
These questions are more based on how a person sees themselves such as how messy or organized they think they are, if they're more introverted or extroverted, or if they consider themselves more methodical or spontaneous.
FINISHING UP
Once the user answers all the questions, they get a review of how they answered and then are assigned a unique ID number that is associated with their stored results on our backend server.
Development
IMAGE GENERATION
We used the JavaScript library p5.js for our image generation for its full set of drawing capabilities that play nicely with HTML canvas elements.
BACKEND STORAGE
Since we wanted people to take the quiz and view their generated art on different devices, we needed a way to transfer that data across platforms. To accomplish this, we used Google Firebase to store the answers from each quiz submission.
INITIAL DEVELOPMENT TESTS
Early on in the development process, we played around with how different elements would be displayed on the final artwork. We decided against using recognizable letters in favor of more abstracted shapes and gradients but needed something more deliberate than randomly placed objects.
DEVELOPED MOCKUPS
As the designers of the group honed in on a more specific direction towards the final pieces, the developers started replicating their mockups in p5 so we had examples of how to create similar shapes.
PUSHING IT FURTHER
After starting to build up a code library of a variety of shapes and elements, we started to test which questions would affect the different portions of the art.
FINIALIZING THE PROGRAM
Finally in the nick of time, we finalized the image generation program and started going around to a small trial group to take the quiz and test it out so we could squash any bugs and make any final decisions about how the questions would affect the art.
Building the Platform
FRONT-END DEVELOPMENT
We built our platform using React.js and WordPress to deliver a seamless experience to our visitors. The website would house everything from information about the project and blog posts with how things are going, to the actual quiz and image generator.
BACK-END DEVELOPMENT
When the user takes the quiz and submits their data, it's uploaded to our Firebase server and they are given their own unique ID code. When it comes time to generate their artwork, they can simply enter their code and then our p5 algorithm generates their personalized art.
Designing the Exhibit
FLOW OF PEOPLE
To take advantage of our space in the most useful way possible, we designed the space to introduce people to the project right when they walk in the door, prompt them to take the quiz, lead them to the projector where they can view a large version of their generated art and even take a picture in front of it, then be led towards swag in the form of stickers and glowsticks, and finally view the debrief where they learn about how their image was created.
A DIVERSE CROWD
We had a steady stream of people from all walks of life coming through our exhibit during the entire seven hours of the festival! With over 550 quizzes completed throughout the day, we were very proud with how things ended up. Check out some of the portraits we took during the festival on our Facebook page.
AN AMAZING EXPERIENCE
The Digital Identities team was honored to have such a great outcome during Imagine RIT and would like to thank the following people for their support:
- Basit Qaderi
- Jess Wiltey
- Joanna Burdett
- Marci Martindale
- Tanya Loomis
- Ethelia Lung
- John Pellico
- Jacob Leighty
- Susannah Stewart
- Will Smillie
Survey Stats
Check it out
LINKS
Our exhibit was a one-time-only experience, but you can still see everything we made throughout the semester on the following pages:


Russia Condemns Israel’s Air Strikes in Syria
by David IsraelRussia’s special representative for the Middle East and Africa, Deputy Foreign Minister Mikhail Bogdanov, said on Wednesday that his country regards the Israeli air strikes on Syrian territory as “very wrong,” TASS reported.
“We will look into the circumstances. All this is very wrong,” he said. “It merely causes an unnecessary escalation of tensions.”
Reports on Wednesday said that while devastating several ground-to-air missile batteries, Israel did not damage the Syrian army’s advanced SS-300 battery, which is operated by Russian soldiers (See: IDF Attacks Dozens of Iranian Quds, Syrian Army Targets in Retaliation for Rockets).
On Tuesday, Bogdanov attended a meeting in Moscow between Secretary of the Russian Security Council Nikolai Patrushev and Israeli National Security Adviser Meir Ben-Shabbat. The meeting reportedly dealt specifically with the Iranian presence in Syria.


The Quran was revealed to the Prophet Muhammed (SAW) in 610-632 AD whereas the first manuscript of a Hadith was in approx. 844-1185 AD. But it's hard to tell because we don't have many old sources of Hadith.
So 212-553 years after the Prophet's (SAW) death and after the complete Quran (assuming the Quran was completed right at the death of the Prophet (SAW)).
If you say that you need Hadith to explain or to change the meaning of the Quran, then aren't you saying that the Quran is incomplete and needs further explanation.
6:114
“Shall I seek a judge other than Allah, when He is the One who revealed to you the Book, explained in detail?” Those to whom We gave the Book know that it is the truth revealed from your Lord. So do not be of those who doubt.
6:115
The Word of your Lord has been completed, in truth and justice. There is no changing to His words. He is the Hearer, the Knower.
6:38
There is no animal on land, nor a bird flying with its wings, but are communities like you. We neglected nothing in the Scripture. Then to their Lord they will be gathered.
6:116
If you were to obey most of those on earth, they would divert you from Allah’s path. They follow nothing but assumptions, and they only conjecture.
33:40
Muhammad is not the father of any of your men; but he is the Messenger of Allah, and the seal of the prophets. Allah is Cognizant of everything.


Smart Displays Now Available
Here. Oh man, I *so* want one of these, but I can't decide whether to get the 15" one and use it as a monitor as well as a tablet, get the 8" for cuddling up to in bed or something in the middle!
Also, does anyone know if these things support the same software as a TabletPC? They certainly should.


Cancel
Help
The live view shows
workers
compiling orders displayed in the left sidebar as well as a
heatmap
based on the number of accesses.
Each
shelf's
inventory and access count can be viewed by simply clicking on it.
Clicking on an article name in that very inventory window brings up a list of associated articles most frequently ordered together.
To restock the current storage configuration based on accesses simply press
"Planning"
.
The
Cancel
button brings you back to the main menu.
View storage:
Planning
×
Shelf inventory:
article
stored
accessed
×
Frequently ordered together:
article
occurrences (absolute)
occurrences (relative)


Optimized JSON in C (OjC), as the name implies, was written to provide performant JSON handling. The primary focus is for applications that need the maximum performance when reading large JSON document from a file or socket. Functions for building, formatting, and writing JSON are also part of the library.
There are a number of options for parsing JSON to address a variety of use cases but in all cases an attempt was made to keep the API as easy to use as possible. The code itself is fairly direct in regard to implementing the algorithms selected in an attempt to make it easy to read and follow. At least that was goal. It is up to the reader to make that judgement though.
Since the code is Open Source most of the types and structs are exposed. There is no reason to hide them when someone can just look at the code and modify it anyway. An object model is used for functions and structures. At the core is the ojVal struct that represents the elements of a JSON document. Generally functions start with the name of the type they are associated with such as oj_build_object() for a function that uses an ojBuilder type. The ojVal is the exception as it is the code so functions such as oj_double_get() forgo the oj_val prefix that might be expected.
In the interest of keeping OjC is as flexible as possible, OjC can not only read from files but also from any file descriptor whether it represents a file, socket, or some other stream. There are no restrictions on how multiple JSON documents appear in the stream other than each document must be valid JSON and only white space is allowed between JSON documents. Formatted or indented JSON is accepted as well as compact JSON that is on one line. Callback APIs are used when parsing streams containing multiple JSON documents.
Found in the examples/validate directory.
Parse a JSON string and return an JSON element as an ojVal. ojVal is the type used to represent JSON element in the OjC library.
Parse a JSON string using callbacks on each element. For every element the push callback is made. The pop callback is called when an array or object close is encountered. This approach is similar to the XML SAX parsers or the Ruby Oj SCP parser and Oj::ScHandler. It can be more efficient if there is no need to build a full JSON structure in memory. It is also useful when parsing a string that contains multiple JSON documents.
Parse a JSON string using callbacks on each document. For every document the callback is invoked. This is an effective way to iterate over multiple documents in a string.
The callback function's return value indicates to the parser what whould be done after the callback. If the document (val) is no longer needed then OJ_DESTROY is returned. If the parsing should be stopped then OJ_STOP is returned. To both stop and cleanup the two values are ORed together (OJ_DESTROY | OJ_STOP).
Parse a JSON string using callbacks on each document. For every document the callback is invoked but invoked in a thread separate from the parser. This is an effective way to iterate over multiple documents in a string where significant processing time is spent on each document. There is some overhead using the caller so it is best used when there is some processing of the documents involved.
The callback function's return value indicates to the parser what whould be done after the callback. If the document (val) is no longer needed then OJ_DESTROY is returned. If the parsing should be stopped then OJ_STOP is returned. To both stop and cleanup the two values are ORed together (OJ_DESTROY | OJ_STOP).
Parse a JSON file and return an JSON element as an ojVal. ojVal is the type used to represent JSON element in the OjCz library.
The input file, sample.json has the following content although and JSON file should be fine.
Parse a JSON file using callbacks on each element. For every element the push callback is made. The pop callback is called when an array or object close is encountered. This approach is similar to the XML SAX parsers or the Ruby Oj SCP parser and Oj::ScHandler. It can be more efficient if there is no need to build a full JSON structure in memory. It is also useful when parsing a file that contains multiple JSON documents.
The input file, sample.json has the following content although and JSON file should be fine.
Parse a JSON file using callbacks on each document. For every document the callback is invoked. This is an effective way to iterate over multiple documents in a file.
The callback function's return value indicates to the parser what whould be done after the callback. If the document (val) is no longer needed then OJ_DESTROY is returned. If the parsing should be stopped then OJ_STOP is returned. To both stop and cleanup the two values are ORed together (OJ_DESTROY | OJ_STOP).
The input file, sample.json has the following content although and JSON file should be fine.
Parse a JSON file using callbacks on each document. For every document the callback is invoked but invoked in a thread separate from the parser. This is an effective way to iterate over multiple documents in a file where significant processing time is spent on each document. There is some overhead using the caller so it is best used when there is some processing of the documents involved.
The callback function's return value indicates to the parser what whould be done after the callback. If the document (val) is no longer needed then OJ_DESTROY is returned. If the parsing should be stopped then OJ_STOP is returned. To both stop and cleanup the two values are ORed together (OJ_DESTROY | OJ_STOP).
The input file, sample.json has the following content although and JSON file should be fine.
This example demonstrates the use of the ojBuilder to construct a JSON document as well as writing the document to a file as indented JSON.
This enum is for the return values of the ojParseCallback functions.
| OJ_CONTINUE | Indicates parsing should continue. |
| OJ_STOP | Indicates parsing should stop. |
| OJ_DESTROY | Indicates the ojVal argument to the callback should be freed. This value can be OR-ed with either OJ_CONTINUE or OJ_STOP. |
Used to indicate how object members are stored in a value.
| OJ_OBJ_RAW | Members are stores as a simple list. |
| OJ_OBJ_HASH | Members are store in a fixed size hash. |
Functions that can fail take an ojErr argument. If an error occurs the fields of the ojErr are set. The ojErr.code is set to either one of the errors in errno.h or to one of the ojStatus enum values.
| OJ_OK | No error, Okay |
| OJ_ERR_MEMORY | A memory error |
| OJ_ERR_PARSE | A parse error |
| OJ_ERR_READ | A read error |
| OJ_ERR_WRITE | A write error |
| OJ_ERR_OVERFLOW | An overflow error |
| OJ_ERR_ARG | An argument error |
| OJ_ERR_TOO_MANY | Too many of something error |
| OJ_ERR_TYPE | A type error |
| OJ_ERR_KEY | A key error |
| OJ_ABORT | An indication that parsing should stop |
| OJ_ERR_LAST | Maximum enum value |
Used to identify ojVal types.
| OJ_NONE | Type not set |
| OJ_NULL | Value is a JSON null |
| OJ_TRUE | Value is a JSON true |
| OJ_FALSE | Value is a JSON false |
| OJ_INT | Value is a int64_t |
| OJ_DECIMAL | Value is a long double |
| OJ_BIG | Value is a bignum stored as a string (const char*) |
| OJ_STRING | Value is a string (const char*) |
| OJ_OBJECT | Value is a JSON object |
| OJ_ARRAY | Value is a JSON array |
Used for building strings as well as writing to files. The buffer starts out with a fixed size base and appends to that until more space is needed. If more space is needed it is allocated. If fronting for a file then the buffer is written and the tail is reset.
| char* | head | Always points to the string being built |
| char* | end | Marks the end of the buffer |
| char* | tail | The current or next position to write to |
| int | fd | fiel descriptor to write to is not 0 |
| bool | realloc_ok | A flag indicating reallocation is okay. Set to false if used for reading only. |
| ojStatus | err | Error indicator |
| char | base[4096] | Built in buffer |
Used for building ojVal JSON documents. A stack based approach is used making use of the ojVal.next field.
| ojVal | top | Top of the document |
| ojVal | stack | The stack |
| struct _ojErr | err | Place to store errors |
Struct used internally by the ojCaller.
| ojVal | val | Value for callbacks |
| struct _ojReuser | reuser | Used to return values to the pool |
| atomic_flag | busy | Concurrent use protection |
Used for concurrent callbacks. The fields in the struct should not be modified directly. The correct use of the caller when parsing is to first call the oj_caller_start() and then finish up with oj_caller_wait() after the parser is called.
| struct _ojCall | queue[256] | Callback queue |
| pthread_t | thread | Thread invoking the callback |
| ojParseCallback | cb | The callback |
| void* | ctx | The callback context |
| ojCall | end | The end of the queue |
| ojCall | tail | Last slot for the callback thread |
| atomic_flag | starting | Concurrent protection flag |
| volatile bool | done | Indicator that callbacks are complete |
Struct to store error information.
| int | code | Error code (ojStatus) |
| int | line | Line in document the error occured on if applicable |
| int | col | Column in document the error occured on if applicable |
| char | msg[256] | Message describing the error |
List representation. It is also used for the object raw mode.
| struct _ojVal* | head | Head of the list |
| struct _ojVal* | tail | Tail or last member in the list |
All numbers are stores in this struct. The ojVal.type determines which members are set. Several of the members are only used during parsing and can be ignored.
| long double | dub | Decimal value |
| int64_t | fixnum | Integer values or all digits when parsing |
| uint32_t | len | Length of the string representation |
| int16_t | div | Divisor when parsing |
| int16_t | exp | Exponent when parsing |
| uint8_t | shift | Shift of fixnum to get the decimal value |
| bool | neg | If true the number is negative |
| bool | exp_neg | If true the exponent is negative |
| bool | calc | Indicator that the parts have been used to calculate the fixnum or double value |
| char | raw[88] | String version of the number |
| ojS4k | s4k | String version of the number if too long for the raw field |
| size_t | cap | Capacity of string representation if too long for the s4k field |
| char* | ptr | String representation if too long for the s4k field |
The type for callback functions when using the callback parsers.
The type for the push function with the push-pop parsers.
The type for the pop function with the push-pop parsers.
The struct used for collecting and efficiently returning ojVal instances back to the pool. The fields are used internally only.
| ojVal | head | Head of the ojVals to be returned |
| ojVal | tail | Tail of the ojVals to be returned |
| ojVal | dig | ojVals that need addition free calls. |
Blocks used for strings and bignums that are too large to fit directly into a ojVal. These are used internally.
| union _ojS4k* | next | Linked list link |
| char | str[4096] | Space for the string |
Used to store strings. There are three locations for the string data depending on the string length. Shorter strings are stored in the raw member. The next level up is the s4k member. If the string is larger than a ojS4k then the ptr member is used to store the string.
| int | len | Length of raw or ptr excluding terminating null |
| char | raw[120] | Storage for shorter string |
| ojS4k | s4k | Storage for larger strings |
| size_t | cap | Capacity of extra large strings |
| char* | ptr | Storage for extra large strings |
Each element of a JSON document is represented by the ojVal struct.
| struct _ojVal* | next | Linked list next pointer |
| struct _ojVal* | free | Free list next pointer |
| struct _ojStr | key | Key of the member if a member of an object |
| uint32_t | kh | Hash of the key|
| uint8_t | type | Type of the value (ojType) |
| uint8_t | mod | Modifier of the type (objects only) |
| struct _ojStr | str | String value |
| struct _ojList | list | List and raw object value |
| struct _ojVal* | hash[16] | Object value when a hash |
| struct _ojNum | num | Numeric value |
Thread safe flag. It should be set when using the library from multiple threads.
Appends a member to an array. It can also be used to set an object entry if the member key is set.
| ojErr | err | Used for error reporting. |
| ojVal | val | Array or object to append to. |
| ojVal | member | Member to append. |
Create a new array ojVal.
| ojErr | err | Used for error reporting. |
Return the first member of a list. If not a list or the list is empty NULL is returned.
| ojVal | val | The array to get the first member from. |
Return the last member of a list. If not a list or the list is empty NULL is returned.
| ojVal | val | The list to get the last member from. |
Return the nth member of a list. If not a list or there is no nth element NULL is returned.
| ojVal | val | The list to get the nth member from. |
| int | n | The member offset (n) in the list to return. |
Create a new bignum ojVal.
| ojErr | err | Used for error reporting. |
| const char* | s | String representation of a big number. |
| size_t | len | Length of the string. |
Return the bignum string.
| ojVal | val | Value to get the string from. |
Set the value of a ojVal to a bignum.
| ojErr | err | Used for error reporting. |
| ojVal | val | Value to set. |
| const char* | s | Bignum string. |
| size_t | len | String length. |
Create a new boolean ojVal.
| ojErr | err | Used for error reporting. |
| bool | b | Boolean value for the new ojVal. |
Set the value of a ojVal to a boolean.
| ojVal | val | ojVal to set the value of. |
| bool | b | Boolean value for the ojVal. |
Marshal a ojVal into a ojBuf indented with the specified indentation and stating depth.
| ojBuf | buf | Buffer to fill. |
| ojVal | val | Value to marshal. |
| int | indent | Identation of generated string. |
| int | depth | Initial depth of the indentation. |
Push an array onto the build stack of a ojBuilder and return the state of the builder error code.
| ojBuilder | b | Builder to push the new value to. |
| const char* | key | Key for the value being pushed if parent is an object. |
Push a bignum string onto the build stack or append to the most recent object or array on the stack a ojBuilder and return the state of the builder error code.
| ojBuilder | b | Builder to push the new value to. |
| const char* | key | Key for the value being pushed if parent is an object. |
| const char* | big | The bignum string to push. |
| size_t | len | Length of the bignum string. |
Push a boolean onto the build stack or append to the most recent object or array on the stack a ojBuilder and return the state of the builder error code.
| ojBuilder | b | Builder to push the new value to. |
| const char* | key | Key for the value being pushed if parent is an object. |
| bool | boo | Value to push to the stack. |
Push a long double onto the build stack or append to the most recent object or array on the stack a ojBuilder and return the state of the builder error code.
| ojBuilder | b | Builder to push the new value to. |
| const char* | key | Key for the value being pushed if parent is an object. |
| long double | d | Value to push to the stack. |
Push an int64_t onto the build stack or append to the most recent object or array on the stack a ojBuilder and return the state of the builder error code.
| ojBuilder | b | Builder to push the new value to. |
| const char* | key | Key for the value being pushed if parent is an object. |
| int64_t | i | Value to push on the stack. |
Push a null onto the build stack or append to the most recent object or array on the stack a ojBuilder and return the state of the builder error code.
| ojBuilder | b | Builder to push the new value to. |
| const char* | key | Key for the value being pushed if parent is an object. |
Push an object onto the build stack of a ojBuilder and return the state of the builder error code.
| ojBuilder | b | Builder to push the new value to. |
| const char* | key | Key for the value being pushed if parent is an object. |
Pop a value from the builder stack. This has the effect of closing the most recent object or array.
| ojBuilder | b | Builder to pop a value from. |
Continue popping a value from the builder stack until the stack is empty. This has the effect of closing all remaining objects and arrays.
| ojBuilder | b | Builder to pop values from. |
Push a string onto the build stack or append to the most recent object or array on the stack a ojBuilder and return the state of the builder error code.
| ojBuilder | b | Builder to push the new value to. |
| const char* | key | Key for the value being pushed if parent is an object. |
| const char* | s | String to push onto the stack. |
| size_t | len | Length of the string to push. |
Shutdown a ojCaller which stops the callback thread. Any remaining callbacks are discarded.
| ojCaller | caller | The caller to shutdown. |
Starts a ojCaller so that is is ready when call parser is invoked with it as an argument.
| ojErr | err | Used for error reporting. |
| ojCaller | caller | Caller to start. |
| ojParseCallback | cb | Callback function for calls. |
| void* | ctx | Context for the callback function. |
Wait for a ojCaller to finish processing pending callbacks.
| ojCaller | caller | Caller to wait on. |
Cleans up memory used by the library. It should be called before exiting an application if checking for memory leaks.
Returns a ojVal to the memory pool. A reuse pool is used to improve performance.
| ojVal | val | The ojVal to return to the pool. |
Create a new double numeric ojVal.
| ojErr | err | Used for error reporting. |
| long double | dub | The value to set in the new ojVal. |
Return the long double value of a ojVal. If the ojVal is not a double then 0.0 is returned.
Set the value of a ojVal to a long double.
| ojVal | val | The ojVal set the provided value on. |
| long double | dub | The value to set the ojVal to. |
Iterate over all members of an array or object.
| ojVal | val | Array or object ojVal to iterate over. |
| bool (*)(ojVal, void*) | cb | Callback to be invoked for each member of the array or object. |
| void* | ctx | Context to provide to each callback invocation. |
Initialize a ojErr struct.
| ojErr | err | ojVal to initialize. |
Fill a buffer with a ojVal marshalled into JSON.
| ojErr | err | Used for error reporting. |
| ojVal | val | ojVal to marshal into JSON. |
| int | indent | Indentation to use for formatting the JSON. |
| char* | buf | Buffer to fill with JSON. |
| int | max | Maximum size of encoded JSON. |
Write a ojVal to a file encoded as JSON.
| ojErr | err | Used for error reporting. |
| ojVal | val | ojVal to encode. |
| int | indent | Indentation to use for formatting the JSON. |
| const char* | filepath | Filename to write to. |
Create a new integer numeric ojVal.
| ojErr | err | Used for error reporting. |
| int64_t | fixnum | TBD. |
Return the int64_t value of a ojVal. If the ojVal is not a int then 0 is returned.
| ojVal | val | ojVal to get the value from. |
Set the value of a ojVal to a int64_t.
| ojVal | val | ojVal to set the value of. |
| int64_t | fixnum | The value to set the ojVal to. |
Return the key of a ojVal.
| ojVal | val | The ojVal to get the key from. |
Set the key of a ojVal.
| ojErr | err | Used for error reporting. |
| ojVal | val | ojVal to set the key of. |
| const char* | key | Key to set the ojVal to. |
| size_t | len | Length of the key. |
Create a new null ojVal.
| ojErr | err | Used for error reporting. |
Set the value of a ojVal to null.
| ojVal | val | ojVal to set to a null value. |
Create a new object ojVal.
| ojErr | err | Used for error reporting. |
Find the member of the object that has a matching key if the ojVal is an object. The mode is not changed.
| ojVal | val | Object to get a value from. |
| const char* | key | Key to match. |
| int | len | Length of the key. |
Get the member of the object that has a matching key if the ojVal is an object. The mode is set to OJ_OBJ_HASH.
| ojVal | val | Object to get a value from. |
| const char* | key | Key to match. |
| int | len | Length of the key. |
Set a member of the object associated with the provided key.
| ojErr | err | Used for error reporting. |
| ojVal | val | Object to set the member of. |
| const char* | key | Key for the member. |
| ojVal | member | Member to be set associated with the key. |
Parse JSON read from a file descriptor. Only one JSON document should be in the stream. The caller is responsible for freeing the returned value with oj_destroy() or by using the reuser if provided.
| ojErr | err | Used for error reporting. |
| int | fd | Stream parse. |
| ojReuser | reuser | Optional reused for freeing the returned value. |
Parse multiple JSON documents from a file descriptor using callback through the provided caller.
| ojErr | err | Used for error reporting. |
| int | fd | Stream to read from. |
| ojCaller | caller | Caller for invoking callbacks. |
Parse multiple JSON documents from a file descriptor using a callback function.
| ojErr | err | Used for error reporting. |
| int | fd | Stream to read from. |
| ojParseCallback | cb | Callback function. |
| void* | ctx | Context for the callback. |
Parse JSON read from a file. Only one JSON document should be in the file. The caller is responsible for freeing the returned value with oj_destroy() or by using the reuser if provided.
| ojErr | err | Used for error reporting. |
| const char* | filename | File to parse. |
| ojReuser | reuser | Optional reused for freeing the returned value. |
Parse multiple JSON documents from a file using callback through the provided caller.
| ojErr | err | Used for error reporting. |
| int | filename | File to read from. |
| ojCaller | caller | Caller for invoking callbacks. |
Parse multiple JSON documents from a file using callback through the provided callback function.
| ojErr | err | Used for error reporting. |
| const char* | filename | File to parse. |
| ojParseCallback | cb | Callback function. |
| void* | ctx | Context for the callback. |
pp Parse JSON string. Only one JSON document should be in the string. The caller is responsible for freeing the returned value with oj_destroy() or by using the reuser if provided.
| ojErr | err | Used for error reporting. |
| const char* | json | String to parse. |
| ojReuser | reuser | Optional reused for freeing the returned value. |
Parse multiple JSON documents from a string using callback through the provided caller.
| ojErr | err | Used for error reporting. |
| const char* | json | String to parse. |
| ojCaller | caller | Caller for invoking callbacks. |
Parse multiple JSON documents from a string using callback through the provided callback function.
| ojErr | err | Used for error reporting. |
| const char* | json | String to parse. |
| ojParseCallback | cb | Callback function. |
| void* | ctx | Context for the callback. |
Parse a JSON string pointed to by the json pointer. Only one document is parsed and then the json argument is set to point to just after the parsed string. The caller is responsible for freeing the returned value with oj_destroy() or by using the reuser if provided.
| ojErr | err | Used for error reporting. |
| const char** | json | Pointer to a string to parse. |
| ojReuser | reuser | Optional reused for freeing the returned value. |
Parse multiple JSON documents from a file descriptor using callbacks for pushing values when they are first encountered and popping when array or objects are closed.
| ojErr | err | Used for error reporting. |
| int | fd | Stream to parse. |
| ojPushFunc | push | Push callback. |
| ojPopFunc | pop | Pop callback. |
| void* | ctx | Context for both callbacks. |
Parse multiple JSON documents from a file using callbacks for pushing values when they are first encountered and popping when array or objects are closed.
| ojErr | err | Used for error reporting. |
| const char* | filepath | File to parse. |
| ojPushFunc | push | Push callback. |
| ojPopFunc | pop | Pop callback. |
| void* | ctx | Context for both callbacks. |
Parse multiple JSON documents from a string using callbacks for pushing values when they are first encountered and popping when array or objects are closed.
| ojErr | err | Used for error reporting. |
| const char* | json | String to parse. |
| ojPushFunc | push | Push callback. |
| ojPopFunc | pop | Pop callback. |
| void* | ctx | Context for both callbacks. |
Return ojVal instance collected during parsing.
| ojReuser | reuser | Reuser that collected ojVal instances. |
Return a string representation of the ojStatus provided.
| ojStatus | code | ojStatus to return a string from. |
Create a new string ojVal.
| ojErr | err | Used for error reporting. |
| const char* | s | String value for the new ojVal. |
| size_t | len | Length of string. |
Return the string value of a ojVal. If the ojVal is not a string then NULL is returned.
| ojVal | val | ojVal to get the value from. |
Set the value of a ojVal to a string.
| ojErr | err | Used for error reporting. |
| ojVal | val | ojVal to set the value on. |
| int64_t | s | The value to set the ojVal to. |
| size_t | len | Length of string. |
Return a JSON string represented by the ojVal provided. The returned JSON string should be freed when no longer needed.
| ojVal | val | ojVal to encode. |
| int | indent | Indentation for the JSON string. |
Return a string representation of the provided type.
| ojType | type | Type to return a string represenation of. |
Create a new blank ojVal.
Validate a JSON string.
| ojErr | err | Used for error reporting. |
| const char* | json | JSON string to validate. |
Return the OjC version.
Write a ojVal to a stream in JSON format.
| ojErr | err | Used for error reporting. |
| ojVal | val | ojVal to encode. |
| int | indent | Indentation for the JSON output. |
| int | fd | Stream to write to. |