Reflex Dictionary Generator Antti Hahto 4.8.2006.

Slides:



Advertisements
Similar presentations
Introduction to C++ An object-oriented language Unit - 01.
Advertisements

C++ Language Fundamentals. 2 Contents 1. Introduction to C++ 2. Basic syntax rules 3. Declaring and using variables.
Mr. D. J. Patel, AITS, Rajkot 1 Operating Systems, by Dhananjay Dhamdhere1 Static and Dynamic Memory Allocation Memory allocation is an aspect of a more.
Status and Future of CINT Reflex as Reflection Database Object-Oriented CINT Multi-Threading Masaharu Goto, Agilent Philippe Canal, Fermilab Stefan Roiser,
LECTURE 1 CMSC 201. Overview Goal: Problem solving and algorithm development. Learn to program in Python. Algorithm - a set of unambiguous and ordered.
Study of Hurricane and Tornado Operating Systems By Shubhanan Bakre.
Web Applications Development Using Coldbox Platform Eddie Johnston.
Seal Dictionary Applications Area Internal Review 20 October 2003 Stefan Roiser / CERN.
Software. What Is Software? software –Also called Computer programs –Are a list of instructions –Instructions are called code –CPU performs the instructions.
UNDERSTANDING JAVA APIS FOR MOBILE DEVICES v0.01.
SEAL Reflex, the new Reflection Library Stefan Roiser (for the LCG/SEAL Dictionary work package) LCG Applications Area Meeting, Oct. 6, 2004.
CS 4800 By Brandon Andrews.  Specifications  Goals  Applications  Design Steps  Testing.
Chapter 2: Impact of Machine Architectures What is the Relationship Between Programs, Programming Languages, and Computers.
Lecture 9 Concepts of Programming Languages
Abstract Data Types and Encapsulation Concepts
Operating Systems Concepts 1. A Computer Model An operating system has to deal with the fact that a computer is made up of a CPU, random access memory.
DAT602 Database Application Development Lecture 15 Java Server Pages Part 1.
SEAL V1 Status 12 February 2003 P. Mato / CERN Shared Environment for Applications at LHC.
XML I/O in ROOT S. Linev, R. Brun, H.G. Essel CHEP 2004.
Architecture Of ASP.NET. What is ASP?  Server-side scripting technology.  Files containing HTML and scripting code.  Access via HTTP requests.  Scripting.
Visual Basic: An Object Oriented Approach 12 – Creating and using ActiveX objects.
Introduction to .Net Framework
M.Frank CERN/LHCb - Persistency Workshop, Dec.2004 Agenda: 2 separate talks! Don’t mangle together what does not belong together 1.Schema Evolution Tests.
K. Harrison CERN, 20th April 2004 AJDL interface and LCG submission - Overview of AJDL - Using AJDL from Python - LCG submission.
Nirmalya Roy School of Electrical Engineering and Computer Science Washington State University Cpt S 122 – Data Structures Classes: A Deeper Look Part.
CINT & Reflex: New Reflection Data Structures Masa(haru) Goto Agilent Philippe Canal Fermilab/CD Stefan Roiser, Axel Naumann PH/SFT.
1 Comp 104: Operating Systems Concepts Java Development and Run-Time Store Organisation.
Chapter 4 Realtime Widely Distributed Instrumention System.
Webcommerce Computer Networks Webcommerce by Linnea Reppa Douglas Martindale Lev Shalevich.
Grid Computing Research Lab SUNY Binghamton 1 XCAT-C++: A High Performance Distributed CCA Framework Madhu Govindaraju.
Middleware for FIs Apeego House 4B, Tardeo Rd. Mumbai Tel: Fax:
March 27, 2007HPC 07 - Norfolk, VA1 C++ Reflection for High Performance Problem Solving Environments Tharaka Devadithya 1, Kenneth Chiu 2, Wei Lu 1 1.
CE Operating Systems Lecture 3 Overview of OS functions and structure.
Object Based Programming Chapter 8. 2 In This Chapter We will learn about classes Garbage Collection Data Abstraction and encapsulation.
Copyright © Curt Hill Generic Classes Template Classes or Container Classes.
W. Pokorski - CERN Simulation Project1 Python binding for Geant4 toolkit using Reflex/PyROOT tool Witek Pokorski EuroPython 2006, CERN, Geneva
The SEAL C++ Reflection System Stefan Roiser (for the LCG/SEAL Dictionary work package) CHEP 2004, 27. Sept Oct., Interlaken.
SEAL: Common Core Libraries and Services for LHC Applications CHEP’03, March 24-28, 2003 La Jolla, California J. Generowicz/CERN, M. Marino/LBNL, P. Mato/CERN,
THtml  THtml will generate >=1 doc.root file .html pages generated from doc.root files by April (Feb doesn't exist)  Bertrand: extract doc for online.
ASP (Active Server Pages) by Bülent & Resul. Presentation Outline Introduction What is an ASP file? How does ASP work? What can ASP do? Differences Between.
LC Software Workshop, May 2009, CERN P. Mato /CERN.
Programming with Java © 2002 The McGraw-Hill Companies, Inc. All rights reserved. 1 McGraw-Hill/Irwin Chapter 5 Creating Classes.
Silberschatz, Galvin and Gagne  Operating System Concepts UNIT II Operating System Services.
ISBN Chapter 11 Abstract Data Types and Encapsulation Concepts.
 Web pages originally static  Page is delivered exactly as stored on server  Same information displayed for all users, from all contexts  Dynamic.
ISBN Chapter 11 Abstract Data Types and Encapsulation Concepts.
SPI NIGHTLIES Alex Hodgkins. SPI nightlies  Build and test various software projects each night  Provide a nightlies summary page that displays all.
ROOT Team Meeting Axel Naumann CERN PH/SFT Crienftlex Extended Version. And also Director’s Cut. Crienftlex.
D. Duellmann - IT/DB LCG - POOL Project1 The LCG Dictionary and POOL Dirk Duellmann.
CINT & Reflex – The Future CINT’s Future Layout Reflex API Work In Progress: Use Reflex to store dictionary data Smaller memory footprint First step to.
Bayu Priyambadha, S.Kom. Static content  Web Server delivers contents of a file (html) 1. Browser sends request to Web Server 3. Web Server sends HTML.
CINT/Reflex workshop 1 Rene Brun 4 May 2005 Summary of the CINT/Reflex workshop 2-6 May 2005
Ganga/Dirac Data Management meeting October 2003 Gennady Kuznetsov Production Manager Tools and Ganga (New Architecture)
1 Chapter 2: Operating-System Structures Services Interface provided to users & programmers –System calls (programmer access) –User level access to system.
Object Based Programming Chapter 8. 2 Contrast ____________________ Languages –Action oriented –Concentrate on writing ________________ –Data supports.
ROOT / Reflex ‘07+ Stefan Roiser Missed last team meeting b/c.
Introducing the Microsoft® .NET Framework
SEAL: Common Core Libraries and Services for LHC Applications
Stefan Roiser CERN / PH / SFT
Dictionary generation for the Experiments
Creational Pattern: Prototype
Review: Two Programming Paradigms
POOL persistency framework for LHC
Dynamic Updates for Videogames
C++ History C++ was designed at AT&T Bell Labs by Bjarne Stroustrup in the early 80's Based on the ‘C’ programming language C++ language standardised in.
Lecture 9 Concepts of Programming Languages
Abstract Data Types and Encapsulation Concepts
Oriented Design and Abstract Data Type
Lecture 9 Concepts of Programming Languages
Presentation transcript:

Reflex Dictionary Generator Antti Hahto

What?  Replacing the CINT Dictionary Generator with a new one, using Reflex API

Why?  CINT memory requirements large (no dynamic allocation)  Root written in C++ object oriented way, CINT is not. Previous DictGen using also Python → lacking uniformity  Data structures already in the Reflex format  The advantages of modern object oriented programming  maintainability, flexibility, re-usability, data encapsuling...

Do I need one? 1) Interactive usage through scripting languages  Root scripts in c++, no need to compile to see the results immediately 2) Making objects persistent  Writing/retrieving objects from disk  Using Root I/O, for an example

Reflection  A program can observe and modify its structural information while running  Usually, when a C++ program source is compiled into a machine code, information about the structure is lost  Reflection is a preservation of the original structure, in a way of producing some additional metadata (dictionary)  Poorly supported in C++, unlike for example in Java

How?  A dictionary is built for types, scopes and members  Dictionary is then loaded into the reflection database  Metainformation is provided for the user

The structure User’s.h - file CINT/ Pyroot Dictionary CINT Root services Dynamic Library file.so Old Dictgen Reflex datastruct Cint datastruct Reflex datastruct New Dictgen loads

Object oriented architecture  Each type capable of generating its own dictionary information (“ DataMemberGen(type666,"a") “) in addition to its c++ code code representation (“ int a; ”)  Dictionary generation via hierarchy; class generates information about itself and then forwards the request to all its members.

Object oriented architecture globalscope.G() Namespace.G() class/struct.G() funct.member Datamember.G() Fundamental.G() enum (union) int.G() Int Mynamespace::MyClas s::Member::fNumber

An example namespace Alaska { class Elephant { private: unsigned fEnergy_level; public: void Eat_nuts(unsigned amount) { for(unsigned i=0; i<amount; ++i) { ++fEnergy_level;} }};}... NamespaceBuilder nsb0( "Alaska" ); Type type_666 = TypeBuilder("unsigned int"); ClassBuilder("Alaska::Elephant", typeid(Alaska::Elephant), sizeof(Alaska::Elephant), PUBLIC | CLASS).AddFunctionMember(FunctionTypeBuilder(t ype_void, type_666), "Eat_nuts", method_3555, 0, "amount", PUBLIC)

DictGen class  A new class, taking care of common tasks in dictionary generation and configuration  Member functions: Use_recursive(true/false) Use_selection("filename") Add_extra_header(“filename”) Dump("filename")

Testing procedure.h - file Dictionary Reflex datastruct New Dictgen Gcc_xml Gendict.py Dictionary ==

Status, ToDo  Successfully generates dictionaries for tested header files .xml selection file usage / Linkdef and unions not fully implemented  Needs testing for more complicated & large files