In Brazil, malaria is endemic in the Amazon River basin and non-endemic in the extra-Amazon region, which includes areas of São Paulo state. In this state, a number of autochthonous cases of malaria occur annually, and the prevalence of subclinical infection is unknown. Asymptomatic infections may remain undetected, maintaining transmission of the pathogen, including by blood transfusion. In these report it has been described subclinical Plasmodium infection in blood donors from a blood transfusion centre in São Paulo, Brazil.
In this cross-sectional study, representative samples of blood were obtained from 1,108 healthy blood donors at the Fundação Pró-Sangue Hemocentro de São Paulo, the main blood transfusion centre in São Paulo. Malaria exposure was defined by the home region (exposed: forest region; non-exposed: non-forest region). Real-time PCR was used to detect Plasmodium falciparum and Plasmodium vivax. Subclinical malaria cases were geo-referenced.
Eighty-four (7.41%) blood donors tested positive for Plasmodium; 57 of these were infected by P. falciparum, 25 by P. vivax, and 2 by both. The prevalence of P. falciparum and P. vivax was 5.14 and 2.26, respectively. The overall prevalence ratio (PR) was 3.23 (95% confidence interval (CI) 2.03, 5.13); P. falciparum PR was 16.11 (95% CI 5.87, 44.21) and P. vivax PR was 0.47 (95% CI 0.2, 1.12). Plasmodium falciparum subclinical malaria infection in the Atlantic Forest domain was present in the mountain regions while P. vivax infection was observed in cities from forest-surrounded areas.
The presence of Plasmodium in healthy blood donors from a region known as non-endemic, which is important in the context of transfusion biosafety, was described. Infected recipients may become asymptomatic carriers and a reservoir for parasites, maintaining their transmission. Furthermore, P. falciparum PR was positively associated with the forest environment, and P. vivax was associated with forest fragmentation.
In Brazil, human malaria is mainly caused by Plasmodium vivax, which accounts for more than 80% of identified cases; Plasmodium falciparum is responsible for 16.3%, and Plasmodium malariae is associated with a small number of cases [ 1, 2]. The majority of malaria is reported in the Brazilian Amazon region [ 3] where Anopheles darlingi is the primary vector in recently deforested areas [ 4].
The annual parasite index is typically employed to estimate the risk of occurrence of malaria in human populations that are exposed to infective Anopheles mosquito bites, in a specific time frame. In endemic regions, this index is spatially and temporarily variable, and its values can be low (0.1–9.9), moderate (10.0–49.9), or high (>50) [ 3], depending on ecological and environmental determinants that represent distinct risk in different social and economic contexts [ 5]. Areas of high endemicity have an elevated prevalence of individuals with subclinical infections [ 6]. In the Amazon region of Brazil, studies performed in Amerindians [ 7] and in riverine communities [ 8] in the state of Rondônia have shown the presence of long-term subclinical infections. Those individuals were infected with Plasmodium spp; however, most of them showed low levels of parasitaemia [ 9]. Subclinical infections also have been found in meso- and hypo-endemic regions [ 8, 10, 11]. The São Paulo municipality and nearby areas in southeastern Brazil are considered non-endemic regions; however, in 2013, 146 autochthonous cases of malaria were identified in São Paulo State, representing 22% of the total occurring outside the Amazon region. Moreover, there was a 256% increase compared to 2006 [ 12].
Plasmodium pathogens that cause malaria in humans are naturally transmitted by infectious Anopheles mosquito bites [ 13]. However, the protozoan can be accidentally transmitted by blood transfusion [ 14] and intravenous drug users [ 10]. The first case of transfusional malaria was registered in 1911 [ 15- 17]. Although uncommon, transfusional malaria can have serious clinical implications when undetected and not treated early [ 18, 19]. In the Amazon State, 0.3% of screened blood donors were found to be infected with P. vivax[ 20] when the diagnoses were based on an especially sensitive molecular probe, i.e., PCR technology. In Brazil, the laws governing the screening obligation for Plasmodium infection in blood donors from an endemic region are distinct from those adopted in non-endemic areas [ 21]. Furthermore, in non-endemic areas, all candidates for blood donation are subjected to an interview before they donate blood. Following the interview, potential blood donors can be either rejected or accepted for donation, without enforcement for a laboratorial screening for Plasmodium infection [ 21]. Considering both the circulation of Plasmodium spp. in non-endemic areas and the fact that there is no obligation for screening for Plasmodium, it is plausible to suppose that accidental transfusional Plasmodium transmission can occur, mainly by the presence of subclinical infection in humans.
Transfusion-transmitted Plasmodium parasites represent an important risk factor because they can cause severe malaria with a high fatality rate [ 22]. The chronic infection can persist in humans for a long period of time: up to two years or more for P. falciparum, up to seven years for P. vivax, and even for an entire lifetime for P. malariae[ 1] . Consequently, an asymptomatic human who is unaware of his/her status as a Plasmodium reservoir can transmit the parasites when donating blood. Usually, parasite concentration is low in asymptomatic individuals [ 8]; however, asymptomatic humans can both infect Anopheles females [ 9] and cause severe infection in blood recipients [ 22].
Employing a high sensitivity real-time PCR in a cross-sectional design, it was addressed 1) the prevalence of P. falciparum and P. vivax among blood donors at a public blood bank in the municipality of São Paulo, Brazil; 2) the spatial distribution of the blood donors; and 3) the potential association between the geographical origins of donors and the Plasmodium species.
A cross-sectional study was adopted with the main objective of estimating the prevalence of subclinical malarial infections among blood donors in the State of São Paulo. The studied population was composed of 1,108 blood donors enrolled at the Fundação Pró-Sangue Hemocentro de São Paulo, Brazil, from August 2008 to March 2010. The sampling procedure employed a non-probabilistic cumulative method. Accordingly, individuals who came to donate blood were cumulatively selected regarding free potentially past/recent malarial infections as inclusion criteria. Each blood donor volunteer was interviewed for previous malaria, location of residence, and travel/visit to endemic regions. Brazilian guidelines recommend refusing as a potential blood donor any individual who has lived in a malaria-endemic region within the past three years as well as those who have travelled to those areas in the past six months. Consequently, the present study does not include individuals who were rejected for blood donation based on these conditions. In terms of sampling procedure, it was knew who would be next to donate blood nor who would be included in the study. This circumstance made the sampling procedure random, which is a reasonable proxy for obtaining a representative sample of blood donors from the population in the State of São Paulo [ 23].
To calculate the sample size, the prior prevalence of subclinical malarial infections among blood donors was considered to be 1%. This subclinical malaria information is unavailable for the State of São Paulo, and the sample size for the cross-sectional study thus was estimated using Plasmodium spp. prevalence (1.3%) in blood banks in the State of Amazon [ 3]. Considering that prevalence was presumed as 0.01, standard error was tolerable at 0.02, and 95% confidence intervals were selected and applied. The following statistical equation of minimum sample size calculation for prevalence data was used:
where n* = minimum sample size; z = critical percentile of the z distribution (1.96); α = significance level (0.05); ϵ = standard error or tolerable error (0.02 or 2%), which measures discrepancy between population prevalence (unknown) and estimated prevalence from the obtained sample; and P = prior prevalence data (as supported by [ 24- 26]). Based on the values obtained in the sample size estimation, the study had to include blood from at least 956 individuals to estimate the prevalence of malarial infections among blood donors with a confidence interval of 95% and precision of 2%.
Once the representative sample (N) was obtained, four groups were defined: disease-exposed (a), non-disease exposed (b), disease non-exposed (c), and non-disease non-exposed (d). Exposure status was defined based on evidence of risk of being in contact with infectious mosquito bites (e.g., location of residence that may indicate the presence of Anopheles mosquito vectors). Individuals living in forested areas of the Atlantic Forest were considered at risk of infection whereas those from urban areas in the Metropolitan Region of São Paulo were considered to be without risk of malaria (Figure 1). No individual had fever or evident signs of infection at the time of the blood donation; thus, disease and non-disease status were evaluated using real-time PCR. Peripheral venous blood (5 mL) was drawn from the volunteers and screened for P. falciparum and P. vivax by real-time PCR.
Study System: South America, Brazil, São Paulo State. Exposure status was defined by considering the presence/absence of forested regions in the State of São Paulo. Forested regions are localized in the southeast of the State of São Paulo and represent remnants of the Atlantic rainforest.
Each volunteer was informed about the research and research procedures before signing written informed consent. Both protocol and procedures employed in the present study were approved by the Research Ethics Committee of the institution.
DNA was extracted from blood samples using a salting-out method with slight modifications [ 27, 28]. DNA integrity was analysed by agarose gel electrophoresis, and the concentration was determined with a nanoDrop ND-1000 spectrophotometer (USA) [ 29]. Samples of P. falciparum and P. vivax were used as positive control for the real-time PCR protocol.
RT-PCR was performed following the protocol described by Gama et al.[ 30]. Two-hundred ng of DNA were added to a 12.5 μL reaction mixture containing 1X TaqMan Universal PCR Master Mix (Applied Biosystems, Foster City, CA, USA) with 500 mM of each dNTP. The primers and probe sequences employed are listed in Additional file 1. Each sample was analysed in duplicate. Real-time PCR amplification was performed in a Rotor Gene 3000 (Corbett Research, San Francisco, CA, USA) using a program involving two thermal cycler holds (50°C for 2 min and 95°C for 10 min), followed by 45 cycles of amplification (95°C for 15 s, 52°C for 60 s, and 72°C for 60 s). Results were automatically analysed using real-time Rotor Gene 6 software.
The efficiency and sensitivity of the real-time PCR protocol were examined using genomic DNA extracted from lab-cultured P. falciparum parasites, and P. vivax from the blood of humans with a confirmed diagnosis of vivax malaria. A standard curve was constructed for each Plasmodium species from a 10-fold serial dilution of parasite DNA, ranging from 10 6 to 0.1 copies/μL. The threshold limits were automatically set for each reaction, and mean Ct was calculated for each amplified triplicate. Amplification efficiencies for the different primer pairs and probes were calculated with the following formula: Efficiency = 10(−1/Slope) − 1 (Additional file 1). Samples were considered positive when the amplification curves reached the threshold line. A positive PCR assay was demonstrated at 0.00001% parasitaemia (0.5 parasite/μL) for all Plasmodium species.
To evaluate the intra- and inter-assay Ct variation of real-time PCR, we analyzed the coefficient of variation of DNA parasite samples in triplicate and in the blood samples showing low parasitaemia. Pure parasite DNA showed a Ct coefficient of 0.1 while the Ct coefficient was 0.3 among low-parasitized blood samples. The Ct values were the same and stable for each DNA parasite sample in different experiments.
No cross-amplification between different reactions was observed. A PCR amplification product was obtained only when specific Plasmodium species were present in the reaction; no PCR product was detected in samples without specific parasites.
In this cross-sectional study, the starting point was a representative sample (N) obtained for defining the four groups under study (a, b, c, d). First, the prevalence of Plasmodium infections ( P. vivax and P. falciparum) was estimated, using the following equations:
where a + c is the number of individuals carrying the malaria parasite, and t = all parasites, pv = P. vivax, and pf = P. falciparum. N is the representative sample. The prevalences (P
where a = the number of subclinical malarial infections in the exposed group; c = the number of subclinical malarial infections in the non-exposed group; a + b = total exposed individuals; c + d = total non-exposed individuals. PR was estimated for each parasite, with t = all parasites, pv = P. vivax, and pf = P. falciparum. If the presence of a certain exposure factor (e.g., forest proximity) does not increase the prevalence of subclinical malaria, the PR is expected to be 1; PR > 1 indicates a positive association between exposure and prevalence; and a PR < 1 suggests that the association is negative. A confidence interval of 95% was provided for each estimate of the PR. Additional theoretical rationale for these procedures can be obtained from Rothman [ 31].
The detected subclinical Plasmodium infection cases were geo-referenced using resident address and routines implemented in the R 3.0.0 programming environment with the aid of the ggmap package [ 32]. With this routine, addresses in a specific format (e.g., “100 Winter Avenue, Dream City NY”) were searched in the databases of Google Maps TM. These searches returned geographic coordinates (longitude and latitude) that were plotted over a satellite imagery scenario provided by Google Maps TM. Geo-referenced data were used to identify possible explanations considering the observed pattern of geographic distributions of subclinical malarial infections.
A total of 1,108 individuals were selected in the present study. From this sample, 61 were exposed and had a subclinical malaria infection; 439 were exposed and did not have a subclinical malaria infection; 23 were non-exposed and had a subclinical malaria infection; and 585 were non-exposed and did not have a subclinical infection (Table 1). The overall prevalence of subclinical malarial infections among blood donors was 7.58 (%); prevalence among exposed individuals was 12.20 (%) and among non-exposed, it was 3.78 (%) (Table 1). The PR was 3.23 and showed a positive statistically significant association between exposure and subclinical malarial infection (CI 95% = 2.03, 5.13) (Table 1).
Distribution of individual blood donors according to exposure status and subclinical malarial infections in a cross-sectional study design, São Paulo State, Brazil, Aug 2008–Mar 2010
| leftbottomExposed (+) | leftbottom61 | leftbottom439 | leftbottom500 | leftbottom12.20 |
| leftbottomExposed (−) | leftbottom23 | leftbottom585 | leftbottom608 | leftbottom3.78 |
| leftTotal | left84 | left1,024 | left1,108 | left7.58 |
*In each group (exposed and non-exposed), 1 subject was infected by both parasites.
**Cases per 100 population units.
Prevalence ratio (95% CI) = 3.23 (2.03, 5.13).
Of the subclinical malarial infections (84), 57 were P. falciparum, 25 were P. vivax, and two were mixed ( P. vivax and P. falciparum). Considering only P. falciparum subclinical infections, 53 blood donors of the exposed group were positive for subclinical infection, 447 were exposed and did not have any evidence of infection, 4 individuals of the non-exposed group tested positive, and 604 tested negative for infection (Table 2). The total prevalence of subclinical P. falciparum infections in blood donors was 5.14 (%); the prevalence among exposed individuals was 10.60 (%); and among non-exposed, it was 0.66 (%) (Table 2). The prevalence ratio was 16.11 and showed a positive, statistically significant association between exposure and subclinical P. falciparum infection (CI 95% = 5.87, 44.21) (Table 2).
Distribution of individual blood donors according to exposure status and P . falciparum subclinical infections in a cross-sectional study design, São Paulo State, Brazil, Aug 2008–Mar 2010
| leftbottomExposed (+) | leftbottom53 | leftbottom447 | leftbottom500 | leftbottom10.60 |
| leftbottomExposed (−) | leftbottom4 | leftbottom604 | leftbottom608 | leftbottom0.66 |
| leftTotal | left57 | left1,051 | left1,108 | left5.14 |
*Cases per 100 population units.
Prevalence ratio (95% CI) = 16.11 (5.87, 44.21).
Considering the analysis of Plasmodium vivax subclinical infections, seven exposed participants had a subclinical infection, 493 were exposed without subclinical infection, 18 non-exposed had subclinical infection, and 590 non-exposed did not have subclinical infection (Table 3). The total prevalence of subclinical P. vivax infection among blood donors was 2.26 (%); prevalence among exposed individuals was 1.40 (%), and among non-exposed, it was 2.96 (%) (Table 3). The PR was 0.47 and showed a negative statistically non-significant association between exposure and subclinical P. vivax infection (CI 95% = 0.2, 1.12) (Table 3).
Distribution of individuals blood donors according to exposure status and P . vivax subclinical infections in a cross-sectional study design, São Paulo State, Brazil, Aug 2008–Mar 2010
| leftbottomExposed (+) | leftbottom7 | leftbottom493 | leftbottom500 | leftbottom1.40 |
| leftbottomExposed (−) | leftbottom18 | leftbottom590 | leftbottom608 | leftbottom2.96 |
| leftTotal | left25 | left1,083 | left1,108 | left2.26 |
*Cases per 100 population units.
Prevalence ratio (95% CI) = 0.47 (0.2, 1.12).
The 18 individuals with P. vivax subclinical infection in the non-exposed group (Table 3) were geo-referenced. These data showed that the majority of participants lived in residences near the forest fringes (Figure 1A), although these residences were in an urban area, i.e., the São Paulo Metropolitan Region. Residents infected with P. falciparum in the exposed region (Atlantic Forest) were from the mountains (mainly in the Juquitiba and São Lourenço da Serra municipalities). In both municipalities, forest cover is greater than 50%, and landscape fragmentation provides high levels of interaction between the forest and the urban, anthropogenic environment (Figure 2B). Individuals infected with P. vivax in the exposed region were from the coastal region of the Peruíbe (Figure 2C) and São Sebastião (Figure 2D) municipalities. These individuals inhabit houses located at the frontier of the Atlantic Forest and the urban landscape, which form a mosaic of human-modified and natural environments that facilitate contact between humans and sylvatic mosquitoes (Figures 2C and D).
Subclinical malarial infections geo-referenced. Point XY coordinates of the residence of positive individuals and the presence of parasites. A) Presence of P. vivax subclinical infections in the São Paulo Metropolitan Region. B) Presence of P. falciparum subclinical infections in the highlands of the Atlantic Forest (Juquitiba and São Lourenço da Serra). C) Presence of P. vivax subclinical infection in the coastal city of Peruíbe. D) Presence of P. vivax subclinical infection in the beaches of Praia do Una (São Sebastião). Images are from GoogleMaps TM.
Despite control and prevention measures, malaria has not been eliminated from non-endemic areas in southeastern Brazil. Autochthonous cases have been identified in several regions [ 33- 35], and human malaria is predominantly caused by P. vivax and its variants [ 36, 37]. Subclinical Plasmodium infections have been considered rare in Brazil; however, they have been detected and identified in endemic regions [ 38]. A retrospective analysis of human malaria in the State of São Paulo from 1985–2006 found 83 cases, four of which were subclinical infections [ 12]. Other studies have shown a low parasitaemia rate in humans who inhabit areas within the Atlantic Forest, with cases caused by P. vivax and P. malariae[ 36].
Recently, molecular tools have been employed to detect Plasmodium infection in human blood.  PCR methods are also more sensitive in verifying mixed infections [ 39]. Additionally, real-time PCR allows pathogen quantification, reduces the risk of cross-contamination, provides accurate results [ 40], and identifies subclinical infections in humans [ 37] that might otherwise remain undetected by routine tests for malaria. Consequently, the new technology reveals a prevalence of subclinical infections in humans that is higher than previously thought [ 41].
Human reservoirs can maintain transmission in areas of low, moderate, or high endemicity because they can infect mosquitoes [ 42]. Despite the role of subclinical infection in maintaining malaria transmission, little is known about the factors that determine its occurrence and whether it is associated with human protective immune responses [ 41].
Blood transfusion is an important intervention in hospitals and health centres, but it also represents a route for transmission of parasites and pathogens that circulate in the blood, such as HIV, human Plasmodium, viruses, and others [ 43]. Consequently, several measures are being taken to improve blood recipient safety, including high-sensitivity screening tests. Considering only Plasmodium, after the collection of the blood, the parasite can survive for at least one week at 4°C, as well as in frozen erythrocytes [ 44]. Plasmodium transmission by transfusion usually occurs through whole blood and red blood cells and may occur less frequently through platelet concentrates, white blood cells, cryoprecipitate, and fresh frozen plasma [ 18, 45]. The blood bank is therefore an important target for controlling undesirable Plasmodium transmission in endemic [ 38, 46] and non-endemic regions [ 43, 47].
Here, subclinical malarial infections were detected from blood donors in the most important centre of public healthcare in the State of São Paulo. The presence of P. falciparum among blood donors and the high prevalence of these infections were not expected. In the present study, each blood donor was interviewed and denied having been in malaria endemic regions. Consequently, it is plausible to assume that all subclinical infections were autochthonous. It is noteworthy that all individuals reported here would be accepted for blood donation using the current protocol adopted in blood transfusion centres in the State of São Paulo, which includes a questionnaire and an interview to detect history of exposure to malaria, both applied by a qualified professional. Therefore, although the clinical importance of the findings described here remains to be investigated, the presence of asymptomatic Plasmodium infection in blood donors in non-endemic areas should be an important concern for medical services, health authorities, and blood recipient safety [ 14].
Plasmodium vivax and its variants as well as P. falciparum and P. malariae circulate in non-endemic areas, where they are responsible for only a few, mostly oligosymptomatic cases of malaria annually [ 1]. Because Plasmodium species can circulate in cycles that involve humans with low parasitaemia and sylvatic mosquitoes, and likely in non-human primate reservoirs [ 48, 49], malaria can be maintained indefinitely in silent cycles without the consequences of high-level epidemics. The estimated PR of subclinical infection found in blood donors in São Paulo clearly shows that P. falciparum is positively associated with forested areas. Juquitiba (30,239 inhabitants, 55.03 inhabitants/km 2) and São Lourenço da Serra (14,874 inhabitants, 75 inhabitants/km 2) are primarily rural locations embedded in a well-preserved and extensively forested area on the slope of Serra do Mar, where the vectors are mainly sylvatic mosquitoes from the subgenus Kerteszia of Anopheles. The human population from these areas was here defined as the exposed population whereas inhabitants of urban areas intercalated by forest fragments formed the non-exposed population. In the non-exposed population, the PR of P. vivax revealed a positive (PR = 0.47; 95% CI, 0.2, 1.12) between the parasite infection and urban inhabitants. However, this result may arise from the fact that the residences of the blood donors are situated in urban areas at the edge of forest fragments. Consequently, the presence of P. vivax is likely to be associated with forest fragments and involves both Kerteszia and Nyssorhynchus species, or even other Anopheles subgenera [ 48, 50]. The evolution of transmission of Plasmodium species that cause malaria in humans is a dynamic process that involves ecological, environmental, and climate factors as well as social, political, and economic determinants. The high prevalence of Plasmodium spp. subclinical infections in blood donors living either in forested areas or urban regions intermixed with forest fragments suggests that some evolutionary mechanisms are modulating the virulence of P. falciparum and P. vivax in a way that does not negatively affect survival of the parasite, humans, mosquitoes, and non-human primates that seem to be involved in malaria transmission in the Atlantic Forest. The dynamics of human malaria transmission in the Brazilian Amazon forest seems to involve similar evolutionary mechanisms that lead to subclinical infections in humans [ 42], and transmission cycles that involve humans and other mosquito species as vectors (in addition to An. darlingi) [ 51], and non-human primates, which were recently found to be infected with P. falciparum[ 52]. In the Atlantic Forest, Alouatta monkeys have been found to be infected by P. vivax and P. malariae[ 49], along with P. falciparum[ 48].
The scientific novelty and translational importance of the present results are two-fold: 1) They could represent a serious problem for the blood transfusion programme in the State of São Paulo; and 2) they could be evidence of evolutionary mechanisms of attenuation of malarial symptoms in humans.
The translational importance of the first aspect is obvious. Because some infected recipients may become asymptomatic carriers and constitute a reservoir for parasites, maintaining their transmission, further investigations are needed to better document the risk of transfusion-transmitted malaria in these regions and to establish whether a specific malarial infection test should be considered for blood donors who live in or near the Atlantic Forest. The second aspect is more subtle and needs more data before being established as a paradigmatic cornerstone for the evolution of malaria transmission dynamics. In terms of clinical and economic viewpoints, the Atlantic Forest’s dynamics of malaria transmission could be a real-world example of symptomatic malaria elimination.
The presence of subclinical P. falciparum and P. vivax infection in healthy blood donors from São Paulo a non-endemic region was described. This finding is a significant concern in the context of transfusion biosafety. Some infected recipients may be asymptomatic carriers, constituting a reservoir for parasites, maintaining their transmission and increasing the risk of transfusion-transmitted malaria in these regions. Additionally, prevalence ratio infection values showed a positive association between forest environment and P. falciparum infection, which was linked to residence in the mountain region of the Atlantic Forest domain. Moreover, P. vivax seemed to be associated with forest fragmentation because it was identified in residents of cities in forest-surrounded areas. These results indicate a link between the pathogen prevalence and the Atlantic Forest environment.
The authors declared that they have no competing interests.
AMM, PEDL and SPB conceived the idea. LMFM, DL, GZL, AMM, MAMS and SPB participated in the study design and drafted the manuscript. AMM and PDLC supervised sample collection. LMFM, DL, GZL, LAF, MFFC and CTDR performed the experiments. LMFM, DL, GZL, AMM, CTDR, PEDL, MAMS and SPB analysed and interpreted the data. All authors read and approved the final version of the manuscript.
Primers and probes used for detection of P. falciparum and P. vivax by real-time PCR. Description: The data provided the primers and probes used to perform real-time PCR.
Click here for file
SPB was supported by grants from Fundação de Amparo à Pesquisa do Estado de São Paulo (FAPESP), Brazil (Grant 2009/53141-5); Conselho Nacional de Desenvolvimento Científico e Tecnológico (CNPq), Brazil; and Instituto Nacional de Ciência e Tecnologia – Fluidos Complexos, Brazil. MAMS was supported by FAPESP (Grant 11/20397-7) and CNPQ (Grant 301666/2011-3). GZL was supported by FAPESP (Grant 2012/09939-5).


JUST A COUPLE MORE CLICKS AWAY...
ORDERING FORM CAPTURE
Subscribe to our mailing list
*
indicates required
Email Address
*
PLEASE ENTER VALID EMAIL PLEASE PLEASE
First Name
Phone Number


Jonathan Reeve
Jonathan Reeve
Literary Modeling and Visualization Lab
Group for Experimental Methods in the Humanities
Columbia University
“The maturity of the late works of significant artists does not resemble the kind one finds in fruit. They are, for the most part, not round, but furrowed, even ravaged. Devoid of sweetness, bitter and spiny, they do not surrender themselves to mere delectation.” (Adorno, quoted in Said) - Beethoven’s Ninth Symphony
| Author | Periodicity Score |
|---|---|
| James | 0.472 |
| Dickens | 0.469 |
| Genet | 0.457 |
| Mann | 0.367 |
| Conrad | 0.177 |
| Cather | 0.177 |
| Ward | 0.166 |
| Proust | 0.023 |
-0.0171
(Early style, not late style.)
Mean: -0.0288
(Even stronger early style.)


{% extends "base.html" %} {% block content %}
Hi there!
Here is a little test assignment on Django.
Uses django-cookiecutter.
Please log in with password "secure_password_369" as:
(Signup procedure brought by allauth requires e-mail confirmation, which is not configured in this deployment.)
{% endblock %}


--- layout: page title: About me image: ---
My name is Tommy Worung and this is Studio 010. Studio 010 is a photography blog website with a minimal design.
“Bicycle rights mustache artisan, keytar lo-fi sustainable fap stumptown vegan salvia freegan four loko terry richardson.”
Wolf Moon Cred
American apparel jean shorts terry richardson squid. Letterpress tattooed cray beard pinterest. Jean shorts tofu wayfarers, fap PBR swag banh mi. Organic chillwave scenester wayfarers semiotics salvia messenger bag, vice odd future.


FOD 10 Year Poster
Illustration
☰
Illustration
Web design & UX/UI
Animation
branding & logo
Web design & branding
Web design & UX/UI
Packaging
Marketing campaign
magazine & editorial
Experimental web design
Animation
Invitation
Logo & illustration
WordPress
Branding & UX/UI


Home
Kitchen
Room
Home
Kitchen
Room Header
Lights
Light 1
Light 2
Light 3
After turning some lights on, press light bulb on upper right corner
Button 1
Button 2
Button 3
Button 4
Icon
Button with auto width
Action
Temperature
Temperature
Humidity
Light
Light on
Light off
Light on
Light
Light on
One does not need to use those card templates
Big button
Another page


Unikernel.org
Unikernels are specialised single address space machine images that are constructed by using library operating systems. With MirageOS, we’ve taken a clean-slate approach to unikernels with a focus on safety. This involved writing protocol libraries from the ground up and it also afforded the ability to use clean, modern APIs.
Other unikernel implementations have made trade-offs different to those made by MirageOS. Some excel at handling legacy applications by making the most of existing OS codebases rather than building clean-slate implementations. Some target a wide array of possible environments, or environments complementary to those supported by MirageOS currently. All of these implementations ultimately help developers construct unikernels that match their specific needs and constraints.
As word about unikernels in general is spreading, more people are trying to learn about this new approach to programming the cloud and embedded devices. Since information is spread across multiple sites, it can be tricky to know where to get an overview and how to get started quickly. So to help people get on board, there’s a new community website at unikernel.org!
The unikernel.org community site aims to collate information about the various projects and provide a focal point for early adopters to understand more about the technology and become involved in the projects themselves.
Over time, it will also become a gathering place for common infrastructure to form and be shared across projects. Early examples of this include the scripts for booting on Amazon EC2, which began with MirageOS contributors but were used and improved by Rump Kernel contributors. You can follow the email threads where the script was first proposed and ultimately provided EC2 support for Rumprun. Continuing to work together to make such advances will ease the process of bringing in new users and contributors across all the projects.
Please do visit the site and contribute stories about how you’re using and improving unikernels!
Edit: discuss this post on devel.unikernel.org
Thanks to Anil, Jeremy and Mindy for comments on an earlier draft.
- Irmin 0.12 with portable filesystem watching released
- MirageOS Summer 2016 Hackathon roundup
- MirageOS Summer 2016 Hackathon announcement, and talk roundup
- MirageOS Spring 2016 Hackathon!
- MirageOS security advisory 00: mirage-net-xen
- Introducing Functoria
- Run Mirage Unikernels on KVM/QEMU with Solo5
- MirageOS hackathon
- Introducing Charrua — a DHCP implementation
- Videos from around the world!


{% extends "base.html" %} {% block title %}{{ note.name }}{% endblock %} {% block page_title %}{{ note.name }}{% endblock %} {% block content %}
Are you sure you want to delete {{ note.name }}?


Name:
Surname:
Date of birth:
Gender: Male Female
Native city:
Current city:
Degree: Computer Science Electronic Engineering Industrial Engineering
grade: 1 2 3 4
Tell us something about you:


Extinction Rebellion Germany distances itself from founder after Holocaust comment
by AFP/The LocalThe British co-founder of Extinction Rebellion sparked outrage in Germany on Wednesday by referring to the Holocaust as "just another fuckery in human history" in an interview with Die Zeit newspaper.
Roger Hallam, 53, compared the murder of six million Jewish people at the hands of the Nazis to other historical massacres and claimed that memory of the Shoah was holding Germany back.
"The extremity of a trauma ... can create a paralysis in actually learning the lessons from it," he told Die Zeit in an English-language interview.
"The fact of the matter is, millions of people have been killed in vicious circumstances on a regular basis throughout history."
READ ALSO: How Extinction Rebellion is training up budding climate activists in Berlin
He cited the Belgian colonialists who "went to the Congo in the late 19th century and decimated it".
Extinction Rebellion groups in Germany were quick to condemn the remarks.
"We distance ourselves from Roger Hallam's trivialising and relativising comments about the Holocaust," tweeted Extinction Rebellion Germany.
"Roger has contravened the principles of XR and is no longer welcome at XR Germany," the group said, using an abbreviation for Extinction Rebellion.
The Berlin branch of the organisation tweeted: "The systematic extermination of millions cannot be normalised. Never. Zero tolerance for anti-Semitism."
Several branches of the organization, such as those in Frankfurt and Dresden, issued similar statements.
Holocaust denial is illegal in Germany though several politicians have caused controversy with remarks about the Nazi era in recent years.
In 2018, co-leader of the far-right AfD party Alexander Gauland referred to the Nazi era as a "speck of bird shit" in the history of Germany.
His party colleague Björn Höcke also sparked outrage a year earlier, when he referred to the Holocaust Memorial in Berlin as a "memorial of shame".


Who am I?
Sergi Almacellas Abellana
- (Python ♥) Programmer
- Open source enthusiast
- Tryton commiter since Nov 2013
Disclaimer
I have a very bad memory so some of the
dates and names may be wrong.
Sorry for the mistakes.
This is heavy inspired by my opinion.
I don't expect a lot of people to agree on everything.
Objectives
- Learn from past errors
- Avoid localization modules
First Spanish Tryton Contribution
- 06 March 2010
- Added Spanish Translation
- Carlos Perelló Marin (PEMAS)
First Spanish Chart of accounts
- Abbreviated version (Only PYME)
- February 2009
- Carlos Perelló Marin (PEMAS)
Those funny days
- 2012
- Nan-tic, ZikzakMedia, me and Others
- On meeting each month during 5-6 Months
- Migration from OpenERP
Those funny days
- CoA for PYME and normal business
- Too much work to integrate it on core
- Migrated a lot of modules from OpenERP
- With a little bit of hurry
First Shared Repository
- Bitbucket TrytonSpain Group
- Initially Spanish Localization Module
- Ended by sharing repositories no mater of Localization
A little bit of Marketing
- www.tryton-erp.es
- www.openerp2tryton.com
- Attract more users and developers
The clam stayed for a while
- Each company doing it business
- Some other contributors joined
- Shared version updates
- Shared new developments
- Everything went well but...
but....
The devil was released
The devil was released
- I leaved nantic in 2016
- The idea was to share code on TrytonSpain
- Added CI, Packages to PyPI
- Started refractor some modules and improve designs
- Lost repository access
My new (devil) plan
- Move TrytonSpain to tryton.org
- Rewrite and improve quality
- Follow tryton best practices
Present: account_es
- Included in 4.6
- Single module for General and PYME
- Simplified for 4.8
- Aeat 303 (only data)
- Aeat 111 (only data)
- Aeat 115 (only data)
Current Results
- More visibility for Spanish Localization
- Several improvements on base modules
- Removed useless data
Next steps
- account_statement_aeab43
- Export 303, 111 and 115 as file
- Proposal to compute 347/349
- Export 347/349 as file
Where is the discussion for Trytonspain modules


Creating value for millions of advertisers through incremental data-informed designs
Design an automated solution from scratch for healthcare customers to easily manage product recalls
Repurposing Facebook's Pages Manager App to serve the broader need of managing all small-business needs at one place
An app to help people make decisions with their friends and family in a smart and easy way
Envisioning Ads Manager's north star while keeping small to medium businesses needs first
Leading product efforts of building a platform to give and get help for members of all ages while building meaningful connections
Providing a unique personalized experience to the customers who own high-end cars while engaging with their favorite brand
Finalist at Global Health Challenge'18 for pitching an idea of building a platform to improve crumbling infrastructure and sanitation in India
Developing business model for Startgrid by design thinking
Engaging with brands in messaging apps by turning messages, stickers, AR masks into branded assets
Mac desktop app that uses AI based visual search to allow subscribed members to discover and use typefaces
A font plugin that allows Adobe Indesign users one-click search and apply similar fonts in their documents based on AI/ML
Designing a new platform to create interactive branded content that's engaging and useful for the consumer
An interactive prototype of a mobile app that helps save money by behavioural change
Designing end to end service/ product experience of a new airline focussing on business travelers needs


{{company.address}}
{{company.postcode}}, {{company.city}}
{{invoice_address[3]}}
{{invoice_address[2]}}, {{invoice_address[1]}}
{{invoice_address[0]}}
{{company.comment}}
{{plate.name}}
Want presentation:
{{want_presentation}}Want interpreter:
{{want_translator}}Want audio installation:
{{want_audio}}


#BitcoinTwitter and #CryptoTwitter! Square is hiring 3-4 crypto engineers and 1 designer to work full-time on open source contributions to the bitcoin/crypto ecosystem. Work from anywhere, report directly to me, and we can even pay you in bitcoin! Introducing @SqCrypto. Wh...


0xCATE token migration
Loading...
Old token balance
New token balance
Migrate tokens
View last transaction on Etherscan:


JG & Co. is one of the leading firm of Chartered Accountants in Central India.
The
Firm has a candid background and excellent collective experience of its Leaders and
qualified employees across various sectors and industries.
Our leader CA Gautam Jain is an Ex- Price Waterhouse Cooper’s. and has world class
experience in the field of Audit,Tax,Consultancy .
Contact Us!
Want to get in touch? We'd love to hear from you. Here's how you can reach us.


Change the font size of an element on different screen sizes
Example DIV.
When the browser's width is 600px wide or less, set the font-size of DIV to 30px. When it is 601px or wider, set
the font-size to 80px. Resize the browser window to see the effect.


|
|
|
Hello!
|
|
Thanks for your interest in erp.
|
|
Your first opinion is very important for us.
|
|
We would be very grateful if you provide us with your feedback.
|
|
|
|
|
| 3
|
Which features would you like to see in erp.
|
|
| We are open to support you 24/7 hours a day.
If you need help or any customization jobs - let us know.
|
-
Mobile phone: + 38 095 567 67 29 9 am–5 pm CST,
Monday–Friday.
-
Email<EMAIL_ADDRESS>24/7
-
Skype: live:ligintir
|
|
We are social
Copyright 2017 erp. All rights reserved.
|


hyojeong choi
work
about me
contact
Pastiche
Shadow Tag
Problem Solving
The Fence
Noise and Attention


{% extends "global/Page.html" %} {% load staticfiles otree %} {% load humanize %} {% block title %} High Piece Rate Earnings {% endblock %} {% block content %}
The following task is similar to the {% if Constants.treatment %} previous ones{% else %} previous one{% endif %}, but you will earn {{ Constants.tokensper_string_high }} Tokens {% if Constants.treatment == False %} (instead of {{ Constants.tokensper_string }} Tokens) {% endif %} per correctly solved sequence.
Remember: At any time, you have the option to change to the switch mode. In this mode, you will earn 1 Token per {{ Constants.secondsper_token|apnumber }} seconds without solving any tasks. For instance, for spending 13 seconds in the switch mode you earn 1.3 Tk. Given the higher piece rate in this round, it is advisable to change into the switch mode later.
Do you have any questions?


Connor arrived into this world at 0635pm on Tuesday 25th February 2003, weighing 10 pounds and 5 oz. This was the 56th day of the year in 2003. It was also the year of the Goat on the Chinese zodiac calendar. On this day in 1985, New Zealand rugby league player Benji Marshall was born. Amethyst is the modern birthstone for the month of February.
Tait arrived into this world at 0140am on Friday 30th January 2006, weighing 8 pounds and 13 oz. This was the 71st day of the year 1999. It was also the year of the Dog on the Chinese zodiac calendar. On this day in 1968, Mauritius achieves independence from the United Kingdom. Garnet is the modern birthstone for the month of January.
Emmeline arrived into this world at 1048am on Wedesday 22nd August 2012, weighing 7 pounds and 14 oz. This was the 234th day of the year 2012. It was also the year of the Dragon on the Chinese zodiac calendar. On this day in 1902, Cadillac Motor Company is founded. Peridot is the modern birthstone for the month of August.


Gautam is an avid front-end technologist with 10 years of web industry experience. Self-motivated professional with broad technical skill-set and very strong attention to detail. A web-standards practitioner with ability to learn and implement new web technologies.
He has a long track record of creating dynamic, rich and interactive web experiences and provides long term architectural solution for front-end problems on various devices and platforms. Has ability to direct complex projects from concepts to fully operational status. He is well versed with agile development methodology and managing scope while doing a client focused delivery.
Experience
- May 2016 - Present
-
Avizva Solutions Pvt. Ltd., Manager Front-End Engineering
Leading the Front-End Engineering practice and defining the strategy, vision, roadmap, team building and technology toolset. Implemented a 360 degree practice framework comprising of team engagement, evaluation and framework development. Instead of hiring talent, created an LnD model to home grow talent by training the largest batch (out of all departments) of campus hires.
Standardisation of tools and coding practices and creation of an enterprise level complete FrontEnd Framework covering HTML, CSS and JavaScript, helped us deliver complex projects with highest quality and record time.
- Mar 2015 - May 2016
-
Avizva Solutions Pvt. Ltd., Senior Interactive Developer L2
At Avizva I am responsible to create the baseline of UI practices which can be followed by other interactive developers. This includes creating an architecture for JavaScript and CSS frameworks.
Also started a Web 101 initiative to mentor the existing UI team and upscale their skills
On CSS architecture side have incorporated architecture designs like BEM, OOCSS and SMACSS for creating the CSS framework and educated the team on how to use them. Also created a JavaScript framework using OOJS to baseline the JS development.
- Nov 2013 - Mar 2015
-
Sapient Consulting Ltd., Senior Interactive Developer L1
I worked as a UI track lead on multiple projects on Adobe AEM platform and was responsible for coordination between different tracks (java development, information architecture, etc.) and keeping them in sync with UI requirements and scope of the delivery.
Got recognized by the project leadership for creating a custom Object Oriented JavaScript framework, which reduced the development and maintenance effort by half.
Worked on projects from the inception stage and was also part of project estimations. Have followed agile development practices throughout the projects.
- Sep 2012 - Nov 2013
-
Iomedia India Pvt Ltd., Interactive Developer
I was responsible for creating UI complex Cordova PhoneGap based applications which would run on multiple environments and can also be deployed as web application.
Strictly implemented MVC design patterns in JavaScript using backbone.js.
Got expert in implementing multiple frontend technologies & libraries like Backbone.js, Tweenlite, Raphael.js, FlowPlayer, Modernizer, etc.
- Aug 2010 - Sep 2012
-
Bruce Clay India Pvt Ltd., Web Developer
I was responsible for re-designing and creating websites and providing inputs to help increase the conversion rate in e-commerce websites.
Worked on challenging projects with strict deadlines - Got appraised for creating a facebook application in 24 hours for a leading mobile phone manufacturer.
Also implemented e-commerce using MartJack and Magento for different clients.
- May 2007 - Aug 2010
-
Freelance Web Developer
Worked on multiple web designing projects as a freelancer.
Created custom Wordpress and Joomla themes for different clients.
Managed maintenance of multiple websites and was responsible for converting PSDs to HTML.
Skill Level
- HTML5
- CSS3
- OOJS
- Photoshop
- Backbone.js
- Angular
- Grunt
- jQuery
- SVG
- Handlebars
- HIJAX
- GIT/SVN
- PhoneGap
- SASS
Education
Bachelor of Commerce - EIILM University, 2012
XII - Greenfields Public School, New Delhi (C.B.S.E.), 2005
X - Greenfields Public School, New Delhi (C.B.S.E.), 2003
Trainings & Achievements
-
Delivered a lecture on PHP at Bharti Vidyapeeth College
-
Attended 3 days SEO Training by Bruce Clay in 2011
-
Got showcased for creating a custom JS framework for AEM implementation which saved lot of man hours and helped in maintenance.
-
Created a FaceBook application for a telecom giant, in a strict deadline of 48hours.
-
Got recognized as One Man Army for single handedly leading the UI track, with zero P1 and P2 found in UAT.


Legendary Rigobert Song Savors Win With A Jig (Video)
by Bonface OsanoLegendary former defender Rigobert Song could not hide his joy after guiding Cameroon to a 1-0 win over Mali in the ongoing U23 AFCON in Egypt.
Bayern Munich prodigy Franck Junior Evina netted the lone goal in the 79th minute as Cameroon moved a point away from reaching the knockout round.
Song, who is the head coach of the team could not hide his delight after the match – savouring the victory with a good jig before his charges in the locker room.
The 43-year-old dodged death three years ago when he slipped into a two-day coma after suffering a brain aneurysm.
A quick medical intervention which say him airlifted to France following a presidential order saved his life.
Song won two AFCON titles with the Indomitable Lions and is regarded as one of the giants of the game in Africa.


There 32 teams who have qualified from 6 continents and the qualifying started over 4334 days ago. Here are the teams:
--- layout: default-with-toolbar title: Teams List | Countdown for the 2018 World Cup in Russia. description: List of all the teams taking part in the 2018 FIFA World Cup, and their rank, pot and additional information. Order them according to either category. keywords: teams,list,teams_list,worldcup2018countdown,wc2018countdown,countdown2018fwc,fifaworldcup,russia2018 image_url: https://worldcup2018countdown.github.io/assets/images/share-page-images/index.png image_alt: Teams List page screenshot page_css_class: toolbar_heading: Teams List additional_stylesheets: additional_scripts: ["/assets/js/teams-list.js"] ---
There 32 teams who have qualified from 6 continents and the qualifying started over 4334 days ago. Here are the teams:


There are four data types in C language. They are,
| Types | Data Types |
|---|---|
| Basic data types | int, char, float, double |
| Derived data type | pointer *, array [], struct, union |
| Void data type | void |
| Enumeration data type | enum |
| Data Type | Storage Class Specifier | Modifier/Specifier | Type Qualifier | Composite |
|---|---|---|---|---|
| int | extern (global) | short | volatile | array [] |
| char | static | signed, unsigned | const | struct |
| float | auto | long | union | |
| double | register | long long | ||
pointer* |
typedef * | |||
| void |
char, signed char, unsigned char
int, signed int, unsigned int
short int, signed short int, unsigned short int
long int, signed long int, unsigned long int
float, double, long double
Any compiler conforming to the Standard must also respect the following limits with respect to the range of values any particular type may accept. Note that these are lower limits: an implementation is free to exceed any or all of these. Note also that the minimum range for a char is dependent on whether or not a char is considered to be signed or unsigned.
| Type | Minimum Range |
|---|---|
| signed char | -127 to +127 |
| unsigned char | 0 to 255 |
| short int | -32767 to +32767 |
| int | -32767 to +32767 |
| unsigned short int | 0 to 65535 |
| unsigned int | 0 to 65535 |
| long int | -2147483647 to +2147483647 |
| unsigned long int | 0 to<PHONE_NUMBER> |
| Type | Minimum Precision | Remarks |
|---|---|---|
| float | 6 digits | observed at 8 digits |
| double | 10 digits | observed at 17 digits |
| long double | 10 digits | observed at 20 digits |
The Standard also specifies that these limits should be present as preprocessor macros in the header file <limits.h>
For a 16-bit operating system, here’s a parital tabulation borrowed from this :
| Modifier | Variable Type | sizeof | Range | Precision |
|---|---|---|---|---|
| unsigned | char | 1 | 0 to 256 | |
| char | 1 | -127 to 127 | ||
| short | int | 2 | –32,767 to 32,767 |
|
| int | 2 | |||
| unsigned | int | 2 | 0 to 65,535 |
|
| long | int | 4 | –2,147,483,647 to 2,147,483,647 |
|
| unsigned long | int | 4 | 0 to 4,294,967,295 |
|
| long long | int | 8 | -(2^63 –1) to (2^63 –1) |
|
| unsigned long long | int | 8 | 0 to 2^(8bits*8bytes -1) = 2^64 - 1 |
|
| float | 4 | 1E-37 to 1E+37 | upto 6-9 significant digits e.g. 3.141592 or 3.14159 ? |
|
| double | 8 | upto 15-17 significant digits | ||
| long | double | 10 | 1E-37 to 1E+37 | precision to 10 decimal digits, e.g. 3.1415926535 or 3.141592653 ? |
A bank opened a banking account for Rangarajan who immediately deposited Rs 40,000. When Rangarajan tried to withdraw the entire amount (Rs 40,000) from the bank’s ATM, the ATM terminal refused to issue any money. The reason is:
Next morning, the demonetization rules had been relaxed to withdraw up to Rs 50,000. Hearing about this, Rangarajan quickly located another ATM which had cash. Surprisingly, the ATM indicates that the customer had a negative bank balance of Rs -25,536
. The reason is:
Rangarajan is finally convinced that the bank is using a faulty software. What do you think is the main reason as to why the software is not working properly?
Meanwhile, Rangarajan found out that the bank was using a server powered by a 32-bit operating system to run its banking software (built using the C language). A software engineer himself, he got hold off of the source code of the banking software and started reviewing it. Immediately, he found out that the problem (aka software bug) was because of the data type that was used to store the customer bank balance. Which one was it?
unsigned int
int
signed short int
float
Write a C program to swap value held by two nibble variables
- https://bytes.com/topic/c/answers/650530-nibble-variable
Is the following code snippet valid? If yes, explain what the following code snippet is trying to do.
int *ip;
ip = (int *)6;
*ip = 0xFF;
Write a program to check whether a number is odd or even without using the modulo division or multiplication operators?
int ≥ 16 bits ≥ size of short
long ≥ 32 bits ≥ size of int
long long ≥ 64 bits ≥ size of long
No, the standard defines the minimums which for long
is 4 bytes
and int
is 2 bytes
. As per the C99 draft standard section <IP_ADDRESS>.1
Sizes of integer types limits.h paragraph 1 says:
[…]Their implementation-defined values shall be equal or greater in magnitude[…]
and for long
we have:
LONG_MIN -2147483647 // -(2^31 - 1)
LONG_MAX +2147483647 // 2^31 - 1
which is 4 bytes
. For completeness sake, we have the following for int
:
INT_MIN -32767 // -(2^15 - 1)
INT_MAX +32767 // 2^15 - 1
which is 2 bytes
.
sizeof
Program for various data typesTo run / modify the below program, fork it at http://bit.ly/sizeofC
#include <stdio.h>
#include <limits.h>
int main()
{
int a;
char b;
float c = 12.34567890123456789;
double d = 12.34567890123456789;
printf("Storage size for int data type: %d \n",sizeof(a));
printf("Storage size for char data type: %d \n",sizeof(b));
printf("Storage size for float data type: %d \n",sizeof(c));
printf("Storage size for double data type: %d \n",sizeof(d));
int* aPointer;
void* vPointer;
printf("Storage size for int pointer type: %d\n",sizeof(aPointer));
printf("Storage size for void pointer type: %d\n",sizeof(vPointer));
short int si;
long li; // same as long int
long long lli; // same as long long int
long double ld = 12.34567890123456789;
printf("Storage size for short int type: %d\n",sizeof(si));
printf("Storage size for long int type: %d\n",sizeof(li));
printf("Storage size for long long int type:%d\n",sizeof(lli));
printf("Storage size for long double type: %d\n",sizeof(ld));
float x = .12345678901234567891234*10;
double z = .12345678901234567891234*10;
long double lz = .12345678901234567891234*10;
printf("x=%f\n", x);
printf("z=%f\n", z);
printf("x= %20.18f\n", x); // precision to 7-8 significant digits
// x= 1.234567880630493164
printf("z= %20.18f\n", z); // precision to 14-17 significant digits
// z= 1.234567890123456690
printf("lz= %20.18Lf\n", lz); // precision to 18-20 significant digits
// lz= 1.234567890123456789
return 0;
}
Storage size for int data type: 4 // when is it 2?
Storage size for char data type: 1
Storage size for float data type: 4
Storage size for double data type: 8
Storage size for int pointer type: 4
Storage size for void pointer type: 4
Storage size for short int type: 2
Storage size for long int type: 4
Storage size for long long int type:8
Storage size for long double type: 12
x=1.234568
z=1.234568
x= 1.234567880630493164
z= 1.234567890123456690
lz= 1.234567890123456789
http://publications.gbdirect.co.uk/c_book/chapter8/const_and_volatile.html
http://www.ericgiguere.com/articles/ansi-c-summary.html
http://www.catonmat.net/blog/low-level-bit-hacks-you-absolutely-must-know/


{% extends "base.html" %} {% block content %}
I was born in Jeddah, Saudi Arabia
I grew up in Syria
My greatest dream is to be a doctor
My family live in Boston


C API thread definitions. More...
Classes | |
| struct | os_thread_attr_s |
| Thread attributes. More... | |
| struct | os_thread_context_s |
| Thread context. More... | |
| struct | os_thread_s |
| Thread object storage. More... | |
| struct | os_thread_stack_s |
| Thread stack. More... | |
| struct | os_thread_statistics_s |
| Thread statistics. More... | |
Typedefs | |
| typedef struct os_thread_attr_s | os_thread_attr_t |
| Thread attributes. | |
| typedef struct os_thread_context_s | os_thread_context_t |
| Thread context. | |
| typedef void * | os_thread_func_args_t |
| Type of thread function arguments. | |
| typedef void *(* | os_thread_func_t) (os_thread_func_args_t args) |
| Type of thread function. | |
| typedef uint8_t | os_thread_prio_t |
| Type of variables holding thread priorities. | |
| typedef os_port_thread_stack_allocation_element_t | os_thread_stack_allocation_element_t |
| Type of variables holding aligned stack elements. | |
| typedef os_port_thread_stack_element_t | os_thread_stack_element_t |
| Type of variables holding stack words. | |
| typedef struct os_thread_stack_s | os_thread_stack_t |
| Thread stack. | |
| typedef uint8_t | os_thread_state_t |
| Type of variables holding thread states. | |
| typedef struct os_thread_statistics_s | os_thread_statistics_t |
| Thread statistics. | |
| typedef struct os_thread_s | os_thread_t |
| Thread object storage. | |
Enumerations | |
| enum | { os_thread_priority_none = 0 , os_thread_priority_idle = (1 << (4) ) , os_thread_priority_lowest = (2 << (4) ) , os_thread_priority_low = (2 << (4) ) , os_thread_priority_below_normal = (4 << (4) ) , os_thread_priority_normal = (6 << (4) ) , os_thread_priority_above_normal = (8 << (4) ) , os_thread_priority_high = (10 << (4) ) , os_thread_priority_realtime = (12 << (4) ) , os_thread_priority_highest = (((13 + 1) << (4) ) - 1) , os_thread_priority_isr = (((14 + 1) << (4) ) - 1) , os_thread_priority_error = (((15 + 1) << (4) ) - 1) } |
| Thread priorities; intermediate values are also possible. More... | |
| enum | { os_thread_state_undefined = 0 , os_thread_state_ready = 1 , os_thread_state_running = 2 , os_thread_state_suspended = 3 , os_thread_state_terminated = 4 , os_thread_state_destroyed = 5 , os_thread_state_initialising = 6 } |
| An enumeration with all possible thread states. More... | |
Current Thread Functions | |
| os_thread_t * | os_this_thread (void) |
| Get the current running thread. | |
| void | os_this_thread_suspend (void) |
| Suspend the current running thread to wait for an event. | |
| void | os_this_thread_exit (void *exit_ptr) |
| Terminate the current running thread. | |
| os_result_t | os_this_thread_flags_wait (os_flags_mask_t mask, os_flags_mask_t *oflags, os_flags_mode_t mode) |
| Wait for thread event flags. | |
| os_result_t | os_this_thread_flags_try_wait (os_flags_mask_t mask, os_flags_mask_t *oflags, os_flags_mode_t mode) |
| Try to wait for thread event flags. | |
| os_result_t | os_this_thread_flags_timed_wait (os_flags_mask_t mask, os_clock_duration_t timeout, os_flags_mask_t *oflags, os_flags_mode_t mode) |
| Timed wait for thread event flags. | |
| os_result_t | os_this_thread_flags_clear (os_flags_mask_t mask, os_flags_mask_t *oflags) |
| Clear thread event flags. | |
| os_flags_mask_t | os_this_thread_flags_get (os_flags_mask_t mask, os_flags_mode_t mode) |
| Get/clear thread event flags. | |
Thread Attribute Functions | |
| void | os_thread_attr_init (os_thread_attr_t *attr) |
| Initialise the thread attributes. | |
Thread Creation Functions | |
| void | os_thread_construct (os_thread_t *thread, const char *name, os_thread_func_t func, const os_thread_func_args_t args, const os_thread_attr_t *attr) |
| Construct a statically allocated thread object instance. | |
| void | os_thread_destruct (os_thread_t *thread) |
| Destruct the statically allocated thread object instance. | |
| os_thread_t * | os_thread_new (const char *name, os_thread_func_t func, const os_thread_func_args_t args, const os_thread_attr_t *attr) |
| Allocate a thread object instance and construct it. | |
| void | os_thread_delete (os_thread_t *thread) |
| Destruct the thread object instance and deallocate it. | |
| bool | os_thread_is_constructed (os_thread_t *thread) |
| Check if the thread is constructed. | |
Thread Functions | |
| const char * | os_thread_get_name (os_thread_t *thread) |
| Get the thread name. | |
| os_thread_prio_t | os_thread_get_priority (os_thread_t *thread) |
| Get the thread current scheduling priority. | |
| os_result_t | os_thread_set_priority (os_thread_t *thread, os_thread_prio_t prio) |
| Set the thread dynamic scheduling priority. | |
| os_result_t | os_thread_kill (os_thread_t *thread) |
| Force thread termination. | |
| os_result_t | os_thread_join (os_thread_t *thread, void **exit_ptr) |
| Wait for thread termination. | |
| void | os_thread_resume (os_thread_t *thread) |
| Resume the thread. | |
| os_result_t | os_thread_flags_raise (os_thread_t *thread, os_flags_mask_t mask, os_flags_mask_t *oflags) |
| Raise thread event flags. | |
| os_thread_state_t | os_thread_get_state (os_thread_t *thread) |
| Get the thread scheduler state. | |
| os_thread_user_storage_t * | os_thread_get_user_storage (os_thread_t *thread) |
| Get the thread user storage. | |
| os_thread_stack_t * | os_thread_get_stack (os_thread_t *thread) |
| Get the thread context stack. | |
Thread Stack Functions | |
| size_t | os_thread_stack_get_default_size (void) |
| Get the default stack size. | |
| size_t | os_thread_stack_set_default_size (size_t size_bytes) |
| Set the default stack size. | |
| size_t | os_thread_stack_get_min_size (void) |
| Get the min stack size. | |
| size_t | os_thread_stack_set_min_size (size_t size_bytes) |
| Set the min stack size. | |
| os_thread_stack_element_t * | os_thread_stack_get_bottom (os_thread_stack_t *stack) |
| Get the stack lowest reserved address. | |
| os_thread_stack_element_t * | os_thread_stack_get_top (os_thread_stack_t *stack) |
| Get the top stack address. | |
| size_t | os_thread_stack_get_size (os_thread_stack_t *stack) |
| Get the stack size. | |
| size_t | os_thread_stack_get_available (os_thread_stack_t *stack) |
| Compute how much available stack remains. | |
| bool | os_thread_stack_check_bottom_magic (os_thread_stack_t *stack) |
| Check if bottom magic word is still there. | |
| bool | os_thread_stack_check_top_magic (os_thread_stack_t *stack) |
| Check if top magic word is still there. | |
Thread Statistics Functions | |
| os_statistics_counter_t | os_thread_stat_get_context_switches (os_thread_t *thread) |
| Get the number of thread context switches. | |
| os_statistics_duration_t | os_thread_stat_get_cpu_cycles (os_thread_t *thread) |
| Get the thread execution time. | |
Thread Children Iterator Functions | |
| os_iterator_t | os_children_threads_iter_begin (os_thread_t *thread) |
| Get the beginning of the list of children threads. | |
| os_iterator_t | os_children_threads_iter_end (os_thread_t *thread) |
| Get the end of the list of children threads. | |
| os_thread_t * | os_children_threads_iter_get (os_iterator_t iterator) |
| Get the thread from the current iterator position. | |
| os_iterator_t | os_children_threads_iter_next (os_iterator_t iterator) |
| Advance the iterator to the next position. | |
Compatibility Macros | |
| #define | os_thread_create os_thread_construct |
| #define | os_thread_destroy os_thread_destruct |
| #define | os_timer_create os_timer_construct |
| #define | os_timer_destroy os_timer_destruct |
| #define | os_mutex_create os_mutex_construct |
| #define | os_mutex_recursive_create os_mutex_recursive_construct |
| #define | os_mutex_destroy os_mutex_destruct |
| #define | os_condvar_create os_condvar_construct |
| #define | os_condvar_destroy os_condvar_destruct |
| #define | os_semaphore_create os_semaphore_construct |
| #define | os_semaphore_binary_create os_semaphore_binary_construct |
| #define | os_semaphore_counting_create os_semaphore_counting_construct |
| #define | os_semaphore_destroy os_semaphore_destruct |
| #define | os_mempool_create os_mempool_construct |
| #define | os_mempool_destroy os_mempool_destruct |
| #define | os_mqueue_create os_mqueue_construct |
| #define | os_mqueue_destroy os_mqueue_destruct |
| #define | os_evflags_create os_evflags_construct |
| #define | os_evflags_destroy os_evflags_destruct |
C API thread definitions.
| #define os_condvar_create os_condvar_construct |
Definition at line 1652 of file os-c-api.h.
| #define os_condvar_destroy os_condvar_destruct |
Definition at line 1653 of file os-c-api.h.
| #define os_evflags_create os_evflags_construct |
Definition at line 2642 of file os-c-api.h.
| #define os_evflags_destroy os_evflags_destruct |
Definition at line 2643 of file os-c-api.h.
| #define os_mempool_create os_mempool_construct |
Definition at line 2132 of file os-c-api.h.
| #define os_mempool_destroy os_mempool_destruct |
Definition at line 2133 of file os-c-api.h.
| #define os_mqueue_create os_mqueue_construct |
Definition at line 2428 of file os-c-api.h.
| #define os_mqueue_destroy os_mqueue_destruct |
Definition at line 2429 of file os-c-api.h.
| #define os_mutex_create os_mutex_construct |
Definition at line 1459 of file os-c-api.h.
| #define os_mutex_destroy os_mutex_destruct |
Definition at line 1461 of file os-c-api.h.
| #define os_mutex_recursive_create os_mutex_recursive_construct |
Definition at line 1460 of file os-c-api.h.
| #define os_semaphore_binary_create os_semaphore_binary_construct |
Definition at line 1926 of file os-c-api.h.
| #define os_semaphore_counting_create os_semaphore_counting_construct |
Definition at line 1927 of file os-c-api.h.
| #define os_semaphore_create os_semaphore_construct |
Definition at line 1925 of file os-c-api.h.
| #define os_semaphore_destroy os_semaphore_destruct |
Definition at line 1928 of file os-c-api.h.
| #define os_thread_create os_thread_construct |
Definition at line 625 of file os-c-api.h.
| #define os_thread_destroy os_thread_destruct |
Definition at line 626 of file os-c-api.h.
| #define os_timer_create os_timer_construct |
Definition at line 1158 of file os-c-api.h.
| #define os_timer_destroy os_timer_destruct |
Definition at line 1159 of file os-c-api.h.
| typedef struct os_thread_attr_s os_thread_attr_t |
Thread attributes.
Initialise this structure with os_thread_attr_init()
, and then set any of the individual members directly.
| typedef struct os_thread_context_s os_thread_context_t |
Thread context.
The members of this structure are hidden and should not be accessed directly, but through associated functions.
| typedef void* os_thread_func_args_t |
Type of thread function arguments.
Useful to cast other similar types to silence possible compiler warnings.
Definition at line 330 of file os-c-decls.h.
| typedef void *(* os_thread_func_t) (os_thread_func_args_t args) |
Type of thread function.
Useful to cast other similar types to silence possible compiler warnings.
Definition at line 341 of file os-c-decls.h.
| typedef uint8_t os_thread_prio_t |
Type of variables holding thread priorities.
A numeric type used to hold thread priorities, affecting the thread behaviour, like scheduling and thread wakeup due to events; usually an unsigned 8-bits type.
Higher values represent higher priorities.
Definition at line 363 of file os-c-decls.h.
| typedef os_port_thread_stack_allocation_element_t os_thread_stack_allocation_element_t |
Type of variables holding aligned stack elements.
A numeric type intended to be used for stack allocations.
Definition at line 386 of file os-c-decls.h.
| typedef os_port_thread_stack_element_t os_thread_stack_element_t |
Type of variables holding stack words.
A numeric type intended to store a stack word as stored by push instructions.
Definition at line 376 of file os-c-decls.h.
| typedef struct os_thread_stack_s os_thread_stack_t |
Thread stack.
The members of this structure are hidden and should not be accessed directly, but through associated functions.
| typedef uint8_t os_thread_state_t |
Type of variables holding thread states.
Definition at line 349 of file os-c-decls.h.
| typedef struct os_thread_statistics_s os_thread_statistics_t |
Thread statistics.
The members of this structure are hidden and should not be accessed directly, but through associated functions.
| typedef struct os_thread_s os_thread_t |
Thread object storage.
This C structure has the same size as the C++ os::rtos::thread
object and must be initialised with os_thread_create()
.
Later on a pointer to it can be used both in C and C++ to refer to the thread object instance.
The members of this structure are hidden and should not be used directly, but only through specific functions.
| anonymous enum |
Thread priorities; intermediate values are also possible.
Definition at line 268 of file os-c-decls.h.
| anonymous enum |
An enumeration with all possible thread states.
Definition at line 290 of file os-c-decls.h.
| os_iterator_t os_children_threads_iter_begin | ( | os_thread_t * | thread | ) |
Get the beginning of the list of children threads.
| [in] | thread | Pointer to thread object or NULL for the list of top threads. |
Return the position of the first element in the list of children threads of the given thread. If NULL, the position first element in the list of top threads is returned.
Definition at line 1005 of file os-c-wrapper.cpp.
| os_iterator_t os_children_threads_iter_end | ( | os_thread_t * | thread | ) |
Get the end of the list of children threads.
| [in] | thread | Pointer to thread object or NULL for the list of top threads. |
Return the position after the last element in the list of children threads of the given thread. If NULL, the position after the last element in the list of top threads is returned.
The iteration loop must be terminated when the current iterator is equal to this position, before entering the loop body.
Definition at line 1029 of file os-c-wrapper.cpp.
| os_thread_t * os_children_threads_iter_get | ( | os_iterator_t | iterator | ) |
Get the thread from the current iterator position.
| [in] | iterator | An active iterator. |
Calling it when the iterator is equal to the end position leads to unpredictable results.
Definition at line 1049 of file os-c-wrapper.cpp.
| os_iterator_t os_children_threads_iter_next | ( | os_iterator_t | iterator | ) |
Advance the iterator to the next position.
| [in] | iterator | An active iterator. |
Calling it when the iterator is equal to the end position leads to unpredictable results.
Definition at line 1065 of file os-c-wrapper.cpp.
| os_thread_t * os_this_thread | ( | void | ) |
Get the current running thread.
Definition at line 482 of file os-c-wrapper.cpp.
| void os_this_thread_exit | ( | void * | exit_ptr | ) |
Terminate the current running thread.
| [in] | exit_ptr | Pointer to object to return. (Optional, may be NULL). |
Definition at line 506 of file os-c-wrapper.cpp.
| os_result_t os_this_thread_flags_clear | ( | os_flags_mask_t | mask, |
| os_flags_mask_t * | oflags | ||
| ) |
Clear thread event flags.
| [in] | mask | The OR-ed flags to clear. |
| [out] | oflags | Optional pointer where to store the previous flags; may be NULL . |
| os_ok | The flags were cleared. |
| EPERM | Cannot be invoked from an Interrupt Service Routines. |
| EINVAL | The mask is zero. |
Definition at line 559 of file os-c-wrapper.cpp.
| os_flags_mask_t os_this_thread_flags_get | ( | os_flags_mask_t | mask, |
| os_flags_mode_t | mode | ||
| ) |
Get/clear thread event flags.
| [in] | mask | The OR-ed flags to get/clear; may be zero. |
| [in] | mode | Mode bits to select if the flags should be cleared (the other bits are ignored). |
| flags | The selected bits from the current thread event flags mask. |
| sig::all | Cannot be invoked from an Interrupt Service Routines. |
Definition at line 571 of file os-c-wrapper.cpp.
| os_result_t os_this_thread_flags_timed_wait | ( | os_flags_mask_t | mask, |
| os_clock_duration_t | timeout, | ||
| os_flags_mask_t * | oflags, | ||
| os_flags_mode_t | mode | ||
| ) |
Timed wait for thread event flags.
| [in] | mask | The expected flags (OR-ed bit-mask); may be zero. |
| [out] | oflags | Pointer where to store the current flags; may be NULL . |
| [in] | mode | Mode bits to select if either all or any flags are expected, and if the flags should be cleared. |
| [in] | timeout | Timeout to wait, in clock units (ticks or seconds). |
| os_ok | All expected flags are raised. |
| EPERM | Cannot be invoked from an Interrupt Service Routines. |
| ETIMEDOUT | The expected condition did not occur during the entire timeout duration. |
| EINVAL | The mask is outside of the permitted range. |
| EINTR | The operation was interrupted. |
| ENOTRECOVERABLE | Wait failed. |
Definition at line 544 of file os-c-wrapper.cpp.
| os_result_t os_this_thread_flags_try_wait | ( | os_flags_mask_t | mask, |
| os_flags_mask_t * | oflags, | ||
| os_flags_mode_t | mode | ||
| ) |
Try to wait for thread event flags.
| [in] | mask | The expected flags (OR-ed bit-mask); may be zero. |
| [out] | oflags | Pointer where to store the current flags; may be NULL . |
| [in] | mode | Mode bits to select if either all or any flags are expected, and if the flags should be cleared. |
| os_ok | All expected flags are raised. |
| EINVAL | The mask is outside of the permitted range. |
| EWOULDBLOCK | The expected condition did not occur. |
| ENOTRECOVERABLE | Wait failed. |
Definition at line 531 of file os-c-wrapper.cpp.
| os_result_t os_this_thread_flags_wait | ( | os_flags_mask_t | mask, |
| os_flags_mask_t * | oflags, | ||
| os_flags_mode_t | mode | ||
| ) |
Wait for thread event flags.
| [in] | mask | The expected flags (OR-ed bit-mask); may be zero. |
| [out] | oflags | Pointer where to store the current flags; may be NULL . |
| [in] | mode | Mode bits to select if either all or any flags are expected, and if the flags should be cleared. |
| os_ok | All expected flags are raised. |
| EPERM | Cannot be invoked from an Interrupt Service Routines. |
| EINVAL | The mask is outside of the permitted range. |
| EINTR | The operation was interrupted. |
| ENOTRECOVERABLE | Wait failed. |
Definition at line 518 of file os-c-wrapper.cpp.
| void os_this_thread_suspend | ( | void | ) |
Suspend the current running thread to wait for an event.
Definition at line 494 of file os-c-wrapper.cpp.
| void os_thread_attr_init | ( | os_thread_attr_t * | attr | ) |
Initialise the thread attributes.
| [in] | attr | Pointer to thread attributes object instance. |
Definition at line 585 of file os-c-wrapper.cpp.
| void os_thread_construct | ( | os_thread_t * | thread, |
| const char * | name, | ||
| os_thread_func_t | func, | ||
| const os_thread_func_args_t | args, | ||
| const os_thread_attr_t * | attr | ||
| ) |
Construct a statically allocated thread object instance.
| [in] | thread | Pointer to thread object instance storage. |
| [in] | name | Pointer to name (may be NULL). |
| [in] | func | Pointer to thread function. |
| [in] | args | Pointer to thread function arguments (may be NULL). |
| [in] | attr | Pointer to attributes (may be NULL) |
os_thread_destruct()
.Definition at line 600 of file os-c-wrapper.cpp.
| void os_thread_delete | ( | os_thread_t * | thread | ) |
Destruct the thread object instance and deallocate it.
| [in] | thread | Pointer to dynamically allocated thread object instance. |
Destruct the thread and deallocate the dynamically allocated space using the RTOS system allocator.
delete ptr_th
. os_thread_new()
.Definition at line 669 of file os-c-wrapper.cpp.
| void os_thread_destruct | ( | os_thread_t * | thread | ) |
Destruct the statically allocated thread object instance.
| [in] | thread | Pointer to thread object instance. |
os_thread_construct()
.Definition at line 623 of file os-c-wrapper.cpp.
| os_result_t os_thread_flags_raise | ( | os_thread_t * | thread, |
| os_flags_mask_t | mask, | ||
| os_flags_mask_t * | oflags | ||
| ) |
Raise thread event flags.
| [in] | thread | Pointer to thread object instance. |
| [in] | mask | The OR-ed flags to raise. |
| [out] | oflags | Optional pointer where to store the previous flags; may be NULL . |
| os_ok | The flags were raised. |
| EINVAL | The mask is zero. |
| EPERM | Cannot be invoked from an Interrupt Service Routines. |
Definition at line 775 of file os-c-wrapper.cpp.
| const char * os_thread_get_name | ( | os_thread_t * | thread | ) |
Get the thread name.
| [in] | thread | Pointer to thread object instance. |
Definition at line 696 of file os-c-wrapper.cpp.
| os_thread_prio_t os_thread_get_priority | ( | os_thread_t * | thread | ) |
Get the thread current scheduling priority.
| [in] | thread | Pointer to thread object instance. |
Definition at line 709 of file os-c-wrapper.cpp.
| os_thread_stack_t * os_thread_get_stack | ( | os_thread_t * | thread | ) |
Get the thread context stack.
| [in] | thread | Pointer to thread object instance. |
Definition at line 824 of file os-c-wrapper.cpp.
| os_thread_state_t os_thread_get_state | ( | os_thread_t * | thread | ) |
Get the thread scheduler state.
| [in] | thread | Pointer to thread object instance. |
Definition at line 790 of file os-c-wrapper.cpp.
| os_thread_user_storage_t * os_thread_get_user_storage | ( | os_thread_t * | thread | ) |
Get the thread user storage.
| [in] | thread | Pointer to thread object instance. |
OS_INCLUDE_RTOS_CUSTOM_THREAD_USER_STORAGE
is defined.Definition at line 809 of file os-c-wrapper.cpp.
| bool os_thread_is_constructed | ( | os_thread_t * | thread | ) |
Check if the thread is constructed.
| [in] | thread | Pointer to thread object instance. |
Definition at line 682 of file os-c-wrapper.cpp.
| os_result_t os_thread_join | ( | os_thread_t * | thread, |
| void ** | exit_ptr | ||
| ) |
Wait for thread termination.
| [in] | thread | Pointer to terminating thread object instance. |
| [in] | exit_ptr | Pointer to thread exit value. (may be NULL). |
| os_ok | The thread was terminated. |
| EPERM | Cannot be invoked from an Interrupt Service Routines. |
Definition at line 749 of file os-c-wrapper.cpp.
| os_result_t os_thread_kill | ( | os_thread_t * | thread | ) |
Force thread termination.
| [in] | thread | Pointer to thread object instance. |
| os_ok | The thread was terminated. |
| EPERM | Cannot be invoked from an Interrupt Service Routines. |
Definition at line 736 of file os-c-wrapper.cpp.
| os_thread_t * os_thread_new | ( | const char * | name, |
| os_thread_func_t | func, | ||
| const os_thread_func_args_t | args, | ||
| const os_thread_attr_t * | attr | ||
| ) |
Allocate a thread object instance and construct it.
| [in] | name | Pointer to name (may be NULL). |
| [in] | func | Pointer to thread function. |
| [in] | args | Pointer to thread function arguments (may be NULL). |
| [in] | attr | Pointer to attributes (may be NULL) |
Dynamically allocate the thread object instance using the RTOS system allocator and construct it.
new thread(...)
. os_thread_delete()
.Definition at line 643 of file os-c-wrapper.cpp.
| void os_thread_resume | ( | os_thread_t * | thread | ) |
Resume the thread.
| [in] | thread | Pointer to thread object instance. |
Definition at line 762 of file os-c-wrapper.cpp.
| os_result_t os_thread_set_priority | ( | os_thread_t * | thread, |
| os_thread_prio_t | prio | ||
| ) |
Set the thread dynamic scheduling priority.
| [in] | thread | Pointer to thread object instance. |
| [in] | prio | New priority. |
| os_ok | The priority was set. |
| EPERM | Cannot be invoked from an Interrupt Service Routines. |
| EINVAL | The value of prio is invalid for the scheduling policy of the specified thread. |
Definition at line 722 of file os-c-wrapper.cpp.
| bool os_thread_stack_check_bottom_magic | ( | os_thread_stack_t * | stack | ) |
Check if bottom magic word is still there.
| [in] | stack | Pointer to stack object instance. |
| true | The magic word is still there. |
| false | The magic word was overwritten. |
Definition at line 939 of file os-c-wrapper.cpp.
| bool os_thread_stack_check_top_magic | ( | os_thread_stack_t * | stack | ) |
Check if top magic word is still there.
| [in] | stack | Pointer to stack object instance. |
| true | The magic word is still there. |
| false | The magic word was overwritten. |
Definition at line 952 of file os-c-wrapper.cpp.
| size_t os_thread_stack_get_available | ( | os_thread_stack_t * | stack | ) |
Compute how much available stack remains.
| [in] | stack | Pointer to stack object instance. |
Definition at line 926 of file os-c-wrapper.cpp.
| os_thread_stack_element_t * os_thread_stack_get_bottom | ( | os_thread_stack_t * | stack | ) |
Get the stack lowest reserved address.
| [in] | stack | Pointer to stack object instance. |
Definition at line 887 of file os-c-wrapper.cpp.
| size_t os_thread_stack_get_default_size | ( | void | ) |
Get the default stack size.
Definition at line 839 of file os-c-wrapper.cpp.
| size_t os_thread_stack_get_min_size | ( | void | ) |
Get the min stack size.
Definition at line 863 of file os-c-wrapper.cpp.
| size_t os_thread_stack_get_size | ( | os_thread_stack_t * | stack | ) |
Get the stack size.
| [in] | stack | Pointer to stack object instance. |
Definition at line 913 of file os-c-wrapper.cpp.
| os_thread_stack_element_t * os_thread_stack_get_top | ( | os_thread_stack_t * | stack | ) |
Get the top stack address.
| [in] | stack | Pointer to stack object instance. |
Definition at line 900 of file os-c-wrapper.cpp.
| size_t os_thread_stack_set_default_size | ( | size_t | size_bytes | ) |
Set the default stack size.
| [in] | size_bytes | Default stack size in bytes. |
Definition at line 851 of file os-c-wrapper.cpp.
| size_t os_thread_stack_set_min_size | ( | size_t | size_bytes | ) |
Set the min stack size.
| [in] | size_bytes | Minimum stack size in bytes. |
Definition at line 875 of file os-c-wrapper.cpp.
| os_statistics_counter_t os_thread_stat_get_context_switches | ( | os_thread_t * | thread | ) |
Get the number of thread context switches.
Definition at line 969 of file os-c-wrapper.cpp.
| os_statistics_duration_t os_thread_stat_get_cpu_cycles | ( | os_thread_t * | thread | ) |
Get the thread execution time.
Definition at line 986 of file os-c-wrapper.cpp.


#include <UStateMachine.h>
Public Types | |
| typedef bool(_T::* | Callback )(unsigned int prevState, unsigned int event, unsigned int newState) |
| typedef void(_T::* | UpdateCallback )(unsigned int curState) |
Public Member Functions | |
| UStateMachine (unsigned int initState) | |
| ctor & dtor | |
| ~UStateMachine () | |
| unsigned int | GetCurState () const |
| void | SendEvent (_T *thisPtr, unsigned int event) |
| sends an event. | |
| void | Update (_T *thisPtr) |
| calls the current update callback if there is one. | |
| void | SetTransition (unsigned curState, unsigned int event, unsigned int toState, Callback callback) |
| void | SetStateUpdateCallback (unsigned int state, UpdateCallback callback) |
| adds a callback for update. | |
| void | SetStateEnterCallback (unsigned int state, Callback callback) |
| this is called when a state is entered. | |
| void | SetStateLeaveCallback (unsigned int state, Callback callback) |
File: UStateMachine.h Author: Kevin Bray Created: 04-12-06 Copyright © 2004 Bootstrap Studios. All rights reserved. class UStateMachine
Definition at line 16 of file UStateMachine.h.
| typedef bool( _T::* UStateMachine< _T, kMaxStates, kMaxEvents >::Callback)(unsigned int prevState, unsigned int event, unsigned int newState) |
| typedef void( _T::* UStateMachine< _T, kMaxStates, kMaxEvents >::UpdateCallback)(unsigned int curState) |
| UStateMachine< _T, kMaxStates, kMaxEvents >::UStateMachine | ( | unsigned int | initState | ) | [inline] |
| UStateMachine< _T, kMaxStates, kMaxEvents >::~UStateMachine | ( | ) | [inline] |
Definition at line 72 of file UStateMachine.h.
| unsigned int UStateMachine< _T, kMaxStates, kMaxEvents >::GetCurState | ( | ) | const [inline] |
Definition at line 25 of file UStateMachine.h.
| void UStateMachine< _T, kMaxStates, kMaxEvents >::SendEvent | ( | _T * | thisPtr, | |
| unsigned int | event | |||
| ) | [inline] |
sends an event.
public methods.
check to see if we have a callback available.
call the function. do not change states if it returns false.
transition.
Definition at line 85 of file UStateMachine.h.
| void UStateMachine< _T, kMaxStates, kMaxEvents >::SetStateEnterCallback | ( | unsigned int | state, | |
| Callback | callback | |||
| ) | [inline] |
| void UStateMachine< _T, kMaxStates, kMaxEvents >::SetStateLeaveCallback | ( | unsigned int | state, | |
| Callback | callback | |||
| ) | [inline] |
Definition at line 150 of file UStateMachine.h.
| void UStateMachine< _T, kMaxStates, kMaxEvents >::SetStateUpdateCallback | ( | unsigned int | state, | |
| UpdateCallback | callback | |||
| ) | [inline] |
| void UStateMachine< _T, kMaxStates, kMaxEvents >::SetTransition | ( | unsigned | curState, | |
| unsigned int | event, | |||
| unsigned int | toState, | |||
| Callback | callback | |||
| ) | [inline] |
the callback gets the state it's currently in, and the event that was fired. If the callback returns true, then the state can be entered.
add a transition.
Definition at line 124 of file UStateMachine.h.
| void UStateMachine< _T, kMaxStates, kMaxEvents >::Update | ( | _T * | thisPtr | ) | [inline] |


---
permalink: /cities-i-visited
layout: post
title: Cities I visited
published: true
categories:
- travel
---
A friend told me about this app on Facebook to keep track of the cities I visited. To me, it's not only fun to do it, but also useful. Specially because now I realize how much I still need to travel to cover a bit more of the planet. Nice trips to you!


Marisa Lupo and Luisa Maringola have been making homes more beautiful for over 20 years in Richmond Hill, Aurora, King City, and Thornhill, Ontario. This successful duo has established a reputation well-known for their approachable personalities and ability to understand each client’s needs. Together with you, they design your home to reflect your needs and personal sense of style. They listen, provide experienced design advice and use their talents to create custom spaces that are tailored for you.
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Corporis, omnis doloremque non cum id reprehenderit, quisquam totam aspernatur tempora minima unde aliquid ea culpa sunt. Reiciendis quia dolorum ducimus unde.


{% load thumbnail %} {% load staticfiles %}
{{album}}
Edit Album {% if album.cover %} {% thumbnail album.cover.photo_file "200x200" crop="center" as al_cover%} {% empty %}No albums Found
{% endthumbnail %} {% else %} {% endif %}{{photo}}
Edit Photo {% thumbnail photo.photo_file "200x200" crop="center" as img%} {% empty %}No photos Found
{% endthumbnail %}


New Maharashtra government will be committed to state's development: Amit Shah
Amit Shah congratulated Devendra Fadnavis and Ajit Pawar on Twitter.
by PTIBJP president Amit Shah on Saturday expressed confidence that the new Maharashtra government under Devendra Fadnavis, who took oath as chief minister in the early morning on Saturday, will scale new heights of development. Shah tweeted his congratulation to Fadnavis and NCP leader Ajit Pawar, who was sworn in as the deputy chief minister, after the oath-taking ceremony.
"Hearty congratulations to Shri @Dev_Fadnavis ji on taking oath as Chief Minister of Maharashtra and Shri @AjitPawarSpeaks as Deputy Chief Minister of the state. "I am confident this government will be continuously committed to the development and welfare of Maharashtra and will set new standards of progress in the state," Shah tweeted.
BJP working president J P Nadda also congratulated Fadnavis and Ajit Pawar. "I Congratulate @Dev_Fadnavis Ji and @AjitPawarSpeaks Ji on taking oath as the CM and Deputy CM of Maharashtra respectively. I am sure that under the guidance of Hon PM @narendramodi Ji, BJP-NCP Gov will take Maharashtra to newer heights."
Sign up for all the latest news, top galleries and trending videos from Mid-day.com
Subscribe
Loading...


+
BUILDPACK
Java/Spring
Buildpacks
APP NAME
APP URIS
Routes & Domains
INSTANCE INDEX
MEMORY LIMIT
DISK LIMIT
Scaling
SPACE NAME
Orgs & Spaces
SERVICE
SERVICE NAME
SERVICE PLAN
There aren't any services bound to this app.
Manage Services
Configuring Services
This is a sample Spring Boot Cloud Foundry application.


Ruleset Strict Exception Rules
Language -
Description
These rules provide some strict guidelines about throwing and catching exceptions.
Rule AvoidCatchingThrowable::
TOC
Description
This is dangerous because it casts too wide a net; it can catch things like OutOfMemoryError.
- Message
- A catch statement should never catch throwable since it includes errors.
- Class
- net.sourceforge.pmd.rules.strictexception.AvoidCatchingThrowable
- Reference
- -
- ExternalInfoUrl
- http://pmd.sourceforge.net/rules/strictexception.html#LocalVariableCouldBeFinal
- TypeResolution
- -
- Priority
- 3
Example
Example code snippet of this rule.
public class Foo {
public void bar() {
try {
// do something
} catch (Throwable th) { //Should not catch throwable
th.printStackTrace();
}
}
}
TOC
Rule SignatureDeclareThrowsException::
TOC
Description
It is unclear which exceptions that can be thrown from the methods.
It might be difficult to document and understand the vague interfaces.
Use either a class derived from RuntimeException or a checked exception.
- Message
- A method/constructor shouldn't explicitly throw java.lang.Exception
- Class
- net.sourceforge.pmd.rules.strictexception.ExceptionSignatureDeclaration
- Reference
- -
- ExternalInfoUrl
- http://pmd.sourceforge.net/rules/strictexception.html#SignatureDeclareThrowsException
- TypeResolution
- -
- Priority
- 3
Example
Example code snippet of this rule.
public void methodThrowingException() throws Exception {
}
TOC
Rule ExceptionAsFlowControl::
TOC
Description
Using Exceptions as flow control leads to GOTOish code and obscures true exceptions when debugging.
- Message
- Avoid using exceptions as flow control.
- Class
- net.sourceforge.pmd.rules.design.ExceptionAsFlowControl
- Reference
- -
- ExternalInfoUrl
- http://pmd.sourceforge.net/rules/strictexception.html#ExceptionAsFlowControl
- TypeResolution
- -
- Priority
- 3
Example
Example code snippet of this rule.
public class Foo {
void bar() {
try {
try {
} catch (Exception e) {
throw new WrapperException(e);
// this is essentially a GOTO to the WrapperException catch block
}
} catch (WrapperException e) {
// do some more stuff
}
}
}
TOC
Rule AvoidCatchingNPE::
TOC
Description
Code should never throw NPE under normal circumstances. A catch block may hide the original error, causing other more subtle errors in its wake.
- Message
- Avoid catching NullPointerException; consider removing the cause of the NPE.
- Class
- net.sourceforge.pmd.rules.XPathRule
- Reference
- -
- ExternalInfoUrl
- http://pmd.sourceforge.net/rules/strictexception.html#AvoidCatchingNPE
- TypeResolution
- -
- Priority
- 3
Example
Example code snippet of this rule.
public class Foo {
void bar() {
try {
// do something
} catch (NullPointerException npe) {
}
}
}
Properties
Following properties are defined:
- Name
- xpath
- Description
- -
- Value
-
//CatchStatement/FormalParameter/Type
/ReferenceType/ClassOrInterfaceType[@Image='NullPointerException']
TOC
Rule AvoidThrowingRawExceptionTypes::
TOC
Description
Avoid throwing certain exception types. Rather than throw a raw RuntimeException, Throwable,
Exception, or Error, use a subclassed exception or error instead.
- Message
- Avoid throwing raw exception types.
- Class
- net.sourceforge.pmd.rules.XPathRule
- Reference
- -
- ExternalInfoUrl
- http://pmd.sourceforge.net/rules/strictexception.html#AvoidThrowingRawExceptionTypes
- TypeResolution
- -
- Priority
- 1
Example
Example code snippet of this rule.
public class Foo {
public void bar() throws Exception {
throw new Exception();
}
}
Properties
Following properties are defined:
- Name
- xpath
- Description
- -
- Value
-
//AllocationExpression
/ClassOrInterfaceType[
@Image='Throwable' or
@Image='Exception' or
@Image='Error' or
@Image='RuntimeException']
TOC
Rule AvoidThrowingNullPointerException::
TOC
Description
Avoid throwing a NullPointerException - it's confusing because most people will assume that the
virtual machine threw it. Consider using an IllegalArgumentException instead; this will be
clearly seen as a programmer-initiated exception.
- Message
- Avoid throwing null pointer exceptions.
- Class
- net.sourceforge.pmd.rules.XPathRule
- Reference
- -
- ExternalInfoUrl
- http://pmd.sourceforge.net/rules/strictexception.html#AvoidThrowingNullPointerException
- TypeResolution
- -
- Priority
- 1
Example
Example code snippet of this rule.
public class Foo {
void bar() {
throw new NullPointerException();
}
}
Properties
Following properties are defined:
- Name
- xpath
- Description
- -
- Value
-
//AllocationExpression/ClassOrInterfaceType[@Image='NullPointerException']
TOC
Rule AvoidRethrowingException::
TOC
Description
Catch blocks that merely rethrow a caught exception only add to code size and runtime complexity.
- Message
- A catch statement that catches an exception only to rethrow it should be avoided.
- Class
- net.sourceforge.pmd.rules.XPathRule
- Reference
- -
- ExternalInfoUrl
- -
- TypeResolution
- -
- Priority
- 3
Example
Example code snippet of this rule.
public class Foo {
void bar() {
try {
// do something
} catch (SomeException se) {
throw se;
}
}
}
Properties
Following properties are defined:
- Name
- xpath
- Description
- -
- Value
-
//CatchStatement[FormalParameter
/VariableDeclaratorId/@Image = Block/BlockStatement/Statement
/ThrowStatement/Expression/PrimaryExpression[count(PrimarySuffix)=0]/PrimaryPrefix/Name/@Image
and count(Block/BlockStatement/Statement) =1]
TOC